From bce30535988d33acff5a9164ccaaf7092f9e24a2 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Tue, 5 Sep 2023 16:51:24 -0400 Subject: [PATCH] v4l2: bufferpool: Avoid warnings on empty last buffer Some drivers will push an buffer flagged LAST but empty. In decoder case, this results in an "producing too many buffer" warning, even though the result is entirely correct. Detect this case in order to signal EOS earlier and avoid this warning. Part-of: --- subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c index 68bab75..8c6eba1 100644 --- a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c +++ b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c @@ -1275,6 +1275,12 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer, group->buffer.index); } + if (group->buffer.flags & V4L2_BUF_FLAG_LAST && + group->planes[0].bytesused == 0) { + GST_DEBUG_OBJECT (pool, "Empty last buffer, signalling eos."); + goto eos; + } + outbuf = pool->buffers[group->buffer.index]; if (outbuf == NULL) goto no_buffer; -- 2.7.4