diff options
Diffstat (limited to 'libcheese')
-rw-r--r-- | libcheese/cheese-camera-device.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/libcheese/cheese-camera-device.c b/libcheese/cheese-camera-device.c index 34b846a5..efcb0459 100644 --- a/libcheese/cheese-camera-device.c +++ b/libcheese/cheese-camera-device.c @@ -893,10 +893,9 @@ cheese_camera_device_get_caps_for_format (CheeseCameraDevice *device, CheeseVideoFormat *format) { CheeseCameraDevicePrivate *priv; - CheeseVideoFormatFull *full_format; - GstCaps *desired_caps; - GstCaps *subset_caps; - gsize i; + CheeseVideoFormatFull *full_format; + GstCaps *result_caps; + gsize i; g_return_val_if_fail (CHEESE_IS_CAMERA_DEVICE (device), NULL); @@ -913,21 +912,26 @@ cheese_camera_device_get_caps_for_format (CheeseCameraDevice *device, full_format->width, full_format->height, full_format->fr_numerator, full_format->fr_denominator); - desired_caps = gst_caps_new_empty (); + priv = cheese_camera_device_get_instance_private (device); - for (i = 0; supported_formats[i] != NULL; i++) - { - gst_caps_append (desired_caps, - cheese_camera_device_format_to_caps (supported_formats[i], - full_format)); - } + result_caps = gst_caps_new_empty (); - priv = cheese_camera_device_get_instance_private (device); - subset_caps = gst_caps_intersect (desired_caps, priv->caps); - subset_caps = gst_caps_simplify (subset_caps); - gst_caps_unref (desired_caps); + for (i = 0; supported_formats[i] != NULL; i++) + { + GstCaps *desired_caps; + GstCaps *subset_caps; + + desired_caps = cheese_camera_device_format_to_caps (supported_formats[i], + full_format); + subset_caps = gst_caps_intersect (desired_caps, priv->caps); + subset_caps = gst_caps_simplify (subset_caps); + + gst_caps_append (result_caps, subset_caps); + + gst_caps_unref (desired_caps); + } - GST_INFO ("Got %" GST_PTR_FORMAT, subset_caps); + GST_INFO ("Got %" GST_PTR_FORMAT, result_caps); - return subset_caps; + return result_caps; } |