58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
|   }
 | |
| }
 |