[gst-devel] Mixing starting/stopping/disconnecting sources: multiqueue + freeze?

Sjoerd Op 't Land sjoerd at intercue.nl
Sat Jan 2 14:50:55 CET 2010


Op 2 jan 2010, om 13:42 heeft Frans van Berckel het volgende geschreven:

> Not knowing it in the details but did you checkout the GStreamer
> Non-Linear plugins?
>
> http://gstreamer.freedesktop.org/modules/gnonlin.html
>
> It contains a set of plug-ins for GStreamer to ease the creation of
> multimedia editors, or any other application where a timeline-oriented
> use of GStreamer makes sense.
>
> http://wiki.pitivi.org/wiki/GNonLin_documentation
Looks interesting, both GNonLine and PiTiVi. Perhaps this will become  
useful in a later stage, to 'playback' live cuts and to enable post- 
production. For the moment, we are looking for live seamless (low- 
latency) cutting and fading between sources. If I understand the  
GNonLin documentation correctly, this is not possible with GNonLin  
specifically. Correct?

Thanks for your help,
Sjoerd

>
> Thanks,
>
>
> Frans van Berckel
>
> On Sat, 2010-01-02 at 13:05 +0100, Sjoerd Op 't Land wrote:
>> 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
>
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast  
> and easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>





More information about the gstreamer-devel mailing list