Hi! I noticed that the coglsink elements has a higher rank than cluttersink, since it is enabled in the cogl built. so it becomes preferred in gstreamer pipelines, when using the autovideosink element. I'm not sure this is a desired move (gnome bug #730337). For example in Fedora 21, it causes errors in pipepiles using hardware decoders, banshee fails to play videos too. $ wget -O /tmp/NeroAVC.mp4 http://samples.mplayerhq.hu/V-codecs/h264/NeroAVC.mp4 $ gst-launch-1.0 filesrc location=/tmp/NeroAVC.mp4 ! qtdemux ! h264parse ! vaapidecode ! videoconvert ! cluttersink -> it works fine $ gst-launch-1.0 filesrc location=/tmp/NeroAVC.mp4 ! qtdemux ! h264parse ! vaapidecode ! videoconvert ! coglsink libva info: VA-API version 0.35.1 libva info: va_getDriverName() returns 0 libva info: User requested driver 'vdpau' libva info: Trying to open /usr/lib64/dri/vdpau_drv_video.so libva info: Found init function __vaDriverInit_0_35 libva info: va_openDriver() returns 0 Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Got context from element 'vaapidecode0': gst.vaapi.Display=context, display=(GstVaapiDisplay)NULL; (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: GStreamer encountered a general stream error. (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed Additional debug info: qtdemux.c(4434): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0: streaming stopped, reason not-negotiated (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed (gst-launch-1.0:20810): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed Freeing pipeline ... So, maybe the rank of the cogl gst element could be tweaked, so cluttersink remains the default videosink ?
Would it make sense to completely disable the cogl gst element for F21? Do you know of any programs that actually need it? I believe it might be needed for clutter-gst 3, but we aren't shipping that in Fedora yet and all GNOME 3.14 modules are still using clutter-gst 2.0.x, so that shouldn't be a concern.
I made a local rebuilt, with the cogl gst element disabled for F21, and it works fine for me (banshee, totem). But I don't use much other apps that require a gst pipeline, so my use case can not speak for others.
OK, I've done a cogl build that disables cogl-gst. Sounds like the best option for F21.
cogl-1.18.2-8.fc21 has been submitted as an update for Fedora 21. https://admin.fedoraproject.org/updates/cogl-1.18.2-8.fc21
Package cogl-1.18.2-8.fc21: * should fix your issue, * was pushed to the Fedora 21 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing cogl-1.18.2-8.fc21' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2014-15014/cogl-1.18.2-8.fc21 then log in and leave karma (feedback).
cogl-1.18.2-8.fc21 has been pushed to the Fedora 21 stable repository. If problems still persist, please make note of it in this bug report.