rtspsrc: perform post-flush state tricks downstream to upstream
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 4 Apr 2011 09:33:10 +0000 (11:33 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 4 Apr 2011 09:49:00 +0000 (11:49 +0200)
... so downstream is set when upstream resumes data flow.

gst/rtsp/gstrtspsrc.c

index f2ef722..fbd57e0 100644 (file)
@@ -1663,6 +1663,16 @@ gst_rtspsrc_flush (GstRTSPSrc * src, gboolean flush)
   gst_rtspsrc_push_event (src, event, FALSE);
   gst_rtspsrc_loop_send_cmd (src, cmd, flush);
 
+  /* set up manager before data-flow resumes */
+  /* to manage jitterbuffer buffer mode */
+  if (src->manager) {
+    gst_element_set_base_time (GST_ELEMENT_CAST (src->manager), base_time);
+    /* and to have base_time trickle further down,
+     * e.g. to jitterbuffer for its timeout handling */
+    if (base_time != -1)
+      gst_element_set_state (GST_ELEMENT_CAST (src->manager), state);
+  }
+
   /* make running time start start at 0 again */
   for (walk = src->streams; walk; walk = g_list_next (walk)) {
     GstRTSPStream *stream = (GstRTSPStream *) walk->data;
@@ -1679,14 +1689,6 @@ gst_rtspsrc_flush (GstRTSPSrc * src, gboolean flush)
   /* for tcp interleaved case */
   if (base_time != -1)
     gst_element_set_base_time (GST_ELEMENT_CAST (src), base_time);
-  /* to manage jitterbuffer buffer mode */
-  if (src->manager) {
-    gst_element_set_base_time (GST_ELEMENT_CAST (src->manager), base_time);
-    /* and to have base_time trickle further down,
-     * e.g. to jitterbuffer for its timeout handling */
-    if (base_time != -1)
-      gst_element_set_state (GST_ELEMENT_CAST (src->manager), state);
-  }
 }
 
 static GstRTSPResult