GNOME Bugzilla – Bug 591677
Easy codec installation is not working
Last modified: 2009-10-07 15:48:14 UTC
The bug has been opened on https://bugs.launchpad.net/bugs/412927 "Open totem click on the drop down box called playlist Select the bbc plugin from the dropdown menu select any track (they are all mp3) See the dialog box that reads: An error occurred Internal data flow error. totem 2.27.2-0ubuntu3"
The issue is not specific to the bbc option but any mp3 will trigger the error where rhythmbox works correctly and open the codec installation dialog
The BBC plugin isn't upstream so please provide me with a way to reproduce the problem.
did you read my previous comment? double click on any mp3 for example
What's the output of Totem on the console?
Yes, something seems to be broken there: 0:00:01.720325644 1745 0x9b16c0 LOG totem bacon-video-widget-gst-0.10.c:1770:bvw_bus_message_cb: Handling error message from element decodebin20 0:00:01.720387454 1745 0x9b16c0 ERROR totem bacon-video-widget-gst-0.10.c:351:bvw_error_msg: message = A application/x-gzip decoder plugin is required to play this stream, but not installed. 0:00:01.720436901 1745 0x9b16c0 ERROR totem bacon-video-widget-gst-0.10.c:353:bvw_error_msg: domain = 3513 (gst-stream-error-quark) 0:00:01.720476920 1745 0x9b16c0 ERROR totem bacon-video-widget-gst-0.10.c:354:bvw_error_msg: code = 6 0:00:01.720513517 1745 0x9b16c0 ERROR totem bacon-video-widget-gst-0.10.c:355:bvw_error_msg: debug = gstdecodebin2.c(1128): analyze_new_pad (): /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20: No decoder to handle media type 'application/x-gzip' 0:00:01.720556539 1745 0x9b16c0 ERROR totem bacon-video-widget-gst-0.10.c:356:bvw_error_msg: source = <decodebin20> 0:00:01.720599911 1745 0x9b16c0 ERROR totem bacon-video-widget-gst-0.10.c:357:bvw_error_msg: uri = file:///home/slomo/tmp/tmp/tmp/farsight2_0.0.7.orig.tar.gz ** Message: Error: A application/x-gzip decoder plugin is required to play this stream, but not installed. gstdecodebin2.c(1128): analyze_new_pad (): /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20: No decoder to handle media type 'application/x-gzip' 0:00:01.720706419 1745 0x9b16c0 DEBUG totem bacon-video-widget-gst-0.10.c:1565:bvw_check_missing_plugins_error: no missing-plugin messages 0:00:01.720746508 1745 0x9b16c0 LOG totem bacon-video-widget-gst-0.10.c:2922:bvw_error_from_gst_error: resolving error message error message from element 'decodebin20': GstMessageError, gerror=(GstGError)NULL, debug=(string)"gstdecodebin2.c\(1128\):\ analyze_new_pad\ \(\):\ /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20:\012No\ decoder\ to\ handle\ media\ type\ \'application/x-gzip\'"; 0:00:01.720839606 1745 0x9b16c0 LOG totem bacon-video-widget-gst-0.10.c:3002:bvw_error_from_gst_error: no missing plugin messages, posting generic error
The bug is there is 2.27.1 too, 2.26.2 works correctly
Created attachment 140661 [details] [review] uridecodebin-missing-decoder.diff
Created attachment 140668 [details] the log of the issue, still there after the change
<slomo> seb128: please reopen and say that my patch only fixes half of this bug (it doesn't fix the case where things could already be plugged together, it only fixes the case where the first element after the source is missing)
commit a6b1e0b6450ee80ecf263a398432d95c812d6952 Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> Date: Thu Aug 13 17:42:07 2009 +0200 uridecodebin: Post a correct error message for unknown types Before we had STREAM/WRONG_TYPE but it's really CORE/MISSING_PLUGIN because a plugin is missing and nothing else is wrong. Also make it an error instead of a warning. Really fixes bug #591677.
Created attachment 140670 [details] [review] uridecodebin-missing-decoder2.diff
Totem should also not rely on STREAM/WRONG_TYPE to be posted from playbin itself, it could also be posted by some internal element of playbin for the same reason. Also the message could as well be a warning instead of an error... This is in bacon-video-widget-gst-0.10.c:1598 btw...
*** Bug 591165 has been marked as a duplicate of this bug. ***
I don't think this is quite right yet - in particular this commit: commit a6b1e0b6450ee80ecf263a398432d95c812d6952 Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> Date: Thu Aug 13 17:42:07 2009 +0200 uridecodebin: Post a correct error message for unknown types Before we had STREAM/WRONG_TYPE but it's really CORE/MISSING_PLUGIN because a plugin is missing and nothing else is wrong. Also make it an error instead of a warning. Really fixes bug #591677. doesn't look entirely correct. Now a stream for which there is no decoder available will error out fatally, while it should continue playing the streams it can play instead and only error out if there is no recognised stream. I have a 3gpp file here which doesn't play at all because I don't have an AMR-WB decoder installed, but it should play at least the video.
Right, that part of the change is wrong. Sorry. I'll revert it to a warning again and then the remaining part should be handled in totem (see bug #592167). Totem should also look at warning messages, not just error messages. commit 6aa731cb48808f2eb50fd342b9c7f2be11555adc Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> Date: Tue Aug 18 08:20:28 2009 +0200 uridecodebin: Make missing plugins emit a warning message, not an error mess The problem with an error message is, that it will stop playback completely while it could be that only a audio decoder plugin is missing and the video could be played with the available plugins. See bug #591677.
Ok, so apparently this is not correct. According to Tim's comment in bug #592167 uridecodebin should probably do something like this: - If it's not pre-rolled yet, post a error message after the missing plugin message, if it's pre-rolled only post a warning message after the missing plugin message (how to detect pre-rolled state?) - If the source plugin is missing it needs to be CORE/MISSING_PLUGIN, if something else is missing it should be STREAM/CODEC_NOT_FOUND Tim, is this correct?
> - If it's not pre-rolled yet, post a error message after the missing plugin > message, if it's pre-rolled only post a warning message after the missing > plugin message (how to detect pre-rolled state?) That would be when the pads are exposed / no-more-pads etc. I guess. Uridecodebin should only error out if it didn't expose at least one audio or video pad IMHO. It's all a bit tricky to aggregate though, esp. now that we have three layers (decodebin2, uridecodebin, playbin2) instead of two. I don't remember what exactly we did for decodebin1/playbin1, just remember that it was quite messy/tricky. > - If the source plugin is missing it needs to be CORE/MISSING_PLUGIN, if > something else is missing it should be STREAM/CODEC_NOT_FOUND Well, I wouldn't claim that it has been *designed* this way, but reading the totem code this seems how it used to work, and it makes sense to me. Having said that, code probably shouldn't rely on this subtle distinction to work correctly, but I think it's ok to make an assumption or two here on the totem side and fix it when we run into a case where it doesn't work right.
Created attachment 142249 [details] [review] decodebin2-group-without-pads.diff This fixes it for every case I tested...
(In reply to comment #18) > Created an attachment (id=142249) [details] > decodebin2-group-without-pads.diff > > This fixes it for every case I tested... Unfortunately it breaks other things. I guess I have to rewrite parts of how autoplugging works in decodebin2 to get this fixed :)
Fixed now: commit cf9c6a2271ad35e422c8fba6af842e3ea309d82d Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> Date: Sat Sep 26 12:17:49 2009 +0200 decodebin2: Rewrite autoplugging and how groups of pads are exposed This now keeps track of everything that is going on, creates a tree of chains and groups to allow "demuxer after demuxer" scenarios and allows chained Oggs with multiple streams (needs oggdemux or playbin2 fi Also document everything in detail and give a general overview of what decodebin2 is doing at the top of the sources. Fixes bug #596183, #563828 and #591677.