@@ -53,15 +53,23 @@ - (instancetype)init {
53
53
}
54
54
55
55
- (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];
65
73
66
74
NSArray <AVCaptureDevice *> *devices = discoverySession.devices ;
67
75
if ([devices count ] > 0 ) {
@@ -251,28 +259,26 @@ -(CGImageRef)getCurrentFrame{
251
259
-(std::vector <std::string>)listDevices {
252
260
std::vector <std::string> deviceNames;
253
261
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 ;
276
282
int i=0 ;
277
283
for (AVCaptureDevice * captureDevice in devices){
278
284
deviceNames.push_back ([captureDevice.localizedName UTF8String ]);
@@ -320,8 +326,8 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
320
326
// Create a CGImageRef from the CVImageBufferRef
321
327
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB ();
322
328
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);
325
331
326
332
CGImageRelease (currentFrame);
327
333
currentFrame = CGImageCreateCopy (newImage);
0 commit comments