Pipeline stuck in gst_base_sink_wait_preroll
mmikkone at mail.student.oulu.fi
Mon Feb 28 07:44:03 PST 2011
I'm developing a decoder plugin and my test pipeline (in a custom test
application) looks like this: filesrc ! my_plugin ! decoderbin2 !
directaudiosink. My_element is outputing an mp3 encoded audio.
Decoderbin has constructed a correct internal pipeline as far as I can
see it. Furthermore I have NOT implemented pull mode for my element yet
(only chain function). When I run the program with debug level 5, it
stops at function gst_base_sink_wait_preroll:
0:00:26.845703000 4408 1f460fd8 DEBUG basesink
gstbasesink.c:2181:gst_base_sink_wait_preroll:<audio_sink> waiting in
preroll for flush or PLAYING
Now, I HAVE set the pipeline to playing state, but somehow
directaudiosink doesn't want to move to that state. Is the reason that I
have not implemented pull mode for my element or should the pipeline
work well in push mode, too? Why does that function wait forever? If the
pipeline should work in push mode too, I'd like to know how is that
possible (what happens behind the scenes, e.g. how does the filesrc know
what/when to output when there's nothing pulling the data). You see I'm
still an amateur and I'd just like to learn.
Some more info: I can see the filesrc outputting two chunks of data.
From this data (after the data has gone through my element) the
decoderbin has been able to construct the pipeline using typefind. And
thanks to this data the audio sink has been able to preroll. But no more
data is coming from filesrc to my plugin...
More information about the gstreamer-devel