diff --git a/docs/random/sources b/docs/random/sources index 281db05033..8a3cd887ef 100644 --- a/docs/random/sources +++ b/docs/random/sources @@ -30,7 +30,7 @@ Chained (current implementation): ! gst_pad_push !---------------->! ! - ! gst_pad_chain (pad1->peer) + ! pad1->chainfunc (pad1->peer) !------------------------------->! ! ! : : @@ -190,6 +190,59 @@ again in the next iteration. : +(alternative implementation): + + + bin cothread1 src pad1 pad2 cothread2 plugin + ! (src) (= pad1->peer) (plugin) + gst_bin_iterate + ! + ! (first entry) + ! + ! cothread_switch + !---------------->! gst_pad_pull + !------------------------------------------------>! + ? ! + !<------------------------------! + ! + ! (create buffer) + ! + ! gst_pad_push + !------------------------------>! + ! (bufpen filled) + (return buffer) ! + !<------------------------------------------------! + ! + ! pad_chain + !--------------------------------------! cothread switch + |---------------------->! + ! gst_pad_pull (pad2) + ! + !<----------! + ! + ! (get buffer from bufpen) + ! + !---------->! + ! pad2->chainfunc + !------------->! + ! + : + + : + !<-------------! + ! gst_pad_pull (pad2) + !<----------! + ! + ! (bufpen empty) + !<-----------! + ! cothread switch + !<------------------------------------! + !<----------------! + ! + iteration ends + ! + : + ----------------------------------------------------------------------------------------------- 1b) Simple push-function based with multiple output