gst_fake_sink_render: who releases the incoming buffers/memory?

Tim Müller tim at
Tue May 2 22:30:46 UTC 2017

On Tue, 2017-05-02 at 23:59 +0200, Martin Maurer wrote:

Hi Martin,

> gst-launch-1.0 videotestsrc num-buffers=100 ! xxx ! fakesink
> silent=false -v
> Videotestsrc is generating buffers, xxx (not relevant what it is,
> e.g. 
> openh264enc) is forwarding buffers
> and fakesink is consuming the buffers.
> Looking into latest source code, function gst_fake_sink_render, I
> can't find where the buffers/memory is released.
> Is it done somewhere outside the fakesink source code?
> Where do I find this place, where fakesink render function is called
> and buffer/memory is released afterwards?
> (don't know if relevant: I have internal leak checking on and use
> also some GST_DEBUG options)
> Is there some documentation which explains such deep internals of
> Gstreamer?

The fakesink element takes ownership of the buffer pushed onto its
sinkpad (like all elements), and the GstBaseSink class will take care
of calling the fakesink element's render function and then later of
releasing the buffer.

The "enable-last-sample" property defaults to true, so basesink will
hold onto the last buffer until the next buffer comes in, unless this
is disabled.

Tim Müller, Centricular Ltd -

More information about the gstreamer-devel mailing list