react-native-vision-camera/package/ios/Extensions/AVCaptureDevice.Format+toDictionary.swift
Marc Rousavy d78d3ea214
fix: Fix minFps being wrong (#2248)
* fix: Fix `minFps` being wrong

* Update AVCaptureDevice.Format+toDictionary.swift
2023-12-04 11:41:56 +01:00

58 lines
1.6 KiB
Swift

//
// AVCaptureDevice.Format+toDictionary.swift
// mrousavy
//
// Created by Marc Rousavy on 15.01.21.
// Copyright © 2021 mrousavy. All rights reserved.
//
import AVFoundation
extension AVCaptureDevice.Format {
var videoStabilizationModes: [AVCaptureVideoStabilizationMode] {
let allModes = AVCaptureDevice.Format.getAllVideoStabilizationModes()
return allModes.filter { self.isVideoStabilizationModeSupported($0) }
}
var minFps: Float64 {
let minRange = videoSupportedFrameRateRanges.min { l, r in
return l.minFrameRate < r.minFrameRate
}
return minRange?.minFrameRate ?? 0
}
var maxFps: Float64 {
let maxRange = videoSupportedFrameRateRanges.max { l, r in
return l.maxFrameRate < r.maxFrameRate
}
return maxRange?.maxFrameRate ?? 0
}
var supportsVideoHdr: Bool {
let pixelFormat = CMFormatDescriptionGetMediaSubType(formatDescription)
let hdrFormats = [
kCVPixelFormatType_420YpCbCr10BiPlanarFullRange,
kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange,
kCVPixelFormatType_Lossy_420YpCbCr10PackedBiPlanarVideoRange,
]
return hdrFormats.contains(pixelFormat)
}
var supportsPhotoHdr: Bool {
// TODO: Supports Photo HDR on iOS?
return false
}
var supportsDepthCapture: Bool {
return !supportedDepthDataFormats.isEmpty
}
private static func getAllVideoStabilizationModes() -> [AVCaptureVideoStabilizationMode] {
var modes: [AVCaptureVideoStabilizationMode] = [.auto, .cinematic, .off, .standard]
if #available(iOS 13, *) {
modes.append(.cinematicExtended)
}
return modes
}
}