react-native-vision-camera/ios/Extensions/AVCaptureDevice.Format+toDictionary.swift

55 lines
1.7 KiB
Swift
Raw Normal View History

2021-02-19 08:28:05 -07:00
//
// AVCaptureDevice.Format+toDictionary.swift
// mrousavy
2021-02-19 08:28:05 -07:00
//
// Created by Marc Rousavy on 15.01.21.
// Copyright © 2021 mrousavy. All rights reserved.
2021-02-19 08:28:05 -07:00
//
import AVFoundation
private func getAllVideoStabilizationModes() -> [AVCaptureVideoStabilizationMode] {
var modes: [AVCaptureVideoStabilizationMode] = [.auto, .cinematic, .off, .standard]
if #available(iOS 13, *) {
modes.append(.cinematicExtended)
}
return modes
}
extension AVCaptureDevice.Format {
var videoStabilizationModes: [AVCaptureVideoStabilizationMode] {
return getAllVideoStabilizationModes().filter { self.isVideoStabilizationModeSupported($0) }
}
func toDictionary() -> [String: Any] {
var dict: [String: Any] = [
2021-03-09 02:53:29 -07:00
"videoStabilizationModes": videoStabilizationModes.map(\.descriptor),
2021-02-19 08:28:05 -07:00
"autoFocusSystem": autoFocusSystem.descriptor,
"photoHeight": highResolutionStillImageDimensions.height,
"photoWidth": highResolutionStillImageDimensions.width,
"videoHeight": videoDimensions.height,
"videoWidth": videoDimensions.width,
2021-02-19 08:28:05 -07:00
"maxISO": maxISO,
"minISO": minISO,
"fieldOfView": videoFieldOfView,
"maxZoom": videoMaxZoomFactor,
2021-03-09 02:53:29 -07:00
"colorSpaces": supportedColorSpaces.map(\.descriptor),
2021-02-19 08:28:05 -07:00
"supportsVideoHDR": isVideoHDRSupported,
"supportsPhotoHDR": false,
"frameRateRanges": videoSupportedFrameRateRanges.map {
[
"minFrameRate": $0.minFrameRate,
"maxFrameRate": $0.maxFrameRate,
]
},
2021-12-10 01:44:54 -07:00
"pixelFormat": CMFormatDescriptionGetMediaSubType(formatDescription).toString(),
2021-02-19 08:28:05 -07:00
]
2021-07-08 03:01:02 -06:00
2021-02-19 08:28:05 -07:00
if #available(iOS 13.0, *) {
dict["isHighestPhotoQualitySupported"] = self.isHighestPhotoQualitySupported
}
2021-12-10 01:44:54 -07:00
2021-02-19 08:28:05 -07:00
return dict
}
}