@@ -92,20 +92,37 @@ - (void)toggleTorch
92
92
93
93
- (void )initCapture
94
94
{
95
- self. device = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo ];
95
+ NSMutableArray *deviceTypes = [NSMutableArray array ];
96
96
97
97
if (@available (iOS 13.0 , *)) {
98
- AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera]
99
- mediaType: AVMediaTypeVideo
100
- position: AVCaptureDevicePositionBack];
98
+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTripleCamera];
99
+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInDualWideCamera];
100
+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInUltraWideCamera];
101
+ }
102
+
103
+ if (@available (iOS 11.1 , *)) {
104
+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTrueDepthCamera];
105
+ }
101
106
102
- NSArray *captureDevices = [captureDeviceDiscoverySession devices ];
107
+ if (@available (iOS 10.2 , *)) {
108
+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInDualCamera];
109
+ }
103
110
104
- if (captureDevices.count > 0 ) {
105
- NSLog (@" Supports ultrawide camera" );
111
+ if (@available (iOS 10.0 , *)) {
112
+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTelephotoCamera];
113
+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInWideAngleCamera];
114
+ }
106
115
107
- self.device = captureDevices[0 ];
108
- }
116
+ AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession
117
+ discoverySessionWithDeviceTypes: deviceTypes
118
+ mediaType: AVMediaTypeVideo
119
+ position: AVCaptureDevicePositionBack];
120
+
121
+ NSArray *captureDevices = [captureDeviceDiscoverySession devices ];
122
+ if (captureDevices.count > 0 ) {
123
+ self.device = captureDevices[0 ];
124
+ } else {
125
+ self.device = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo];
109
126
}
110
127
111
128
AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice: self .device error: nil ];
@@ -226,7 +243,7 @@ - (void) onVideoStart: (NSNotification*) note
226
243
if ([self .device lockForConfiguration: &error]) {
227
244
if ([self .device isFocusModeSupported: AVCaptureFocusModeContinuousAutoFocus])
228
245
self.device .focusMode = AVCaptureFocusModeContinuousAutoFocus;
229
-
246
+
230
247
if ([self .device isExposureModeSupported: AVCaptureExposureModeContinuousAutoExposure])
231
248
self.device .exposureMode = AVCaptureExposureModeContinuousAutoExposure;
232
249
}
@@ -317,25 +334,25 @@ - (CIImage *)adjust:(CIImage *)ciImage
317
334
[filter setValue: ciImage forKey: kCIInputImageKey ];
318
335
[filter setValue: [NSNumber numberWithFloat: saturation] forKey: kCIInputSaturationKey ];
319
336
ciImage = [filter valueForKey: kCIOutputImageKey ];
320
-
337
+
321
338
// shadow
322
339
CIFilter *shadowFilter = [CIFilter filterWithName: @" CIHighlightShadowAdjust" ];
323
340
[shadowFilter setValue: ciImage forKey: kCIInputImageKey ];
324
341
[shadowFilter setValue: [NSNumber numberWithFloat: shadow ] forKey: @" inputShadowAmount" ];
325
342
ciImage = [shadowFilter valueForKey: kCIOutputImageKey ];
326
-
343
+
327
344
// contrast
328
345
CIFilter *contrastFilter = [CIFilter filterWithName: @" CIColorControls" ];
329
346
[contrastFilter setValue: ciImage forKey: kCIInputImageKey ];
330
347
[contrastFilter setValue: [NSNumber numberWithFloat: contrast] forKey: kCIInputContrastKey ];
331
348
ciImage = [contrastFilter valueForKey: kCIOutputImageKey ];
332
-
349
+
333
350
// brightness
334
351
CIFilter *brightnessFilter = [CIFilter filterWithName: @" CIColorControls" ];
335
352
[brightnessFilter setValue: ciImage forKey: kCIInputImageKey ];
336
353
[brightnessFilter setValue: [NSNumber numberWithFloat: brightness] forKey: kCIInputBrightnessKey ];
337
354
ciImage = [brightnessFilter valueForKey: kCIOutputImageKey ];
338
-
355
+
339
356
// sharpnessLuminance
340
357
CIFilter *sharpnessLuminanceFilter = [CIFilter filterWithName: @" CISharpenLuminance" ];
341
358
[sharpnessLuminanceFilter setValue: ciImage forKey: kCIInputImageKey ];
0 commit comments