63 lines
2.3 KiB
Swift
63 lines
2.3 KiB
Swift
//
|
||
// CaptureDevice+MockCaptureDevice.swift of MijickCamera
|
||
//
|
||
// Created by Tomasz Kurylik. Sending ❤️ from Kraków!
|
||
// - Mail: tomasz.kurylik@mijick.com
|
||
// - GitHub: https://github.com/FulcrumOne
|
||
// - Medium: https://medium.com/@mijick
|
||
//
|
||
// Copyright ©2024 Mijick. All rights reserved.
|
||
|
||
|
||
import AVKit
|
||
|
||
class MockCaptureDevice: NSObject, CaptureDevice {
|
||
// MARK: Getters
|
||
var uniqueID: String = UUID().uuidString
|
||
var exposureDuration: CMTime { _exposureDuration }
|
||
var exposureTargetBias: Float { _exposureTargetBias }
|
||
var iso: Float { _iso }
|
||
var minAvailableVideoZoomFactor: CGFloat { 1 }
|
||
var maxAvailableVideoZoomFactor: CGFloat { 3.876 }
|
||
var minExposureDuration: CMTime { .init(value: 1, timescale: 1000) }
|
||
var maxExposureDuration: CMTime { .init(value: 1, timescale: 5) }
|
||
var minISO: Float { 1 }
|
||
var maxISO: Float { 10 }
|
||
var minExposureTargetBias: Float { 0.1 }
|
||
var maxExposureTargetBias: Float { 199 }
|
||
var minFrameRate: Float64? { 15 }
|
||
var maxFrameRate: Float64? { 60 }
|
||
var hasFlash: Bool { true }
|
||
var hasTorch: Bool { true }
|
||
var isExposurePointOfInterestSupported: Bool { true }
|
||
var isFocusPointOfInterestSupported: Bool { true }
|
||
|
||
// MARK: Setters
|
||
var videoZoomFactor: CGFloat = 1
|
||
var focusMode: AVCaptureDevice.FocusMode = .autoFocus
|
||
var focusPointOfInterest: CGPoint = .zero
|
||
var exposurePointOfInterest: CGPoint = .zero
|
||
var lightMode: CameraLightMode = .off
|
||
var activeVideoMinFrameDuration: CMTime = .init()
|
||
var activeVideoMaxFrameDuration: CMTime = .init()
|
||
var exposureMode: AVCaptureDevice.ExposureMode = .continuousAutoExposure
|
||
var hdrMode: CameraHDRMode = .auto
|
||
|
||
// MARK: Methods
|
||
func lockForConfiguration() throws { return }
|
||
func unlockForConfiguration() { return }
|
||
func isExposureModeSupported(_ exposureMode: AVCaptureDevice.ExposureMode) -> Bool { true }
|
||
func setExposureModeCustom(duration: CMTime, iso: Float, completionHandler: ((CMTime) -> Void)?) {
|
||
_exposureDuration = duration
|
||
_iso = iso
|
||
}
|
||
func setExposureTargetBias(_ bias: Float, completionHandler handler: ((CMTime) -> ())?) {
|
||
_exposureTargetBias = bias
|
||
}
|
||
|
||
// MARK: Private Attributes
|
||
private var _exposureDuration: CMTime = .init()
|
||
private var _exposureTargetBias: Float = 0
|
||
private var _iso: Float = 0
|
||
}
|