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:
parent
ba6c86fc4d
commit
0d1cc08176
@ -205,6 +205,7 @@ failed:
|
|||||||
if (gst_v4l2_decoder_has_remove_bufs (decoder)) {
|
if (gst_v4l2_decoder_has_remove_bufs (decoder)) {
|
||||||
while (i-- && (buf = g_queue_pop_tail (&self->pool))) {
|
while (i-- && (buf = g_queue_pop_tail (&self->pool))) {
|
||||||
gst_v4l2_decoder_remove_buffers (decoder, direction, buf->index, 1);
|
gst_v4l2_decoder_remove_buffers (decoder, direction, buf->index, 1);
|
||||||
|
gst_v4l2_codec_buffer_free (buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
gst_v4l2_decoder_request_buffers (decoder, direction, 0);
|
gst_v4l2_decoder_request_buffers (decoder, direction, 0);
|
||||||
@ -375,10 +376,11 @@ gst_v4l2_codec_allocator_detach (GstV4l2CodecAllocator * self)
|
|||||||
} else {
|
} else {
|
||||||
GstV4l2CodecBuffer *buf;
|
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,
|
gst_v4l2_decoder_remove_buffers (self->decoder, self->direction,
|
||||||
buf->index, 1);
|
buf->index, 1);
|
||||||
|
gst_v4l2_codec_buffer_free (buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GST_OBJECT_UNLOCK (self);
|
GST_OBJECT_UNLOCK (self);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user