Problem with GStreamer 1.0, EOS and set_locked_state

Felix Krull f_krull at gmx.de
Tue Nov 20 11:44:10 PST 2012


Hi all,

I've been porting my GStreamer-using project from 0.10 (using
python-gst) to 1.0 (using python-gi) (see [1], specifically the gst-1.0
branch). The basic porting was pretty straightforward but I've run into
a difference compared to 0.10 that I can't seem to figure out:
Specifically, I'm creating a single pipeline (with filesrc, rganalysis
and fakesink elements) that I send a set of files through to calculate
album ReplayGain data. The catch is that the rganalysis element can
never go to NULL or READY states after I've started the pipeline for the
first time (that's also in the documentation [2]). So when I receive an
EOS event, I lock rganalysis's state, switch the pipeline to READY,
change the file, unlock rganalysis and go to PLAYING again. With 0.10,
that worked; with 1.0, it doesn't, the pipeline seems to be stuck and
doesn't return to PLAYING. I've tried to condense the problem as far as
possible [3]; the identity element serves as a stand-in for rganalysis
here. The 0.10 example works as expected (repeatedly printing "eos"),
the 1.0 example stops after the first "eos". The issue must be somehow
related to the state locking since the example works without the
set_locked_state calls.

So ultimately, is this a bug or intended behaviour? And if it is
intended, how do I work around it?

Regards, Felix

[1] https://bitbucket.org/fk/rgain
[2]
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis--reference-level
[3] https://gist.github.com/4118838


More information about the gstreamer-devel mailing list