From badfbf1e8124c2ca56b196a182d740e03958e51b Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Fri, 7 Oct 2016 05:58:54 +0000 Subject: Re #1941: Support for AVCaptureDeviceDiscoverySession to replace the deprecated [AVCaptureDevice devices] in iOS 10. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5454 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-videodev/darwin_dev.m | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/pjmedia/src/pjmedia-videodev/darwin_dev.m b/pjmedia/src/pjmedia-videodev/darwin_dev.m index 74d96da5..08053b9d 100644 --- a/pjmedia/src/pjmedia-videodev/darwin_dev.m +++ b/pjmedia/src/pjmedia-videodev/darwin_dev.m @@ -293,7 +293,33 @@ static pj_status_t darwin_factory_init(pjmedia_vid_dev_factory *f) /* Init input device */ first_idx = qf->dev_count; if (NSClassFromString(@"AVCaptureSession")) { - for (AVCaptureDevice *device in [AVCaptureDevice devices]) { + NSArray *dev_list; + +#if TARGET_OS_IPHONE && defined(__IPHONE_10_0) + if (NSClassFromString(@"AVCaptureDeviceTypeBuiltInWideAngleCamera")) { + /* Starting in iOS 10, [AVCaptureDevice devices] is deprecated + * and replaced by AVCaptureDeviceDiscoverySession. + */ + AVCaptureDeviceDiscoverySession *dds; + NSArray *dev_types = + @[AVCaptureDeviceTypeBuiltInWideAngleCamera, + AVCaptureDeviceTypeBuiltInDuoCamera, + AVCaptureDeviceTypeBuiltInTelephotoCamera]; + + dds = [AVCaptureDeviceDiscoverySession + discoverySessionWithDeviceTypes:dev_types + mediaType:AVMediaTypeVideo + position:AVCaptureDevicePositionUnspecified]; + + dev_list = [dds devices]; + } else { + dev_list = [AVCaptureDevice devices]; + } +#else + dev_list = [AVCaptureDevice devices]; +#endif + + for (AVCaptureDevice *device in dev_list) { if (![device hasMediaType:AVMediaTypeVideo] || qf->dev_count >= MAX_DEV_COUNT) { -- cgit v1.2.3