[gst-devel] State changes from PLAY -> READY -> PLAY only work with mad plugin?

Georg Sauthoff g_sauthoff at web.de
Thu Mar 4 12:47:13 CET 2010


Hi,

I am playing around with the gstreamer API and currently I am trying to
make a pipeline stop (works) and make it to play from the beginning
again (works just in one case).

In the test program I construct the pipeline via:

pipeline = gst_parse_launch(argv[1], &error);

With this example

filesrc location=some.mp3 ! mad ! audioconvert ! audioresample ! alsasink

it is no problem to to command pipeline state changes

via

gst_element_set_state(pipeline, state);

in such a way

GST_STATE_PLAYING -> READY -> PLAYING

or

PLAYING -> READY -> PAUSED -> PLAYING

With the above pipeline, these state changes work like expected.


But with a pipeline like

filesrc location=some.ogg ! oggdemux ! vorbisdec ! audioconvert !  audioresample ! alsasink

or

filesrc location=some.mp3 ! decodebin2 ! audioconvert ! audioresample ! alsasink

the state change sequences fail:


GST_STATE_PLAYING -> READY -> ***FAIL*** PLAYING

or

PLAYING -> READY -> ***FAIL*** PAUSED -> PLAYING

For the ogg vorbis example:

Error was: gstoggdemux.c(3251): gst_ogg_demux_loop ():
/GstPipeline:pipeline0/GstOggDemux:oggdemux0:
stream stopped, reason not-linked message: Internal data stream error.

Which looks to me like, hm, a bit kryptic.

Obviously, I am missing something about the use of the gstreamer
API. What is the problem with the last two
pipelines/state-change-sequences?

Best regards
Georg

PS: I am using gstreamer 0.10 under Ubuntu 9.10.





More information about the gstreamer-devel mailing list