From 353cb2da922a97d8bf0fb6fc8520980c696c5e07 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 9c664741ce..f0dd1bf31e 100644 --- a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c +++ b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c @@ -1280,6 +1280,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;