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/5319>
This commit is contained in:
Nicolas Dufresne 2023-09-05 16:51:24 -04:00 committed by Tim-Philipp Müller
parent 914e752015
commit bce3053598

View file

@ -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;