Reorder buffers from different src pad
Tim-Philipp Müller
t.i.m at zen.co.uk
Mon Aug 26 03:43:06 PDT 2013
On Mon, 2013-08-26 at 08:37 +0000, Demeyer Jonathan wrote:
Hi,
btw, I assume you have a queue in each branch after the tee, right? Just
checking, since it's not in your diagram.
Cheers
-Tim
> Nice, because I already started to implement it myself (without succeeding yet).
>
> I looked to videomixer as inspiration (and so use GstCollectPads2 on Gst0.10) but I didn't extend GstPad (If you can point me to another good example, you are welcome).
>
> As a source, we use a buffer pool and It get stuck because the buffers from one branch are not released.
> In the logs, I found something strange :
> When first called, the _collected function have the correct number of "g_slist_length(pads->data)" i.e. 2
>
> 0:00:00.598074973 31601 0x81300c0 DEBUG collectpads2 gstcollectpads2.c:1969:gst_collect_pads2_chain:<collectpads20> Pad mix:sink_1 resuming
>
> and then, the function _collected is called while g_slist_length(pads->data) == 1 (altough I can see
>
> What can cause the pad resuming ?
>
> More log in attachment.
>
> FYI : The pipeline to do heavy load processing on several cores (and have modularity).
>
> Thanks,
>
> Jonathan
> ________________________________________
> De : gstreamer-devel-bounces+jonathan.demeyer=macq.eu at lists.freedesktop.org [gstreamer-devel-bounces+jonathan.demeyer=macq.eu at lists.freedesktop.org] de la part de Tim-Philipp Müller [t.i.m at zen.co.uk]
> Date d'envoi : lundi 26 août 2013 00:15
> À : gstreamer-devel at lists.freedesktop.org
> Objet : Re: Reorder buffers from different src pad
>
> On Sun, 2013-08-25 at 20:10 +0000, Demeyer Jonathan wrote:
>
> Hi Jonathan,
>
> > I'm trying to find an element for the following pipeline :
> >
> > / filterA -> processingA \
> > src -> tee reorder
> > -> sink
> > \ filterB -> processingB /
> >
> > The "reorder" plugin will be there to reorder buffers based on their
> > timestamp. It will simply compare buffers on both branches and decide
> > which one it has to send first.
> > In the example, filterA and filterB drop buffers alternatively.
> > ProcessingA and processingB can have different "processing time". A
> > buffer arriving first in the tee and taking the A branch may arrive
> > after a later one taking the B branch. The element has to wait for the
> > buffer coming from A.
> >
> > Does this plugin already exist ? (the question is for a video flow but
> > it can also be signal agnostic)
> > I saw "funnel" but this plugin doesn't reorder buffers (AFAIU).
>
> I'm not aware of such an element, but it should be fairly easy to write.
> It's basically like a muxer. You can just use GstCollectPads, which take
> care of waiting for buffers, and then decide which one you want to pick
> and push out.
>
> Out of curiosity - can you tell us a bit more about the underlying
> functionality, what this is for?
>
> Cheers
> -Tim
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
More information about the gstreamer-devel
mailing list