pad: change the semantics of get/pull_range a little
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 16 Mar 2012 20:37:10 +0000 (21:37 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 16 Mar 2012 20:37:10 +0000 (21:37 +0100)
commitdb1318ab4a11b640e5e05d9e135cc66092ac2abb
treebba723170395d15a3d40cbba3f89ee97c903545e
parentb54b886fc54e4e1d7ff5f298029e2b6586135f4f
pad: change the semantics of get/pull_range a little

Make it so that one can specify a buffer for get/pull_range where the downstream
element should write into. When passing NULL, upstream should allocate a buffer,
like in 0.10.
We also need to change the probes a little because before the pull probe, there
could already be a buffer passed. This then allows us to use the same PROBE
macro for before and after pulling.
While we're at the probes, make the query probe more powerful by handling the
GST_PAD_PROBE_DROP return value. Returning _DROP from a query probe will now
return TRUE upstream and will not forward the probe to the peer or handler.
Also handle _DROP for get/pull_range properly by not dispatching to the
peer/handler or by generating EOS when the probe returns DROP and no buffer.
Make filesrc handle the non-NULL buffer passed in the get_range function and
skip the allocation in that case, writing directly into the downstream provided
buffer.
Update tests because now we need to make sure to not pass a random value in the
buffer pointer to get/pull_range
gst/gstpad.c
gst/gstpad.h
libs/gst/base/gstbasesrc.c
libs/gst/base/gstbasetransform.c
plugins/elements/gsttypefindelement.c
tests/check/elements/filesrc.c