omxvideoenc: Try harder to deallocate the buffers after errors happened
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 25 Jul 2011 08:47:28 +0000 (10:47 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 25 Jul 2011 08:47:28 +0000 (10:47 +0200)
omx/gstomxvideoenc.c

index acdca4b..eb7564e 100644 (file)
@@ -267,11 +267,16 @@ gst_omx_video_enc_open (GstOMXVideoEnc * self)
 static gboolean
 gst_omx_video_enc_close (GstOMXVideoEnc * self)
 {
-  if (gst_omx_component_get_state (self->component, 0) > OMX_StateLoaded) {
-    gst_omx_component_set_state (self->component, OMX_StateLoaded);
+  OMX_STATETYPE state;
+
+  state = gst_omx_component_get_state (self->component, 0);
+  if (state > OMX_StateLoaded || state == OMX_StateInvalid) {
+    if (state > OMX_StateLoaded)
+      gst_omx_component_set_state (self->component, OMX_StateLoaded);
     gst_omx_port_deallocate_buffers (self->in_port);
     gst_omx_port_deallocate_buffers (self->out_port);
-    gst_omx_component_get_state (self->component, 5 * GST_SECOND);
+    if (state > OMX_StateLoaded)
+      gst_omx_component_get_state (self->component, 5 * GST_SECOND);
   }
 
   self->in_port = NULL;