GStreamer - pipeline design - multi-threading

Bogdan Pavkovic bogprs at
Tue May 30 09:02:34 UTC 2017

Hi all,

I realized that an attachment cannot be seen from the archives so here is
the link just in case...!h8wFVarA!leTOvjLg4VhBxX-wNPY3_w8jcFE-W-vspXw7FOT_SAU


On Tue, May 30, 2017 at 10:49 AM, Bogdan Pavkovic <bogprs at> wrote:

> Dear all,
> Here is the diagram for your convenience.
> I hope there is someone that can answer at least some subset of my
> questions.
> Thanks again in advance.
> Best,
> Bogdan
> ‚Äč
> On Fri, May 26, 2017 at 1:15 PM, Bogdan Pavkovic <bogprs at> wrote:
>> Dear all,
>> I am a newby to GStremer Community
>> but I managed to thoroughly go through ALL offered tutorials.
>> GOAL: I need to design a performance-critical pipeline and create a
>> couple of new filter plugins.
>> Any help will be appreciated.
>> General pipeline is divided in 3 bins: input, core, and output.
>> For the input part we have already completed 4 options: RTP client
>> (existing plugin), MJPEG, V2L, and FILE (existing).
>> For the output part we use Wayland.
>> Core part is processing which roughly is done in 3 stages:
>> pre-processing, heavy processing, and some sort of Kalman filtering.
>> Q1: My idea is to make 3 plugins that will form a larger bin. Is this the
>> right way to go?
>> Pre-processing plug-in need to have on-request sink pads since number of
>> input video streams can vary between 1 and 4.
>> Source (output) pads (on request) will be created and linked to
>> consecutive elements on the fly as they appear.
>> Q2: Do all consecutive elements in Core bin need to have on request pads
>> due to non-deterministic number of input videos?
>> Heavy processing plug-in needs to do heavy lifting and we intend to use
>> multi-threading on 4 available cores.
>> Q2: Do we need to use 2 queue elements before each of the pads of this
>> element to separate processing of each video stream?
>> Q3: I understood there are tasks that can do further multi-threading. Can
>> we use them behind a queue element?
>> Q4: If we use 4 tasks, is there a way to signal and sync all of them?
>> i.e. Do we get a signal  when all 4 task outputs are ready?
>> Q5: How can we configure a task to target a specific core?
>> Finaly, Kalman plugin is not calculation intensive and can handle both
>> streams.
>> Q6: Can we somehow undo the queue element? Does it make sense?
>> I can provide a diagram of the proposed pipeline if needed to clarify
>> things.
>> Many thanks in advance.
>> Best regards,
>> Bogdan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list