summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcheese/cheese-camera.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
index a625359..ab5490d 100644
--- a/libcheese/cheese-camera.c
+++ b/libcheese/cheese-camera.c
@@ -743,7 +743,7 @@ cheese_camera_set_new_caps (CheeseCamera *camera)
{
CheeseCameraPrivate *priv;
CheeseCameraDevice *device;
- GstCaps *caps;
+ GstCaps *caps, *i420_caps, *video_caps;
gchar *caps_desc;
int width, height;
@@ -768,8 +768,16 @@ cheese_camera_set_new_caps (CheeseCamera *camera)
g_object_set (gst_bin_get_by_name (GST_BIN (priv->video_source),
"video_source_filter"), "caps", caps, NULL);
g_object_set (priv->camerabin, "viewfinder-caps", caps,
- "image-capture-caps", caps, "video-capture-caps", caps,
- NULL);
+ "image-capture-caps", caps, NULL);
+
+ /* GStreamer >= 1.1.4 expects fully-specified video-capture-source caps. */
+ i420_caps = gst_caps_new_simple ("video/x-raw",
+ "format", G_TYPE_STRING, "I420", NULL);
+ video_caps = gst_caps_intersect (caps, i420_caps);
+ g_object_set (priv->camerabin, "video-capture-caps", video_caps, NULL);
+
+ gst_caps_unref (i420_caps);
+ gst_caps_unref (video_caps);
gst_caps_unref (caps);
width = priv->current_format->width;