omx: Don't handle FLUSHING and NOT_LINKED as errors
authorSebastian Dröge <sebastian@centricular.com>
Sat, 25 Jan 2014 16:44:14 +0000 (17:44 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Sat, 25 Jan 2014 16:44:57 +0000 (17:44 +0100)
Also don't stop the task on NOT_LINKED. We're not a demuxer.

omx/gstomxaudioenc.c
omx/gstomxvideodec.c
omx/gstomxvideoenc.c

index 538902c..2c99664 100644 (file)
@@ -534,15 +534,20 @@ flow_error:
       gst_pad_push_event (GST_AUDIO_ENCODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_AUDIO_ENCODER_SRC_PAD (self));
-    } else if (flow_ret == GST_FLOW_NOT_LINKED || flow_ret < GST_FLOW_EOS) {
+      self->started = FALSE;
+    } else if (flow_ret < GST_FLOW_EOS) {
       GST_ELEMENT_ERROR (self, STREAM, FAILED, ("Internal data stream error."),
           ("stream stopped, reason %s", gst_flow_get_name (flow_ret)));
 
       gst_pad_push_event (GST_AUDIO_ENCODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_AUDIO_ENCODER_SRC_PAD (self));
+      self->started = FALSE;
+    } else if (flow_ret == GST_FLOW_FLUSHING) {
+      GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
+      gst_pad_pause_task (GST_AUDIO_ENCODER_SRC_PAD (self));
+      self->started = FALSE;
     }
-    self->started = FALSE;
     GST_AUDIO_ENCODER_STREAM_UNLOCK (self);
     return;
   }
index bb2542d..bf44b3d 100644 (file)
@@ -2177,7 +2177,8 @@ flow_error:
       gst_pad_push_event (GST_VIDEO_DECODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
-    } else if (flow_ret == GST_FLOW_NOT_LINKED || flow_ret < GST_FLOW_EOS) {
+      self->started = FALSE;
+    } else if (flow_ret < GST_FLOW_EOS) {
       GST_ELEMENT_ERROR (self, STREAM, FAILED,
           ("Internal data stream error."), ("stream stopped, reason %s",
               gst_flow_get_name (flow_ret)));
@@ -2185,8 +2186,12 @@ flow_error:
       gst_pad_push_event (GST_VIDEO_DECODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+      self->started = FALSE;
+    } else if (flow_ret == GST_FLOW_FLUSHING) {
+      GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
+      gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+      self->started = FALSE;
     }
-    self->started = FALSE;
     GST_VIDEO_DECODER_STREAM_UNLOCK (self);
     return;
   }
index 82dbf54..a85e815 100644 (file)
@@ -928,15 +928,20 @@ flow_error:
       gst_pad_push_event (GST_VIDEO_ENCODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_ENCODER_SRC_PAD (self));
-    } else if (flow_ret == GST_FLOW_NOT_LINKED || flow_ret < GST_FLOW_EOS) {
+      self->started = FALSE;
+    } else if (flow_ret < GST_FLOW_EOS) {
       GST_ELEMENT_ERROR (self, STREAM, FAILED, ("Internal data stream error."),
           ("stream stopped, reason %s", gst_flow_get_name (flow_ret)));
 
       gst_pad_push_event (GST_VIDEO_ENCODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_ENCODER_SRC_PAD (self));
+      self->started = FALSE;
+    } else if (flow_ret == GST_FLOW_FLUSHING) {
+      GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
+      gst_pad_pause_task (GST_VIDEO_ENCODER_SRC_PAD (self));
+      self->started = FALSE;
     }
-    self->started = FALSE;
     GST_VIDEO_ENCODER_STREAM_UNLOCK (self);
     return;
   }