basevideoencoder: handle failures in start() and stop()
authorAlessandro Decina <alessandro.decina@collabora.co.uk>
Mon, 31 Oct 2011 10:36:06 +0000 (11:36 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 8 Dec 2011 10:56:58 +0000 (11:56 +0100)
omx/gstbasevideoencoder.c

index b772512..c14d7a1 100644 (file)
@@ -899,7 +899,8 @@ gst_base_video_encoder_change_state (GstElement * element,
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       gst_base_video_encoder_reset (base_video_encoder);
       if (base_video_encoder_class->start) {
-        base_video_encoder_class->start (base_video_encoder);
+        if (!base_video_encoder_class->start (base_video_encoder))
+          goto start_error;
       }
       break;
     default:
@@ -912,7 +913,8 @@ gst_base_video_encoder_change_state (GstElement * element,
     case GST_STATE_CHANGE_PAUSED_TO_READY:
       gst_base_video_encoder_reset (base_video_encoder);
       if (base_video_encoder_class->stop) {
-        base_video_encoder_class->stop (base_video_encoder);
+        if (!base_video_encoder_class->stop (base_video_encoder))
+          goto stop_error;
       }
       break;
     default:
@@ -920,6 +922,14 @@ gst_base_video_encoder_change_state (GstElement * element,
   }
 
   return ret;
+
+start_error:
+  GST_WARNING_OBJECT (base_video_encoder, "failed to start");
+  return GST_STATE_CHANGE_FAILURE;
+
+stop_error:
+  GST_WARNING_OBJECT (base_video_encoder, "failed to stop");
+  return GST_STATE_CHANGE_FAILURE;
 }
 
 /**