From d536d4dffae8895d80a4c4865c548699e32a6ed4 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Tue, 19 Aug 2014 01:37:12 +0000 Subject: Re #1762: Related to r4838, check whether the device supports the capture size before deciding to use it git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4891 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-videodev/ios_dev.m | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pjmedia/src/pjmedia-videodev/ios_dev.m b/pjmedia/src/pjmedia-videodev/ios_dev.m index 50283bf9..aa1ab11d 100644 --- a/pjmedia/src/pjmedia-videodev/ios_dev.m +++ b/pjmedia/src/pjmedia-videodev/ios_dev.m @@ -567,9 +567,13 @@ static pj_status_t ios_factory_create_stream( goto on_error; } + AVCaptureDevice *dev = qf->dev_info[param->cap_id].dev; + /* Find the closest supported size */ - for(i = 0; i < PJ_ARRAY_SIZE(supported_size)-1; ++i) { - if (supported_size[i] >= requested_size) + for(i = PJ_ARRAY_SIZE(supported_size)-1; i > 0; --i) { + if (![dev supportsAVCaptureSessionPreset: size_preset_str[i]]) + continue; + if (supported_size[i-1] < requested_size) break; } strm->cap_session.sessionPreset = size_preset_str[i]; @@ -583,7 +587,6 @@ static pj_status_t ios_factory_create_stream( param->fmt = strm->param.fmt; /* Set frame rate, this may only work on iOS 7 or later */ - AVCaptureDevice *dev = qf->dev_info[param->cap_id].dev; if ([dev respondsToSelector:@selector(activeVideoMinFrameDuration)] && [dev lockForConfiguration:NULL]) { -- cgit v1.2.3