GStreamer - pipeline design - multi-threading

Bogdan Pavkovic bogprs at
Fri May 26 11:15:58 UTC 2017

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
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

Many thanks in advance.

Best regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list