diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/v4l2/gstv4l2videoenc.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/v4l2/gstv4l2videoenc.c b/sys/v4l2/gstv4l2videoenc.c index a6c44cbc6..d43f649d6 100644 --- a/sys/v4l2/gstv4l2videoenc.c +++ b/sys/v4l2/gstv4l2videoenc.c @@ -738,10 +738,13 @@ gst_v4l2_video_enc_handle_frame (GstVideoEncoder * encoder, if (task_state == GST_TASK_STOPPED || task_state == GST_TASK_PAUSED) { GstBufferPool *pool = GST_BUFFER_POOL (self->v4l2output->pool); - /* It possible that the processing thread stopped due to an error */ + /* It is possible that the processing thread stopped due to an error or + * when the last buffer has been met during the draining process. */ if (self->output_flow != GST_FLOW_OK && - self->output_flow != GST_FLOW_FLUSHING) { - GST_DEBUG_OBJECT (self, "Processing loop stopped with error, leaving"); + self->output_flow != GST_FLOW_FLUSHING && + self->output_flow != GST_V4L2_FLOW_LAST_BUFFER) { + GST_DEBUG_OBJECT (self, "Processing loop stopped with error: %s, leaving", + gst_flow_get_name (self->output_flow)); ret = self->output_flow; goto drop; } |