summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Bass <floobleflam@gmail.com>2013-08-08 15:19:15 +0100
committerThiago Santos <thiago.sousa.santos@collabora.com>2013-08-16 10:22:21 -0300
commit19a45554bf3265018bed3f925baa0c404706a62b (patch)
tree0ea50e30f2a4d8d125b3b70d5c4223c0becbdb9c
parent0a6ca026d1c28f00d4b024bab8276f7084ec8900 (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.c3
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;
}