inputselector: Use the start time (i.e. timestamp) as the last stop

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, 27034be461.
This commit is contained in:
Sebastian Dröge 2009-11-09 11:48:00 +01:00
parent 9a62107e94
commit 729c62263f

View 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);
}