asfdemux: fix seeking in push mode
authorMatej Knopp <matej.knopp@gmail.com>
Tue, 30 Jul 2013 15:28:17 +0000 (17:28 +0200)
committerSebastian Dröge <slomo@circular-chaos.org>
Thu, 8 Aug 2013 09:56:19 +0000 (11:56 +0200)
gst/asfdemux/asfpacket.c
gst/asfdemux/gstasfdemux.c

index ecf1e05..8f6dc23 100644 (file)
@@ -190,6 +190,19 @@ gst_asf_payload_queue_for_stream (GstASFDemux * demux, AsfPayload * payload,
     GST_BUFFER_FLAG_SET (payload->buf, GST_BUFFER_FLAG_DISCONT);
   }
 
+  /* remember the first queued timestamp for the segment */
+  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (demux->segment_ts) &&
+          GST_CLOCK_TIME_IS_VALID (demux->first_ts))) {
+    GST_DEBUG_OBJECT (demux, "segment ts: %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (demux->first_ts));
+    demux->segment_ts = demux->first_ts;
+    /* always note, but only determines segment when streaming */
+    if (demux->streaming)
+      gst_segment_do_seek (&demux->segment, demux->in_segment.rate,
+          GST_FORMAT_TIME, (GstSeekFlags) demux->segment.flags,
+          GST_SEEK_TYPE_SET, demux->segment_ts, GST_SEEK_TYPE_NONE, 0, NULL);
+  }
+
   g_array_append_vals (stream->payloads, payload, 1);
 }
 
index ad1dd5d..36402f7 100644 (file)
@@ -1366,18 +1366,6 @@ gst_asf_demux_check_first_ts (GstASFDemux * demux, gboolean force)
         }
       }
     }
-
-    /* remember the first queued timestamp for the segment */
-    if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (demux->segment_ts))) {
-      GST_DEBUG_OBJECT (demux, "segment ts: %" GST_TIME_FORMAT,
-          GST_TIME_ARGS (first_ts));
-      demux->segment_ts = first_ts;
-      /* always note, but only determines segment when streaming */
-      if (demux->streaming)
-        gst_segment_do_seek (&demux->segment, demux->in_segment.rate,
-            GST_FORMAT_TIME, (GstSeekFlags) demux->segment.flags,
-            GST_SEEK_TYPE_SET, demux->segment_ts, GST_SEEK_TYPE_NONE, 0, NULL);
-    }
   }
 
   return TRUE;