diff options
author | Chris Bass <floobleflam@gmail.com> | 2013-08-08 15:19:15 +0100 |
---|---|---|
committer | Thiago Santos <thiago.sousa.santos@collabora.com> | 2013-08-16 10:22:21 -0300 |
commit | 19a45554bf3265018bed3f925baa0c404706a62b (patch) | |
tree | 0ea50e30f2a4d8d125b3b70d5c4223c0becbdb9c | |
parent | 0a6ca026d1c28f00d4b024bab8276f7084ec8900 (diff) |
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
-rw-r--r-- | ext/dash/gstmpdparser.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index 448f20bda..8bd890728 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; } |