@@ -38,33 +38,29 @@ - (instancetype)init {
38
38
- (BOOL )initCapture : (int )framerate capWidth : (int )w capHeight : (int )h {
39
39
NSArray * devices;
40
40
if (@available (macOS 10.15 , *)) {
41
- if (@available (macOS 14.0 , *)) {
42
- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[
43
- AVCaptureDeviceTypeBuiltInWideAngleCamera,
44
- AVCaptureDeviceTypeExternal
45
- ] mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
46
- devices = [session devices ];
47
- } else {
48
- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession
49
- discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera]
50
- mediaType: AVMediaTypeVideo
51
- position: AVCaptureDevicePositionUnspecified];
52
- devices = [session devices ];
53
- }
41
+ NSMutableArray *deviceTypes = [NSMutableArray arrayWithObject: AVCaptureDeviceTypeBuiltInWideAngleCamera];
42
+ #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 140000
43
+ if (@available (macOS 14.0 , *)) {
44
+ if (&AVCaptureDeviceTypeExternal != nil ) {
45
+ [deviceTypes addObject: AVCaptureDeviceTypeExternal];
46
+ [deviceTypes addObject: AVCaptureDeviceTypeContinuityCamera];
47
+ }
48
+ }
49
+ #endif
50
+ AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession
51
+ discoverySessionWithDeviceTypes: deviceTypes
52
+ mediaType: AVMediaTypeVideo
53
+ position: AVCaptureDevicePositionUnspecified];
54
+ devices = [session devices ];
54
55
} else {
55
- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession
56
- discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera]
57
- mediaType: AVMediaTypeVideo
58
- position: AVCaptureDevicePositionUnspecified];
59
- devices = [session devices ];
60
-
56
+ #pragma clang diagnostic push
57
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
58
+ devices = [AVCaptureDevice devicesWithMediaType: AVMediaTypeVideo];
59
+ #pragma clang diagnostic pop
61
60
}
62
-
63
61
if ([devices count ] > 0 ) {
64
62
if (deviceID>[devices count ]-1 )
65
63
deviceID = [devices count ]-1 ;
66
-
67
-
68
64
// We set the device
69
65
device = [devices objectAtIndex: deviceID];
70
66
@@ -267,24 +263,25 @@ -(CGImageRef)getCurrentFrame{
267
263
std::vector <std::string> deviceNames;
268
264
NSArray * devices;
269
265
if (@available (macOS 10.15 , *)) {
270
- if (@available (macOS 14.0 , *)) {
271
- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[
272
- AVCaptureDeviceTypeBuiltInWideAngleCamera,
273
- AVCaptureDeviceTypeExternal
274
- ] mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
275
- devices = [session devices ];
276
- } else {
277
- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[
278
- AVCaptureDeviceTypeBuiltInWideAngleCamera
279
- ] mediaType: AVMediaTypeVideo position: AVCaptureDevicePositionUnspecified];
280
- devices = [session devices ];
281
- }
266
+ NSMutableArray *deviceTypes = [NSMutableArray arrayWithObject: AVCaptureDeviceTypeBuiltInWideAngleCamera];
267
+ #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 140000
268
+ if (@available (macOS 14.0 , *)) {
269
+ if (&AVCaptureDeviceTypeExternal != nil ) {
270
+ [deviceTypes addObject: AVCaptureDeviceTypeExternal];
271
+ [deviceTypes addObject: AVCaptureDeviceTypeContinuityCamera];
272
+ }
273
+ }
274
+ #endif
275
+ AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession
276
+ discoverySessionWithDeviceTypes: deviceTypes
277
+ mediaType: AVMediaTypeVideo
278
+ position: AVCaptureDevicePositionUnspecified];
279
+ devices = [session devices ];
282
280
} else {
283
- AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession
284
- discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera]
285
- mediaType: AVMediaTypeVideo
286
- position: AVCaptureDevicePositionUnspecified];
287
- devices = [session devices ];
281
+ #pragma clang diagnostic push
282
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
283
+ devices = [AVCaptureDevice devicesWithMediaType: AVMediaTypeVideo];
284
+ #pragma clang diagnostic pop
288
285
}
289
286
290
287
int i=0 ;
0 commit comments