feat: Add support for LiDAR, TrueDepth, External (USB) and Continuity Camera Devices (iOS 17) (#1824)
* feat: Add support for LiDAR, TrueDepth, External (USB) and Continuity Camera Devices (iOS 17) * Rename `devices` -> `physicalDevices` * fix: Comment out iOS 17 cameras for now * fix: Move `supportsDepthCapture` to `format` * fix: Fall back to `wide-angle-camera` for any unknown types * Update CameraPage.tsx * `descriptor` -> `physicalDeviceDescriptor` * Update CameraDevice.ts * Format * feat: Expose `userPreferredCameraDevice` Uses the new iOS 17 API where the user can prefer a default device, otherwise fall back to the first device of the available ones * fix: Expose as property * Add TODO comments * fix: Format code * fix: Compile below Swift 5.9
This commit is contained in:
34
package/ios/Extensions/AVCaptureDevice+toDictionary.swift
Normal file
34
package/ios/Extensions/AVCaptureDevice+toDictionary.swift
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// AVCaptureDevice+toDictionary.swift
|
||||
// VisionCamera
|
||||
//
|
||||
// Created by Marc Rousavy on 21.09.23.
|
||||
// Copyright © 2023 mrousavy. All rights reserved.
|
||||
//
|
||||
|
||||
import AVFoundation
|
||||
|
||||
extension AVCaptureDevice {
|
||||
func toDictionary() -> [String: Any] {
|
||||
return [
|
||||
"id": uniqueID,
|
||||
"physicalDevices": physicalDevices.map(\.deviceType.physicalDeviceDescriptor),
|
||||
"position": position.descriptor,
|
||||
"name": localizedName,
|
||||
"hasFlash": hasFlash,
|
||||
"hasTorch": hasTorch,
|
||||
"minZoom": minAvailableVideoZoomFactor,
|
||||
"neutralZoom": neutralZoomFactor,
|
||||
"maxZoom": maxAvailableVideoZoomFactor,
|
||||
"isMultiCam": isMultiCam,
|
||||
"supportsRawCapture": false, // TODO: supportsRawCapture
|
||||
"supportsLowLightBoost": isLowLightBoostSupported,
|
||||
"supportsFocus": isFocusPointOfInterestSupported,
|
||||
"hardwareLevel": "full",
|
||||
"sensorOrientation": "portrait", // TODO: Sensor Orientation?
|
||||
"formats": formats.map { format -> [String: Any] in
|
||||
format.toDictionary()
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
@@ -55,6 +55,7 @@ extension AVCaptureDevice.Format {
|
||||
"minFps": minFrameRate,
|
||||
"maxFps": maxFrameRate,
|
||||
"pixelFormats": pixelFormats.map(\.unionValue),
|
||||
"supportsDepthCapture": !supportedDepthDataFormats.isEmpty,
|
||||
]
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user