From 94d77829a4d6f24b7acbbef09a03c2f3487bc155 Mon Sep 17 00:00:00 2001 From: Andoni Morales Alastruey Date: Wed, 6 Nov 2013 18:49:35 +0100 Subject: [PATCH] avfvideosrc: sort caps with the highest resolution first When started without any caps filter we prefer the highest supported resolution. --- sys/applemedia/avfvideosrc.m | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/sys/applemedia/avfvideosrc.m b/sys/applemedia/avfvideosrc.m index 7f7e705ab0..8671f4f884 100644 --- a/sys/applemedia/avfvideosrc.m +++ b/sys/applemedia/avfvideosrc.m @@ -345,7 +345,7 @@ didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer NSArray *formats = [device valueForKey:@"formats"]; NSArray *pixel_formats = output.availableVideoCVPixelFormatTypes; - for (AVCaptureDeviceFormat *f in formats) { + for (AVCaptureDeviceFormat *f in [formats reverseObjectEnumerator]) { CMFormatDescriptionRef formatDescription = f.formatDescription; CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions(formatDescription); @@ -422,20 +422,20 @@ didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer if (gst_format == GST_VIDEO_FORMAT_UNKNOWN) continue; - if ([session canSetSessionPreset:AVCaptureSessionPresetLow]) - gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 192, 144, DEVICE_FPS_N, DEVICE_FPS_D)); - if ([session canSetSessionPreset:AVCaptureSessionPreset352x288]) - gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 352, 288, DEVICE_FPS_N, DEVICE_FPS_D)); - if ([session canSetSessionPreset:AVCaptureSessionPresetMedium]) - gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 480, 360, DEVICE_FPS_N, DEVICE_FPS_D)); - if ([session canSetSessionPreset:AVCaptureSessionPreset640x480]) - gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 640, 480, DEVICE_FPS_N, DEVICE_FPS_D)); - if ([session canSetSessionPreset:AVCaptureSessionPreset1280x720]) - gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 1280, 720, DEVICE_FPS_N, DEVICE_FPS_D)); #if HAVE_IOS if ([session canSetSessionPreset:AVCaptureSessionPreset1920x1080]) gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 1920, 1080, DEVICE_FPS_N, DEVICE_FPS_D)); #endif + if ([session canSetSessionPreset:AVCaptureSessionPreset1280x720]) + gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 1280, 720, DEVICE_FPS_N, DEVICE_FPS_D)); + if ([session canSetSessionPreset:AVCaptureSessionPreset640x480]) + gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 640, 480, DEVICE_FPS_N, DEVICE_FPS_D)); + if ([session canSetSessionPreset:AVCaptureSessionPresetMedium]) + gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 480, 360, DEVICE_FPS_N, DEVICE_FPS_D)); + if ([session canSetSessionPreset:AVCaptureSessionPreset352x288]) + gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 352, 288, DEVICE_FPS_N, DEVICE_FPS_D)); + if ([session canSetSessionPreset:AVCaptureSessionPresetLow]) + gst_caps_append (result, GST_AVF_CAPS_NEW (gst_format, 192, 144, DEVICE_FPS_N, DEVICE_FPS_D)); } return YES; }