v4l2videodec: Fix handle_frame error handling
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Fri, 23 May 2014 21:01:02 +0000 (17:01 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Sat, 24 May 2014 19:38:53 +0000 (15:38 -0400)
sys/v4l2/gstv4l2videodec.c

index b62e318..604710c 100644 (file)
@@ -530,6 +530,9 @@ gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
     if (ret == GST_FLOW_FLUSHING) {
       if (g_atomic_int_get (&self->processing) == FALSE)
         ret = self->output_flow;
+      goto drop;
+    } else if (ret != GST_FLOW_OK) {
+      goto process_failed;
     }
 
     /* No need to keep input arround */
@@ -551,13 +554,22 @@ activate_failed:
     GST_ELEMENT_ERROR (self, RESOURCE, SETTINGS,
         (_("Failed to allocate required memory.")),
         ("Buffer pool activation failed"));
-    return GST_FLOW_ERROR;
+    ret = GST_FLOW_ERROR;
+    goto drop;
   }
 flushing:
   {
     ret = GST_FLOW_FLUSHING;
     goto drop;
   }
+process_failed:
+  {
+    GST_ELEMENT_ERROR (self, RESOURCE, FAILED,
+        (_("Failed to process frame.")),
+        ("Maybe be due to not enough memory or failing driver"));
+    ret = GST_FLOW_ERROR;
+    goto drop;
+  }
 drop:
   {
     gst_video_decoder_drop_frame (decoder, frame);