gst_element_query_duration() fails in pre-rolled partial pipeline
Paddy
pat.blanchon at gmail.com
Mon May 20 07:59:22 PDT 2013
OK I think I've got it working.
I tried setting the pipeline state to paused (as well as the bin) but that
made no difference.
I added a tee & a fakesink to the bin & linked these to decodebin2 pads in
the pad added handler. The ghostpad was created from another tee request pad
& blocked as before. My duration query & seeks now work.
Bu I still don't know why following the description below didn't work.
Prerolling a partial pipeline
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.---------. .---------. .----------.
| filesrc | | demuxer | .-----. | decoder1 |
| src -> sink src1 ->|queue|-> sink src
'---------' | | '-----' '----------' X
| | .----------.
| | .-----. | decoder2 |
| src2 ->|queue|-> sink src
'---------' '-----' '----------' X
The purpose is to create the pipeline dynamically up to the
decoders but not yet connect them to a sink and without losing
any data.
To do this, the source pads of the decoders is blocked so that no
events or buffers can escape and we don't interrupt the stream.
When all of the dynamic pad are created (no-more-pads emited by the
branching point, ie, the demuxer or the queues filled) and the pads
are blocked (blocked callback received) the pipeline is completely
prerolled.
It should then be possible to perform the following actions on the
prerolled pipeline:
- query duration/position
- perform a flushing seek to preroll a new position
- connect other elements and unblock the blocked pads.
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/gst-element-query-duration-fails-in-pre-rolled-partial-pipeline-tp4659994p4660000.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
More information about the gstreamer-devel
mailing list