GNOME Bugzilla – Bug 669579
[0.11] - strange behaviour with uridecodebin and decodebin
Last modified: 2012-02-09 09:28:31 UTC
Created attachment 206992 [details] PNG showing pipeline Attached is png showing what happens when I try to remux a vorbis file in Transmageddon. As you see from the image the audio caps is set on uridecodebin, but it seems on decodebin the audiocaps is set back to audio/x-raw. What I do not understand though is that when I try to do this with gst-launch: gst-launch-0.11 -v uridecodebin uri="file:///home/cschalle/Videos/output.ogg" caps="audio/x-vorbis" ! oggmux ! filesink location="test.ogg" It seems to do the right thing.
One important point, the attached png has the streamheader caps edited out of the dot file to make the png viewable, so the streamheader value is set in the caps statement of uridecodebin even if this png doesn't say so.
Could you get a debug log of both runs with GST_DEBUG=decodebin:5 (at least)?
Created attachment 207070 [details] log of failed remux decodebin:5
Hm, the debug output from gstdecodebin2.c:2511 is missing. Could you try with GST_DEBUG=decodebin:9 or if everything else fails with GST_DEBUG=*:9 ? :)
Created attachment 207077 [details] GST_DEBUG=decodebin:9 log
Created attachment 207091 [details] log of working gst-launch pipeline remuxing
Created attachment 207108 [details] GST_DEBUG_OBJECT (dbin, "caps %" GST_PTR_FORMAT " decodebin2 caps %" GST_PTR_FORMAT, caps, dbin->caps); added to code
Ok, so the problem was that I set uridecodebin to state PAUSED before setting the caps attribute. When I set the attribute first, then change the state things works fine. Is this still a bug? or is it simply not allowed to set attributes once an element has been set to PAUSED?
Since I am expecting this issue to be resolved as an application error I have filled a new bug for the current problem: https://bugzilla.gnome.org/show_bug.cgi?id=669683
In the case of uridecodebin it is not allowed to set the caps property after setting the element to PAUSED. That's not a bug. Let's close this bug then and handle everything else in the other bug?