[gst-devel] PULL mode and PUSH mode

LRN lrn1986 at gmail.com
Tue Jun 23 18:43:18 CEST 2009

On 23.06.2009 17:01, Arnab Samanta wrote:
>   Hello Developers,
>   I have a very basic doubt mentioned below . Kindly clarify.
>   Can we have a pipeline with some of its elements in PULL mode and
>   some of its elements in PUSH mode ?
>   lets say we have a pipeline as follows
>   gst-launch src ! B ! C ! D ! E ! sink
>   In which, D is the plugin in PULL mode and rest all plugins are in PUSH mode .
>   In this case , i guess the gst_pad_push() of plugin C is not dependant on gst_pad_push()
>   of plugin E as in between the plugin D itself pulls the data and the gst_pad_push() of plugin C
>   returns irrespective of wheather the gst_pad_push() of plugin E is done or not .
>   Is my above understanding correct ? Please clarify.
gst_pad_push() of plugin C seems to be irrelevant, because "src ! B ! C 
! D" part of the pipeline works in pull mode, which means that 
gst_pad_push() will never be called.

Push mode: gst_pad_push() -> _chain()
Pull mode: _get_range() <- gst_pad_pull_range()
Pull in upstream, push in downstream: _get_range() <- 
gst_pad_pull_range(), _get_range() <- gst_pad_pull_range(), 
gst_pad_push() -> _chain(), gst_pad_push() -> _chain()

P.S. At least i think so.

More information about the gstreamer-devel mailing list