summaryrefslogtreecommitdiff
path: root/libcheese/cheese-camera-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcheese/cheese-camera-device.c')
-rw-r--r--libcheese/cheese-camera-device.c39
1 files changed, 28 insertions, 11 deletions
diff --git a/libcheese/cheese-camera-device.c b/libcheese/cheese-camera-device.c
index efcb0459..c6cc39ef 100644
--- a/libcheese/cheese-camera-device.c
+++ b/libcheese/cheese-camera-device.c
@@ -163,6 +163,27 @@ compare_formats (gconstpointer a, gconstpointer b)
return (d->width * d->height - c->width * c->height);
}
+static GstCaps *
+format_caps (const gchar * const formats[])
+{
+ GstCaps *filter;
+ gsize i;
+
+ filter = gst_caps_new_empty ();
+
+ for (i = 0; formats[i] != NULL; i++)
+ {
+ gst_caps_append (filter,
+ gst_caps_new_simple (formats[i],
+ "framerate",
+ GST_TYPE_FRACTION_RANGE,
+ 0, 1, CHEESE_MAXIMUM_RATE, 1,
+ NULL));
+ }
+
+ return filter;
+}
+
/*
* cheese_camera_device_filter_caps:
* @device: the #CheeseCameraDevice
@@ -182,18 +203,8 @@ cheese_camera_device_filter_caps (CheeseCameraDevice *device,
{
GstCaps *filter;
GstCaps *allowed;
- gsize i;
-
- filter = gst_caps_new_empty ();
- for (i = 0; formats[i] != NULL; i++)
- {
- gst_caps_append (filter,
- gst_caps_new_simple (formats[i],
- "framerate", GST_TYPE_FRACTION_RANGE,
- 0, 1, CHEESE_MAXIMUM_RATE, 1,
- NULL));
- }
+ filter = format_caps (formats);
allowed = gst_caps_intersect (caps, filter);
@@ -935,3 +946,9 @@ cheese_camera_device_get_caps_for_format (CheeseCameraDevice *device,
return result_caps;
}
+
+GstCaps *
+cheese_camera_device_supported_format_caps (void)
+{
+ return format_caps (supported_formats);
+}