GNOME Bugzilla – Bug 770186
no human readable error when decoder not found
Last modified: 2016-08-24 11:30:16 UTC
When GStreamer doesn't have a proper plugin to decode media (e.g. an MP3 file from Banshee), no human-readable error message is produced. This makes it much more difficult to identify the problem. In the example situation above, Banshee failing to play an MP3 because no plugin is installed to handle MP3 decoding, this appears to be the only error produced AT ALL other than a red "X" icon appearing in the Banshee UI: "(Banshee:15178): GStreamer-CRITICAL **: gst_element_query: assertion 'GST_IS_ELEMENT (element)' failed" This is not a useful error message for anyone other than a developer. It should be more verbose about what is ACTUALLY wrong (there is no plugin installed which can handle the media).
Thanks for the bug report. > "(Banshee:15178): GStreamer-CRITICAL **: gst_element_query: assertion > 'GST_IS_ELEMENT (element)' failed" > > This is not a useful error message for anyone other than a developer. It > should be more verbose about what is ACTUALLY wrong (there is no plugin > installed which can handle the media). This is not an error message at all, it's a critical assertion that indicates a programming error in some piece of code. We would need a stack trace from the critical to know which piece of code triggers it and if it's in Banshee or GStreamer. If you know how to use gdb you can break on g_logv to get this. I don't know what GStreamer pipeline Banshee uses internally, but I assume it's playbin. Here's the kind of messages the application gets in this case: gst-launch-1.0 playbin uri=file:///Song.mp3 Missing element: MPEG-1 Layer 3 (MP3) decoder [missing-plugin message on the bus] WARNING: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: No decoder available for type 'audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)44100, channels=(int)2, parsed=(boolean)true' [warning message on the bus, this could contain a description as well, as above] ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: Your GStreamer installation is missing a plug-in. [error message on the bus] Additional debug info: [part of the error message, but for the developer, not something to ever show to a user] gsturidecodebin.c(1006): no_more_pads_full (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: no suitable plugins found: gstdecodebin2.c(4565): gst_decode_bin_expose (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0: no suitable plugins found: Missing decoder: MPEG-1 Layer 3 (MP3) (audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)44100, channels=(int)2, parsed=(boolean)true) So the lower-level elements (uridecodebin, decodebin) actually show a useful error message, specifying which decoder/decoders is/are missing, but playbin itself just says 'Your GStreamer installation is missing a plugin.'. This looks like a duplicate of bug #679462 to me then. We can and should certainly improve this, but Banshee developers have all the information to improve this on their end too (from the missing-plugin message, they can even call the distro to ask it to install the missing plugins).
It may be worth it to note that I've opened bug #770187 against Banshee regarding the lack of error messaging at the UI level. I'll take a look back here when I have a little more time and see if I can figure out any other useful steps to take.
Ok, thanks! *** This bug has been marked as a duplicate of bug 679462 ***