diff -up cheese-2.23.91/src/cheese-webcam.c.foo cheese-2.23.91/src/cheese-webcam.c --- cheese-2.23.91/src/cheese-webcam.c.foo 2008-09-03 22:43:48.000000000 +0200 +++ cheese-2.23.91/src/cheese-webcam.c 2008-09-03 22:44:46.000000000 +0200 @@ -742,10 +742,13 @@ cheese_webcam_create_webcam_source_bin ( &framerate_denominator); webcam_input = g_strdup_printf ( - "%s name=video_source device=%s ! capsfilter name=capsfilter caps=%s,width=%d,height=%d,framerate=%d/%d ! identity", + "%s name=video_source device=%s ! capsfilter name=capsfilter caps=video/x-raw-rgb,width=%d,height=%d,framerate=%d/%d;video/x-raw-yuv,width=%d,height=%d,framerate=%d/%d ! identity", selected_webcam->gstreamer_src, selected_webcam->video_device, - format->mimetype, + format->width, + format->height, + framerate_numerator, + framerate_denominator, format->width, format->height, framerate_numerator, @@ -1541,7 +1544,7 @@ cheese_webcam_set_video_format (CheeseWe find_highest_framerate (format, &framerate_numerator, &framerate_denominator); - new_caps = gst_caps_new_simple (format->mimetype, + new_caps = gst_caps_new_simple ("video/x-raw-rgb", "width", G_TYPE_INT, format->width, "height", G_TYPE_INT, @@ -1551,6 +1554,16 @@ cheese_webcam_set_video_format (CheeseWe framerate_denominator, NULL); + gst_caps_append(new_caps, gst_caps_new_simple ("video/x-raw-yuv", + "width", G_TYPE_INT, + format->width, + "height", G_TYPE_INT, + format->height, + "framerate", GST_TYPE_FRACTION, + framerate_numerator, + framerate_denominator, + NULL)); + priv->current_format = format; cheese_webcam_stop (webcam);