After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 591677 - Easy codec installation is not working
Easy codec installation is not working
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.10.24
Other Linux
: Normal normal
: 0.10.26
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 591165 (view as bug list)
Depends on: 596183
Blocks:
 
 
Reported: 2009-08-13 11:40 UTC by Sebastien Bacher
Modified: 2009-10-07 15:48 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
uridecodebin-missing-decoder.diff (1.12 KB, patch)
2009-08-13 13:56 UTC, Sebastian Dröge (slomo)
committed Details | Review
the log of the issue, still there after the change (297.43 KB, application/x-gzip)
2009-08-13 14:57 UTC, Sebastien Bacher
  Details
uridecodebin-missing-decoder2.diff (1014 bytes, patch)
2009-08-13 15:45 UTC, Sebastian Dröge (slomo)
committed Details | Review
decodebin2-group-without-pads.diff (5.10 KB, patch)
2009-09-01 14:31 UTC, Sebastian Dröge (slomo)
rejected Details | Review

Description Sebastien Bacher 2009-08-13 11:40:58 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"
Comment 1 Sebastien Bacher 2009-08-13 11:41:45 UTC
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
Comment 2 Bastien Nocera 2009-08-13 11:48:42 UTC
The BBC plugin isn't upstream so please provide me with a way to reproduce the problem.
Comment 3 Sebastien Bacher 2009-08-13 12:01:07 UTC
did you read my previous comment? double click on any mp3 for example
Comment 4 Bastien Nocera 2009-08-13 12:03:19 UTC
What's the output of Totem on the console?
Comment 5 Sebastian Dröge (slomo) 2009-08-13 12:14:35 UTC
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
Comment 6 Sebastien Bacher 2009-08-13 12:29:11 UTC
The bug is there is 2.27.1 too, 2.26.2 works correctly
Comment 7 Sebastian Dröge (slomo) 2009-08-13 13:56:59 UTC
Created attachment 140661 [details] [review]
uridecodebin-missing-decoder.diff
Comment 8 Sebastien Bacher 2009-08-13 14:57:58 UTC
Created attachment 140668 [details]
the log of the issue, still there after the change
Comment 9 Sebastien Bacher 2009-08-13 15:09:31 UTC
<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)
Comment 10 Sebastian Dröge (slomo) 2009-08-13 15:45:11 UTC
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.
Comment 11 Sebastian Dröge (slomo) 2009-08-13 15:45:49 UTC
Created attachment 140670 [details] [review]
uridecodebin-missing-decoder2.diff
Comment 12 Sebastian Dröge (slomo) 2009-08-13 15:49:18 UTC
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...
Comment 13 Sebastian Dröge (slomo) 2009-08-17 16:03:12 UTC
*** Bug 591165 has been marked as a duplicate of this bug. ***
Comment 14 Tim-Philipp Müller 2009-08-18 00:08:39 UTC
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.
Comment 15 Sebastian Dröge (slomo) 2009-08-18 06:22:14 UTC
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.
Comment 16 Sebastian Dröge (slomo) 2009-08-18 08:35:28 UTC
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?
Comment 17 Tim-Philipp Müller 2009-08-18 09:12:19 UTC
> - 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.
Comment 18 Sebastian Dröge (slomo) 2009-09-01 14:31:55 UTC
Created attachment 142249 [details] [review]
decodebin2-group-without-pads.diff

This fixes it for every case I tested...
Comment 19 Sebastian Dröge (slomo) 2009-09-03 13:28:50 UTC
(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 :)
Comment 20 Sebastian Dröge (slomo) 2009-10-07 15:47:22 UTC
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.