[gst-devel] gst-ffmpeg & decodebin

Tom Cooksey thomas.cooksey at trolltech.com
Wed Feb 6 19:33:59 CET 2008

> Hi Tom,
> There is a list defining the rank on a per codec basis in one of the
> gst-ffmpeg header files if I remember correctly. The reason it got
> disabled back in the day was because if you tried seeking in a mp3 file
> using that decoder you would get an error and the application would
> crash. This might not be the case anymore with the new mp3parse element
> taking care of the seeking, but I don't think anyone has verified.
Yep, got it - gstffmpegdec.c:2301 & gstffmpegdemux.c:1505. At 
gstffmpegdemux:1502 there's a comment saying:

   /* Set the rank of demuxers know to work to MARGINAL.
     * Set demuxers for which we already have another implementation to NONE
     * Set All others to NONE*/

My personal view point is that this is the wrong behaviour. Only demuxers 
known _not_ to work should have rank set to NONE, and others should be given 
MARGINAL. Give GStreamer a fighting chance to play the file. IMO, an 
occasional segfault for some people is better than never playing the media. 
As mentioned, if a user does experience a segfault, they can just install 
another plugin with a higher rank. It might also highlight bugs in ffmpeg & 
encorage them to be fixed. :-)

> If you are using gst-ffmpeg in your project you can of course change the
> rank of any of the codecs easily for your own build/setup if you so
> prefer.

Well... This is tricky. Qt is using GStreamer as it's default phonon back end 
(for Linux.. at the moment), so all Qt applications using phonon on Linux 
will be using GStreamer. I don't want to run into the situation where someone 
writes a media player using phonon, but nobody uses it becuse it can't play a 
file mplayer, xine or vlc can play. I've been told the KDE devs have written 
their own phonon back-end for xinelib - so I'm not sure which phonon backend 
KDE applications will be using. For Qt/Embedded, we have to use GStreamer 
because we're seeing a lot of embedded boards shipping with GStreamer decode 
elements which use hardware acceleration specific to those boards.



More information about the gstreamer-devel mailing list