[gst-devel] gstmpegdemux no_more_pads

Tim Müller t.i.m at zen.co.uk
Thu Feb 28 13:33:49 CET 2008

On Thu, 2008-02-28 at 17:44 +0530, Mohit Garg wrote:

> I am using gstreamer to work with MPEG-1 streams. However, I am unable
> to get it working. The pipeline hangs and does not go to a PLAYING
> state. I suspect the issues to be mpegdemux not sending no_more_pads()
> and hence decodebin not being able to change stage to PLAYING which
> causes filesink to be stuck in PAUSED and hence, not coming out of
> preroll-ing.
> e.g. try this pipeline:
> gst-launch -v gnomevfssrc
> location="http://samples.mplayerhq.hu/MPEG1/mpeg_demuxer_crash.mpg" !
> decodebin name=d ! filesink location=aud d. ! filesink location=vid

You need queues here, ie.

 decodebin name=d  \
    d. ! queue ! filesink location=audio.dump  \
    d. ! queue ! filesink location=video.dump

(you can't really assume that the first one will be an audio stream and
the second a video stream though; you can use mpegdemux/dvddemux and
specify that pad names directly, however, but then you also need to know
which streams exist to get the right pad names; alternatively, if you
know the format of the audio, you can add filter caps before the queue
and make it pick the right pad that way).


> Questions:
>         Is this a known bug? If yes, is there a known/recommended workaround?
>         mpegdemux has a RANK of secondary and I was expecting that it would work straightaway while ffdemux_mpeg has a rank of NONE and hence decodebin does not pick it up. How is the RANK of elements decided?
> (I am using gst-plugins-ugly-0.10.6)

More information about the gstreamer-devel mailing list