From a1f6660655f4f9d97ee6703819bbdeccc3b76397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 9 Nov 2009 11:48:00 +0100 Subject: [PATCH] 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, 27034be4611231cc55fa3d3e253baa40c6bff41d. --- plugins/elements/gstinputselector.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c index 3fa22b0fb9..0929cdf999 100644 --- a/plugins/elements/gstinputselector.c +++ b/plugins/elements/gstinputselector.c @@ -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); }