// // AVCaptureDevice.Format+isBetterThan.swift // mrousavy // // Created by Marc Rousavy on 19.12.20. // Copyright © 2020 mrousavy. 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 } // compare video dimensions let leftVideo = self.videoDimensions let rightVideo = other.videoDimensions 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 } }