[gst-devel] gst-ffmpeg & decodebin

Tom Cooksey thomas.cooksey at trolltech.com
Wed Feb 6 16:33:47 CET 2008


Hi,

Background: I am trying to get the new Qt/KDE Phonon library working on Qtopia 
Core (Qt/Embedded). Linux/Qtopia Core uses the GStreamer backend for Phonon - 
specifically the decodebin element.

I'm having problems getting decodebin (& playbin) to detect & use the ffmpeg 
elements. E.g.

The following works fine:
gst-launch filesrc location=01_Neighborhood_1_Tunnels_.mp3  ! ffdemux_mp3 ! 
ffdec_mp3 ! alsasink

However, using decodebin I get:

$ gst-launch-0.10 filesrc location=01_Neighborhood_1_Tunnels_.mp3 ! 
decodebin ! audioconvert ! alsasink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /pipeline0/decodebin0: A ID3 tag demuxer plugin is 
required to play this stream, but not installed.
Additional debug info:
gstdecodebin.c(792): close_pad_link (): /pipeline0/decodebin0:
No decoder to handle media type 'application/x-id3'
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
FREEING pipeline ...

I also have gst-plugin-ogg & gst-plugin-vorbis installed. When I use decodebin 
with an ogg/vorbis file, it works fine:

$ gst-launch-0.10 filesrc location=Hydrate-Kenny_Beltrey.ogg ! decodebin ! 
audioconvert ! alsasink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock


I've checked my ~/.gstreamer-0.10/registry.x86_64.xml and found the following:
--snip--
 <feature typename="GstElementFactory">
  <name>ffdemux_mp3</name>
  <longname>FFMPEG MPEG audio demuxer</longname>
  <class>Codec/Demuxer</class>
  <description>FFMPEG MPEG audio demuxer</description>
  <author>Wim Taymans &lt;wim at fluendo.com&gt;, Ronald Bultje 
&lt;rbultje at ronald.bitfreak.net&gt;, Edward Hervey 
&lt;bilboed at bilboed.com&gt;</author>
  <padtemplate>
   <nametemplate>video_%02d</nametemplate>
   <direction>src</direction>
   <presence>sometimes</presence>
   <caps>ANY</caps>
  </padtemplate>
  <padtemplate>
   <nametemplate>audio_%02d</nametemplate>
   <direction>src</direction>
   <presence>sometimes</presence>
   <caps>ANY</caps>
  </padtemplate>
  <padtemplate>
   <nametemplate>sink</nametemplate>
   <direction>sink</direction>
   <presence>always</presence>
   <caps>application/x-id3</caps>
  </padtemplate>
 </feature>
...
 <feature typename="GstTypeFindFactory">
  <name>application/x-id3v1</name>
  <rank>257</rank>
  <caps>application/x-id3</caps>
  <extension>mp3</extension>
  <extension>mp2</extension>
  <extension>mp1</extension>
  <extension>mpga</extension>
  <extension>ogg</extension>
  <extension>flac</extension>
  <extension>tta</extension>
 </feature>
--snip--

So does this mean ffmpeg has registered an element for application/x-id3?

I have tried this on ARM (OpenEmbedded), amd64 (Gentoo - my main devel PC) & 
x86 (Kubuntu). I have searched the mailing list archives and found someone 
else posting what I beleive is the same problem on 2007-01-05 in 
thread "using fffmpeg demuxers in playbin". I assume the problem is somewhere 
in the gst-ffmpeg code, where it registers the various elements (as hinted at 
in "using fffmpeg demuxers in playbin"). 

Questions:
1) Has this already been fixed? I'm using gst-ffmpeg 10.3.
2) If not, is it worth debuging this & sending in a patch? Would it ever be 
accepted? I smell patent politics with this bug. Specifically, gstreamer 
should prefer a patent-free plugin over a plugin which has a merky patent 
status.
3) If it's worth me looking into this, any recomendations where to start 
looking? (I looked at my first gst source file today :-) )



Cheers,

Tom





More information about the gstreamer-devel mailing list