omxvideodec: Disable output port when setting a new format
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 11 Mar 2013 09:22:07 +0000 (10:22 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 11 Mar 2013 09:22:07 +0000 (10:22 +0100)
Based on a patch by Josep Torra <n770galaxy@gmail.com>

omx/gstomxvideodec.c

index f9fe3278d825486422dbd6750d8def5aedf094cf..98f6f83e76726be16f1a293edf6a28c1014db061 100644 (file)
@@ -2025,14 +2025,24 @@ gst_omx_video_dec_set_format (GstVideoDecoder * decoder,
     } else {
       if (gst_omx_port_set_enabled (self->dec_in_port, FALSE) != OMX_ErrorNone)
         return FALSE;
+      if (gst_omx_port_set_enabled (self->dec_out_port, FALSE) != OMX_ErrorNone)
+        return FALSE;
       if (gst_omx_port_wait_buffers_released (self->dec_in_port,
               5 * GST_SECOND) != OMX_ErrorNone)
         return FALSE;
+      if (gst_omx_port_wait_buffers_released (self->dec_out_port,
+              1 * GST_SECOND) != OMX_ErrorNone)
+        return FALSE;
       if (gst_omx_port_deallocate_buffers (self->dec_in_port) != OMX_ErrorNone)
         return FALSE;
+      if (gst_omx_port_deallocate_buffers (self->dec_out_port) != OMX_ErrorNone)
+        return FALSE;
       if (gst_omx_port_wait_enabled (self->dec_in_port,
               1 * GST_SECOND) != OMX_ErrorNone)
         return FALSE;
+      if (gst_omx_port_wait_enabled (self->dec_out_port,
+              1 * GST_SECOND) != OMX_ErrorNone)
+        return FALSE;
     }
     if (self->input_state)
       gst_video_codec_state_unref (self->input_state);
@@ -2124,10 +2134,6 @@ gst_omx_video_dec_set_format (GstVideoDecoder * decoder,
     return FALSE;
   }
 
-  if (!needs_disable)
-    if (gst_omx_port_populate (self->dec_out_port) != OMX_ErrorNone)
-      return FALSE;
-
   /* Start the srcpad loop again */
   GST_DEBUG_OBJECT (self, "Starting task again");