summaryrefslogtreecommitdiff
path: root/sys/v4l2/gstv4l2videoenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/v4l2/gstv4l2videoenc.c')
-rw-r--r--sys/v4l2/gstv4l2videoenc.c9
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;
}