[gst-devel] Mixing starting/stopping/disconnecting sources: multiqueue + freeze?
Sjoerd Op 't Land
sjoerd at intercue.nl
Sat Jan 2 13:05:13 CET 2010
Hello all,
For a live video mixer/switcher I would like to perform mixing/
switching between multiple asynchronous and starting/stopping/
(dis)connecting video sources. In hardware, this is normally done by a
TBC (Time Base Corrector). What would be the way to go in GStreamer?
This is the solution I thought up thus far: every source is a pipeline
that can be started and stopped at will. Then, a multiqueue to
simultaneously output a frame from each source:
source1(pipeline) -> | | -> | |
| multiqueue | | videomixer | -> sink
source2(pipeline) -> | | -> | |
However, it seems from experiments that multiqueue only starts when it
has received one buffer from every source. Should I insert something
like the 'freeze' element to feed the multiqueue with a continuous
stream? (Not the current 'freeze' element, because it freezes always,
and not only a stopped source. Furthermore, it should increase or
remove timestamps.)
source1(pipeline) -> 'freeze' -> | | -> | |
| multiqueue | | videomixer | ->
sink
source2(pipeline) -> 'freeze' -> | | -> | |
Does such an element exist? The existence of the GST_BUFFER_FLAG_GAP
makes me think that it must exist, but I cannot find it. Is pull-based
scheduling possible for such a solution?
Thanks in advance for any hints or suggestions,
Sjoerd
More information about the gstreamer-devel
mailing list