71730a73ef
* Set category always if different * rename org * Fix video format sorting * fix format filtering * Update AVAudioSession+setCategoryIfNotSet.swift * upgrade all dependencies * Also run dependabot for JS codebase * Update MediaPage.tsx * Use typescript 4.2.4 * Also run TS in check-all * Downgrade typescript to 4.2.3 * f * recreate lockfiles * docs: Revert package.json changes * revert all package.json changes * Update Podfile.lock * bump all dependencies, pin typescript to 4.2.4 * Downgrade react-native-navigation for now * upgrade to later snapshot * Update yarn.lock * remove yeet
33 lines
1.0 KiB
Swift
33 lines
1.0 KiB
Swift
//
|
|
// AVCaptureDevice+neutralZoom.swift
|
|
// Cuvent
|
|
//
|
|
// Created by Marc Rousavy on 10.01.21.
|
|
// Copyright © 2021 mrousavy. All rights reserved.
|
|
//
|
|
|
|
import AVFoundation
|
|
|
|
extension AVCaptureDevice {
|
|
var neutralZoomFactor: CGFloat {
|
|
if #available(iOS 13.0, *) {
|
|
if let indexOfWideAngle = self.constituentDevices.firstIndex(where: { $0.deviceType == .builtInWideAngleCamera }) {
|
|
if let zoomFactor = self.virtualDeviceSwitchOverVideoZoomFactors[safe: indexOfWideAngle - 1] {
|
|
return CGFloat(zoomFactor.doubleValue)
|
|
}
|
|
}
|
|
}
|
|
return 1.0
|
|
}
|
|
|
|
/**
|
|
Get the value at which the Zoom value is neutral, in percent (0.0-1.0)
|
|
|
|
* On single-camera physical devices, this value will always be 0.0
|
|
* On devices with multiple cameras, e.g. triple-camera, this value will be a value between 0.0 and 1.0, where the field-of-view and zoom looks "neutral"
|
|
*/
|
|
var neutralZoomPercent: CGFloat {
|
|
return (neutralZoomFactor - minAvailableVideoZoomFactor) / (maxAvailableVideoZoomFactor - minAvailableVideoZoomFactor)
|
|
}
|
|
}
|