From: Petr Kulhavy Date: Mon, 14 Nov 2016 14:35:50 +0000 (+0100) Subject: gstbuffer: reset buffer to its original size if intact X-Git-Tag: 1.16.2~434 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7d75d3ef4181de6658fe7d4dbbe633082257315d;p=platform%2Fupstream%2Fgstreamer.git 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 --- diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c index 3d91236..6db0f5d 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); }