From 7d75d3ef4181de6658fe7d4dbbe633082257315d Mon Sep 17 00:00:00 2001 From: Petr Kulhavy Date: Mon, 14 Nov 2016 15:35:50 +0100 Subject: [PATCH] gstbuffer: reset buffer to its original size if intact Enhance default_reset_buffer() to resize the buffer to its full size if the memory hasn't changed. This allows to reuse the buffer even if the offset has changed or the size has shrunk, rather than freeing the buffer. Change related to: https://bugzilla.gnome.org/show_bug.cgi?id=772841 --- gst/gstbufferpool.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c index 3d9123621b..6db0f5d2cc 100644 --- a/gst/gstbufferpool.c +++ b/gst/gstbufferpool.c @@ -1226,6 +1226,10 @@ default_reset_buffer (GstBufferPool * pool, GstBuffer * buffer) GST_BUFFER_OFFSET (buffer) = GST_BUFFER_OFFSET_NONE; GST_BUFFER_OFFSET_END (buffer) = GST_BUFFER_OFFSET_NONE; + /* if the memory is intact reset the size to the full size */ + if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY)) + gst_buffer_resize (buffer, 0, pool->priv->size); + /* remove all metadata without the POOLED flag */ gst_buffer_foreach_meta (buffer, remove_meta_unpooled, pool); }