@@ -92,20 +92,37 @@ - (void)toggleTorch
9292
9393- (void )initCapture
9494{
95- self. device = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo ];
95+ NSMutableArray *deviceTypes = [NSMutableArray array ];
9696
9797 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+ }
101106
102- NSArray *captureDevices = [captureDeviceDiscoverySession devices ];
107+ if (@available (iOS 10.2 , *)) {
108+ [deviceTypes addObject: AVCaptureDeviceTypeBuiltInDualCamera];
109+ }
103110
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+ }
106115
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];
109126 }
110127
111128 AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice: self .device error: nil ];
@@ -226,7 +243,7 @@ - (void) onVideoStart: (NSNotification*) note
226243 if ([self .device lockForConfiguration: &error]) {
227244 if ([self .device isFocusModeSupported: AVCaptureFocusModeContinuousAutoFocus])
228245 self.device .focusMode = AVCaptureFocusModeContinuousAutoFocus;
229-
246+
230247 if ([self .device isExposureModeSupported: AVCaptureExposureModeContinuousAutoExposure])
231248 self.device .exposureMode = AVCaptureExposureModeContinuousAutoExposure;
232249 }
@@ -317,25 +334,25 @@ - (CIImage *)adjust:(CIImage *)ciImage
317334 [filter setValue: ciImage forKey: kCIInputImageKey ];
318335 [filter setValue: [NSNumber numberWithFloat: saturation] forKey: kCIInputSaturationKey ];
319336 ciImage = [filter valueForKey: kCIOutputImageKey ];
320-
337+
321338 // shadow
322339 CIFilter *shadowFilter = [CIFilter filterWithName: @" CIHighlightShadowAdjust" ];
323340 [shadowFilter setValue: ciImage forKey: kCIInputImageKey ];
324341 [shadowFilter setValue: [NSNumber numberWithFloat: shadow] forKey: @" inputShadowAmount" ];
325342 ciImage = [shadowFilter valueForKey: kCIOutputImageKey ];
326-
343+
327344 // contrast
328345 CIFilter *contrastFilter = [CIFilter filterWithName: @" CIColorControls" ];
329346 [contrastFilter setValue: ciImage forKey: kCIInputImageKey ];
330347 [contrastFilter setValue: [NSNumber numberWithFloat: contrast] forKey: kCIInputContrastKey ];
331348 ciImage = [contrastFilter valueForKey: kCIOutputImageKey ];
332-
349+
333350 // brightness
334351 CIFilter *brightnessFilter = [CIFilter filterWithName: @" CIColorControls" ];
335352 [brightnessFilter setValue: ciImage forKey: kCIInputImageKey ];
336353 [brightnessFilter setValue: [NSNumber numberWithFloat: brightness] forKey: kCIInputBrightnessKey ];
337354 ciImage = [brightnessFilter valueForKey: kCIOutputImageKey ];
338-
355+
339356 // sharpnessLuminance
340357 CIFilter *sharpnessLuminanceFilter = [CIFilter filterWithName: @" CISharpenLuminance" ];
341358 [sharpnessLuminanceFilter setValue: ciImage forKey: kCIInputImageKey ];
0 commit comments