From 19a45554bf3265018bed3f925baa0c404706a62b Mon Sep 17 00:00:00 2001 From: Chris Bass Date: Thu, 8 Aug 2013 15:19:15 +0100 Subject: [PATCH] dashdemux: remove incorrect timestamp scaling. When using a SegmentTemplate element, the timestamps of the buffers output by dashdemux are incorrect, causing problems downstream. The reason is that GstMediaSegment start times are calculated (in gst_mpdparser_get_chunk_by_index) by multiplying segment index by segment duration and then scaling the result according the `timebase' attribute from the MPD. However, the segment duration is already a GstClockTime (i.e., it has already been scaled according to the timebase from the MPD and converted to a nanosecond value), so multiplying it by the segment index will give the correct timestamp without the need for any further scaling. https://bugzilla.gnome.org/show_bug.cgi?id=705679 --- ext/dash/gstmpdparser.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index 448f20bdac..8bd8907286 100644 --- a/ext/dash/gstmpdparser.c +++ b/ext/dash/gstmpdparser.c @@ -3026,8 +3026,6 @@ gst_mpdparser_get_chunk_by_index (GstMpdClient * client, guint indexStream, segment->duration = list_segment->duration; } else { GstClockTime duration; - guint timescale = - stream->cur_seg_template->MultSegBaseType->SegBaseType->timescale; g_return_val_if_fail (stream->cur_seg_template->MultSegBaseType-> SegmentTimeline == NULL, FALSE); /* segment template generator */ @@ -3039,7 +3037,6 @@ gst_mpdparser_get_chunk_by_index (GstMpdClient * client, guint indexStream, segment->number = indexChunk; segment->start_time = duration * indexChunk; - segment->start_time = segment->start_time * timescale / GST_SECOND; segment->duration = duration; segment->SegmentURL = NULL; }