Drivers may signal end of sequence using an empty buffer and LAST buffer
set, or just an empty buffer on certain legacy implementation. When this
occured, we'd send GST_V4L2_FLOW_LAST_BUFFER were the code expected
GST_FLOW_EOS. Stop abusing GST_FLOW_EOS and port all the code to the new
GST_V4L2_FLOW_LAST_BUFFER.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4671>
error:
if (errno == EPIPE) {
GST_DEBUG_OBJECT (allocator, "broken pipe signals last buffer");
- return GST_FLOW_EOS;
+ return GST_V4L2_FLOW_LAST_BUFFER;
}
GST_ERROR_OBJECT (allocator, "failed dequeuing a %s buffer: %s",
GST_LOG_OBJECT (pool, "dequeueing a buffer");
res = gst_v4l2_allocator_dqbuf (pool->vallocator, &group);
- if (res == GST_FLOW_EOS)
+ if (res == GST_V4L2_FLOW_LAST_BUFFER)
goto eos;
if (res != GST_FLOW_OK)
goto dqbuf_failed;
}
eos:
{
- return GST_FLOW_EOS;
+ return GST_V4L2_FLOW_LAST_BUFFER;
}
dqbuf_failed:
{
}
eos:
{
- GST_DEBUG_OBJECT (pool, "end of stream reached");
+ GST_DEBUG_OBJECT (pool, "end of sequence reached");
gst_buffer_unref (*buf);
*buf = NULL;
return GST_V4L2_FLOW_LAST_BUFFER;
return;
}
- if (ret == GST_FLOW_EOS) {
+ if (ret == GST_V4L2_FLOW_LAST_BUFFER) {
GST_VIDEO_DECODER_STREAM_LOCK (decoder);
if (self->draining) {
self->draining = FALSE;