Bug 1158676

Summary: cogl-gst: coglsink has a higher rank than cluttersink
Product: [Fedora] Fedora Reporter: Fabrice Bellet <fabrice>
Component: coglAssignee: Peter Robinson <pbrobinson>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 21CC: fmuellner, kalevlember, pbrobinson
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: cogl-1.18.2-8.fc21 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-11-16 14:44:25 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Fabrice Bellet 2014-10-29 20:37:38 UTC
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 ?

Comment 1 Kalev Lember 2014-11-09 19:46:58 UTC
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.

Comment 2 Fabrice Bellet 2014-11-12 11:37:36 UTC
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.

Comment 3 Kalev Lember 2014-11-13 08:31:30 UTC
OK, I've done a cogl build that disables cogl-gst. Sounds like the best option for F21.

Comment 4 Fedora Update System 2014-11-13 08:39:53 UTC
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

Comment 5 Fedora Update System 2014-11-14 12:03:58 UTC
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).

Comment 6 Fedora Update System 2014-11-16 14:44:25 UTC
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.