2021-02-19 08:28:05 -07:00
|
|
|
//
|
|
|
|
// AVCaptureDevice.Format+toDictionary.swift
|
2021-06-21 14:42:46 -06:00
|
|
|
// mrousavy
|
2021-02-19 08:28:05 -07:00
|
|
|
//
|
|
|
|
// Created by Marc Rousavy on 15.01.21.
|
2021-06-01 05:07:57 -06:00
|
|
|
// 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] {
|
2021-07-08 02:59:27 -06:00
|
|
|
let videoDimensions = CMVideoFormatDescriptionGetDimensions(formatDescription)
|
|
|
|
|
2021-02-19 08:28:05 -07:00
|
|
|
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,
|
2021-07-08 02:59:27 -06:00
|
|
|
"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-07-08 02:59:27 -06:00
|
|
|
|
2021-02-19 08:28:05 -07:00
|
|
|
if #available(iOS 13.0, *) {
|
|
|
|
dict["isHighestPhotoQualitySupported"] = self.isHighestPhotoQualitySupported
|
|
|
|
}
|
2021-07-08 02:59:27 -06:00
|
|
|
|
2021-02-19 08:28:05 -07:00
|
|
|
return dict
|
|
|
|
}
|
|
|
|
}
|