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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5286>
This commit is contained in:
Nicolas Dufresne 2023-09-05 16:51:24 -04:00 committed by GStreamer Marge Bot
parent 65350b601e
commit 353cb2da92

View file

@ -1280,6 +1280,12 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer,
group->buffer.index); 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]; outbuf = pool->buffers[group->buffer.index];
if (outbuf == NULL) if (outbuf == NULL)
goto no_buffer; goto no_buffer;