v4l2codecs: allocator: Fix buffers leak when using remove buffers

When removing buffers from v4l2 queue do not forget to release
the memory on gstreamer side.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8583>
This commit is contained in:
Benjamin Gaignard 2025-03-04 11:02:16 +01:00 committed by GStreamer Marge Bot
parent ba6c86fc4d
commit 0d1cc08176

View File

@ -205,6 +205,7 @@ failed:
if (gst_v4l2_decoder_has_remove_bufs (decoder)) {
while (i-- && (buf = g_queue_pop_tail (&self->pool))) {
gst_v4l2_decoder_remove_buffers (decoder, direction, buf->index, 1);
gst_v4l2_codec_buffer_free (buf);
}
} else {
gst_v4l2_decoder_request_buffers (decoder, direction, 0);
@ -375,10 +376,11 @@ gst_v4l2_codec_allocator_detach (GstV4l2CodecAllocator * self)
} else {
GstV4l2CodecBuffer *buf;
while ((buf = g_queue_pop_tail (&self->pool)))
while ((buf = g_queue_pop_tail (&self->pool))) {
gst_v4l2_decoder_remove_buffers (self->decoder, self->direction,
buf->index, 1);
gst_v4l2_codec_buffer_free (buf);
}
}
}
GST_OBJECT_UNLOCK (self);