fix: Expose minExposure/maxExposure in format (#2179)
				
					
				
			* fix: Expose `minExposure`/`maxExposure` in `format` I forgot to do that on iOS before * Update CameraDeviceFormat.swift
This commit is contained in:
		| @@ -187,14 +187,14 @@ extension CameraSession { | ||||
|  | ||||
|     ReactLogger.log(level: .info, message: "Configuring Format (\(targetFormat))...") | ||||
|  | ||||
|     let currentFormat = CameraDeviceFormat(fromFormat: device.activeFormat) | ||||
|     let currentFormat = CameraDeviceFormat(fromFormat: device.activeFormat, forDevice: device) | ||||
|     if currentFormat == targetFormat { | ||||
|       ReactLogger.log(level: .info, message: "Already selected active format, no need to configure.") | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // Find matching format (JS Dictionary -> strongly typed Swift class) | ||||
|     let format = device.formats.first { targetFormat.isEqualTo(format: $0) } | ||||
|     let format = device.formats.first { targetFormat.isEqualTo(format: $0, device: device) } | ||||
|     guard let format else { | ||||
|       throw CameraError.format(.invalidFormat) | ||||
|     } | ||||
|   | ||||
| @@ -10,7 +10,7 @@ import AVFoundation | ||||
|  | ||||
| extension AVCaptureDevice { | ||||
|   func toDictionary() -> [String: Any] { | ||||
|     let formats = formats.map { CameraDeviceFormat(fromFormat: $0) } | ||||
|     let formats = formats.map { CameraDeviceFormat(fromFormat: $0, forDevice: self) } | ||||
|  | ||||
|     return [ | ||||
|       "id": uniqueID, | ||||
|   | ||||
| @@ -22,6 +22,9 @@ struct CameraDeviceFormat: Equatable, CustomStringConvertible { | ||||
|   let minFps: Double | ||||
|   let maxFps: Double | ||||
|  | ||||
|   let minExposure: Float | ||||
|   let maxExposure: Float | ||||
|  | ||||
|   let minISO: Float | ||||
|   let maxISO: Float | ||||
|  | ||||
| @@ -38,13 +41,15 @@ struct CameraDeviceFormat: Equatable, CustomStringConvertible { | ||||
|  | ||||
|   let supportsDepthCapture: Bool | ||||
|  | ||||
|   init(fromFormat format: AVCaptureDevice.Format) { | ||||
|   init(fromFormat format: AVCaptureDevice.Format, forDevice device: AVCaptureDevice) { | ||||
|     videoWidth = Int(format.videoDimensions.width) | ||||
|     videoHeight = Int(format.videoDimensions.height) | ||||
|     photoWidth = Int(format.photoDimensions.width) | ||||
|     photoHeight = Int(format.photoDimensions.height) | ||||
|     minFps = format.minFps | ||||
|     maxFps = format.maxFps | ||||
|     minExposure = device.minExposureTargetBias | ||||
|     maxExposure = device.maxExposureTargetBias | ||||
|     minISO = format.minISO | ||||
|     maxISO = format.maxISO | ||||
|     fieldOfView = format.videoFieldOfView | ||||
| @@ -67,6 +72,8 @@ struct CameraDeviceFormat: Equatable, CustomStringConvertible { | ||||
|     maxFps = jsValue["maxFps"] as! Double | ||||
|     minISO = jsValue["minISO"] as! Float | ||||
|     maxISO = jsValue["maxISO"] as! Float | ||||
|     minExposure = jsValue["minExposure"] as! Float | ||||
|     maxExposure = jsValue["maxExposure"] as! Float | ||||
|     fieldOfView = jsValue["fieldOfView"] as! Float | ||||
|     maxZoom = jsValue["maxZoom"] as! Double | ||||
|     let jsVideoStabilizationModes = jsValue["videoStabilizationModes"] as! [String] | ||||
| @@ -81,8 +88,8 @@ struct CameraDeviceFormat: Equatable, CustomStringConvertible { | ||||
|     // swiftlint:enable force_cast | ||||
|   } | ||||
|  | ||||
|   func isEqualTo(format other: AVCaptureDevice.Format) -> Bool { | ||||
|     let other = CameraDeviceFormat(fromFormat: other) | ||||
|   func isEqualTo(format other: AVCaptureDevice.Format, device otherDevice: AVCaptureDevice) -> Bool { | ||||
|     let other = CameraDeviceFormat(fromFormat: other, forDevice: otherDevice) | ||||
|     return self == other | ||||
|   } | ||||
|  | ||||
| @@ -94,8 +101,10 @@ struct CameraDeviceFormat: Equatable, CustomStringConvertible { | ||||
|       "photoWidth": photoWidth, | ||||
|       "videoHeight": videoHeight, | ||||
|       "videoWidth": videoWidth, | ||||
|       "maxISO": maxISO, | ||||
|       "minISO": minISO, | ||||
|       "maxISO": maxISO, | ||||
|       "minExposure": minExposure, | ||||
|       "maxExposure": maxExposure, | ||||
|       "fieldOfView": fieldOfView, | ||||
|       "maxZoom": maxZoom, | ||||
|       "supportsVideoHdr": supportsVideoHdr, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user