diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c index e5c7a5872a..619860e63f 100644 --- a/gst/gstbufferpool.c +++ b/gst/gstbufferpool.c @@ -1222,8 +1222,11 @@ default_reset_buffer (GstBufferPool * pool, GstBuffer * buffer) 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); + if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY)) { + gsize offset; + gst_buffer_get_sizes (buffer, &offset, NULL); + gst_buffer_resize (buffer, -offset, pool->priv->size); + } /* remove all metadata without the POOLED flag */ gst_buffer_foreach_meta (buffer, remove_meta_unpooled, pool); diff --git a/tests/check/gst/gstbufferpool.c b/tests/check/gst/gstbufferpool.c index f0c3c8d8e7..dd9b2dc033 100644 --- a/tests/check/gst/gstbufferpool.c +++ b/tests/check/gst/gstbufferpool.c @@ -190,7 +190,7 @@ GST_START_TEST (test_buffer_modify_discard) gst_buffer_pool_acquire_buffer (pool, &buf, NULL); buffer_track_destroy (buf, &dcount); /* do resize, as we didn't modify the memory, pool should reuse this buffer */ - gst_buffer_resize (buf, 5, 2); + gst_buffer_resize (buf, 8, 2); gst_buffer_unref (buf); /* buffer should've gone back into pool */