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... -Marko _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
On Mon, Feb 28, 2011 at 5:44 PM, Marko Mikkonen <[hidden email]> wrote: > > 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? It looks like the pipeline is stuck somewhere because some of the elements don't receive enough data to complete the preroll. It's usually due to a missing queue element after a tee or a demuxer. Can you provide more hints about the topology of the pipeline you're using? Regards > 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... > > -Marko > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |