mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 11:40:38 +00:00
40 lines
1.4 KiB
Text
40 lines
1.4 KiB
Text
|
72)
|
||
|
|
||
|
[-pipeline---------------------------------------------------------------------------------------------]
|
||
|
! [-bin-----------------------------] [-thread---------] !
|
||
|
! ! [--------] [---------] ! [------] [---------] [------] ! [--------] ! !
|
||
|
! ! !faksesrc! !identity1! ! !queue1! !identity2! !queue2! ! !fakesink! ! !
|
||
|
! ! ! src --- sink * src --- sink n src -- sink src -- sink src -- sink ! ! !
|
||
|
! ! [--------] [---------] ! [------] [---------] [------] ! [--------] ! !
|
||
|
! [---------------------------------] [----------------] !
|
||
|
[------------------------------------------------------------------------------------------------------]
|
||
|
|
||
|
|
||
|
-----
|
||
|
Ideally, you'd end up with the following sub-pipelines
|
||
|
|
||
|
pipeline:
|
||
|
fakesrc -> identity1 -> queue1
|
||
|
queue1 -> identity2 -> queue2
|
||
|
|
||
|
thread:
|
||
|
queue2 -> fakesink
|
||
|
|
||
|
|
||
|
They'd be scheduled as following:
|
||
|
|
||
|
fakesrc: passive chained, pulled by identity1
|
||
|
identity1: loopfunc cothreaded, ENTRY
|
||
|
queue1:sink: passive chained, pushed by identity1
|
||
|
|
||
|
queue1:src: _get-based iteration, ENTRY
|
||
|
identity2: chained by queue1
|
||
|
queue2:src: passively chained, pushed by identity2
|
||
|
|
||
|
queue2:sink: passively chained, pulled by fakesink
|
||
|
fakesink: loopfunc cothreaded, ENTRY
|
||
|
|
||
|
|
||
|
-----
|
||
|
Most likely, we'd end up with the following
|