@@ -53,15 +53,23 @@ - (instancetype)init {
5353}
5454
5555- (BOOL )initCapture : (int )framerate capWidth : (int )w capHeight : (int )h {
56- AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[
57- AVCaptureDeviceTypeBuiltInWideAngleCamera,
58- AVCaptureDeviceTypeBuiltInTelephotoCamera,
59- AVCaptureDeviceTypeBuiltInUltraWideCamera,
60- AVCaptureDeviceTypeBuiltInDualCamera,
61- AVCaptureDeviceTypeBuiltInDualWideCamera,
62- AVCaptureDeviceTypeBuiltInTripleCamera,
63- AVCaptureDeviceTypeExternal
64- ] mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
56+
57+ NSMutableArray *deviceTypes = [NSMutableArray arrayWithObjects: AVCaptureDeviceTypeBuiltInWideAngleCamera,
58+ AVCaptureDeviceTypeBuiltInTelephotoCamera,
59+ AVCaptureDeviceTypeBuiltInUltraWideCamera,
60+ AVCaptureDeviceTypeBuiltInDualCamera,
61+ AVCaptureDeviceTypeBuiltInDualWideCamera,
62+ AVCaptureDeviceTypeBuiltInTripleCamera,
63+ AVCaptureDeviceTypeBuiltInTrueDepthCamera, nil ];
64+ if (@available (iOS 17.0 , macCatalyst 17.0 , tvOS 17.0 , *)) {
65+ if (&AVCaptureDeviceTypeContinuityCamera != nil ) {
66+ [deviceTypes addObject: AVCaptureDeviceTypeContinuityCamera];
67+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInLiDARDepthCamera];
68+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTrueDepthCamera];
69+ [deviceTypes addObject: AVCaptureDeviceTypeExternal];
70+ }
71+ }
72+ AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: deviceTypes mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
6573
6674 NSArray <AVCaptureDevice *> *devices = discoverySession.devices ;
6775 if ([devices count ] > 0 ) {
@@ -251,28 +259,26 @@ -(CGImageRef)getCurrentFrame{
251259-(std::vector <std::string>)listDevices {
252260 std::vector <std::string> deviceNames;
253261 NSArray <AVCaptureDevice *> *devices;
254- if (@available (iOS 17.0 , *)) {
255- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[
256- AVCaptureDeviceTypeBuiltInWideAngleCamera,
257- AVCaptureDeviceTypeBuiltInTelephotoCamera,
258- AVCaptureDeviceTypeBuiltInUltraWideCamera,
259- AVCaptureDeviceTypeBuiltInDualCamera,
260- AVCaptureDeviceTypeBuiltInDualWideCamera,
261- AVCaptureDeviceTypeBuiltInTripleCamera,
262- AVCaptureDeviceTypeExternal
263- ] mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
264- devices = session.devices ;
265- } else {
266- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[
267- AVCaptureDeviceTypeBuiltInWideAngleCamera,
268- AVCaptureDeviceTypeBuiltInTelephotoCamera,
269- AVCaptureDeviceTypeBuiltInUltraWideCamera,
270- AVCaptureDeviceTypeBuiltInDualCamera,
271- AVCaptureDeviceTypeBuiltInDualWideCamera,
272- AVCaptureDeviceTypeBuiltInTripleCamera,
273- ] mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
274- devices = session.devices ;
275- }
262+
263+ NSMutableArray *deviceTypes = [NSMutableArray arrayWithObjects: AVCaptureDeviceTypeBuiltInWideAngleCamera,
264+ AVCaptureDeviceTypeBuiltInTelephotoCamera,
265+ AVCaptureDeviceTypeBuiltInUltraWideCamera,
266+ AVCaptureDeviceTypeBuiltInDualCamera,
267+ AVCaptureDeviceTypeBuiltInDualWideCamera,
268+ AVCaptureDeviceTypeBuiltInTripleCamera,
269+ AVCaptureDeviceTypeBuiltInTrueDepthCamera,
270+ nil
271+ ];
272+ if (@available (iOS 17.0 , macCatalyst 17.0 , tvOS 17.0 , *)) {
273+ if (&AVCaptureDeviceTypeContinuityCamera != nil ) {
274+ [deviceTypes addObject: AVCaptureDeviceTypeContinuityCamera];
275+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInLiDARDepthCamera];
276+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTrueDepthCamera];
277+ [deviceTypes addObject: AVCaptureDeviceTypeExternal];
278+ }
279+ }
280+ AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: deviceTypes mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
281+ devices = discoverySession.devices ;
276282 int i=0 ;
277283 for (AVCaptureDevice * captureDevice in devices){
278284 deviceNames.push_back ([captureDevice.localizedName UTF8String ]);
@@ -320,8 +326,8 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
320326 // Create a CGImageRef from the CVImageBufferRef
321327 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB ();
322328
323- CGContextRef newContext = CGBitmapContextCreate (baseAddress, widthIn, heightIn, 8 , bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst );
324- CGImageRef newImage = CGBitmapContextCreateImage (newContext);
329+ CGContextRef newContext = CGBitmapContextCreate (baseAddress, widthIn, heightIn, 8 , bytesPerRow, colorSpace, (CGBitmapInfo) kCGBitmapByteOrder32Little | (CGBitmapInfo) kCGImageAlphaPremultipliedFirst );
330+ CGImageRef newImage = CGBitmapContextCreateImage (newContext);
325331
326332 CGImageRelease (currentFrame);
327333 currentFrame = CGImageCreateCopy (newImage);
0 commit comments