Add iOS
This commit is contained in:
47
ios/Extensions/AVCaptureDevice.Format+isBetterThan.swift
Normal file
47
ios/Extensions/AVCaptureDevice.Format+isBetterThan.swift
Normal file
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// AVCaptureDevice.Format+isBetterThan.swift
|
||||
// Cuvent
|
||||
//
|
||||
// Created by Marc Rousavy on 19.12.20.
|
||||
// Copyright © 2020 Facebook. All rights reserved.
|
||||
//
|
||||
|
||||
import AVFoundation
|
||||
|
||||
extension AVCaptureDevice.Format {
|
||||
/** Compares the current Format to the given format and returns true if the current format has either:
|
||||
* 1. Higher still image capture dimensions
|
||||
* 2. Higher video format dimensions (iOS 13.0)
|
||||
* 3. Higher FPS
|
||||
*/
|
||||
func isBetterThan(_ other: AVCaptureDevice.Format) -> Bool {
|
||||
// compare still image dimensions
|
||||
let leftDimensions = highResolutionStillImageDimensions
|
||||
let rightDimensions = other.highResolutionStillImageDimensions
|
||||
if leftDimensions.height * leftDimensions.width > rightDimensions.height * rightDimensions.width
|
||||
{
|
||||
return true
|
||||
}
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
// compare video dimensions
|
||||
let leftVideo = self.formatDescription.presentationDimensions()
|
||||
let rightVideo = other.formatDescription.presentationDimensions()
|
||||
if leftVideo.height * leftVideo.width > rightVideo.height * rightVideo.width
|
||||
{
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// compare max fps
|
||||
if let leftMaxFps = videoSupportedFrameRateRanges.max(by: { $0.maxFrameRate > $1.maxFrameRate }),
|
||||
let rightMaxFps = other.videoSupportedFrameRateRanges.max(by: { $0.maxFrameRate > $1.maxFrameRate })
|
||||
{
|
||||
if leftMaxFps.maxFrameRate > rightMaxFps.maxFrameRate {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user