inputselector: Use the start time (i.e. timestamp) as the last stop
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 9 Nov 2009 10:48:00 +0000 (11:48 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 9 Nov 2009 10:49:47 +0000 (11:49 +0100)
Using the end time makes it impossible to replace buffers, which is
a big problem for subtitles that could have very long durations.

Merged from gst-plugins-base, 27034be4611231cc55fa3d3e253baa40c6bff41d.

gst/selector/gstinputselector.c

index 3fa22b0..0929cdf 100644 (file)
@@ -557,7 +557,7 @@ gst_selector_pad_chain (GstPad * pad, GstBuffer * buf)
   GstPad *active_sinkpad;
   GstPad *prev_active_sinkpad;
   GstSelectorPad *selpad;
-  GstClockTime end_time, duration;
+  GstClockTime start_time, end_time, duration;
   GstSegment *seg;
   GstEvent *close_event = NULL, *start_event = NULL;
   GstCaps *caps;
@@ -577,10 +577,10 @@ gst_selector_pad_chain (GstPad * pad, GstBuffer * buf)
   active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
 
   /* update the segment on the srcpad */
-  end_time = GST_BUFFER_TIMESTAMP (buf);
-  if (GST_CLOCK_TIME_IS_VALID (end_time)) {
+  start_time = GST_BUFFER_TIMESTAMP (buf);
+  if (GST_CLOCK_TIME_IS_VALID (start_time)) {
     GST_DEBUG_OBJECT (pad, "received start time %" GST_TIME_FORMAT,
-        GST_TIME_ARGS (end_time));
+        GST_TIME_ARGS (start_time));
     duration = GST_BUFFER_DURATION (buf);
     if (GST_CLOCK_TIME_IS_VALID (duration))
       end_time += duration;
@@ -588,7 +588,7 @@ gst_selector_pad_chain (GstPad * pad, GstBuffer * buf)
         GST_TIME_ARGS (end_time));
 
     GST_OBJECT_LOCK (pad);
-    gst_segment_set_last_stop (seg, seg->format, end_time);
+    gst_segment_set_last_stop (seg, seg->format, start_time);
     GST_OBJECT_UNLOCK (pad);
   }