avidemux: reset on flush events
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 20 Jan 2010 10:26:34 +0000 (11:26 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 20 Jan 2010 10:47:03 +0000 (11:47 +0100)
When we receive a flush event on the sinkpad, reset the EOS state and the
flowreturn of all streams. Also mark the streams with a DISCONT.

gst/avi/gstavidemux.c

index 222dd40..07ff278 100644 (file)
@@ -771,6 +771,18 @@ gst_avi_demux_handle_sink_event (GstPad * pad, GstEvent * event)
       }
       break;
     }
+    case GST_EVENT_FLUSH_STOP:
+    {
+      gint i;
+
+      gst_adapter_clear (avi->adapter);
+      avi->have_eos = FALSE;
+      for (i = 0; i < avi->num_streams; i++) {
+        avi->stream[i].last_flow = GST_FLOW_OK;
+        avi->stream[i].discont = TRUE;
+      }
+      /* fall through to default case so that the event gets passed downstream */
+    }
     default:
       res = gst_pad_event_default (pad, event);
       break;