Skip to content
This repository was archived by the owner on Oct 20, 2022. It is now read-only.

Commit 1f4c808

Browse files
authored
Merge pull request #230 from Orange-OpenSource/mss-different-timescale-audioVideo
[MSS] Update timescale support
2 parents 11148fd + 0605f0c commit 1f4c808

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

app/js/mss/MssParser.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,15 +268,19 @@ Mss.dependencies.MssParser = function() {
268268
mapSegmentTemplate = function(streamIndex, timescale) {
269269

270270
var segmentTemplate = {},
271-
mediaUrl;
271+
mediaUrl,
272+
streamIndexTimeScale;
272273

273274
mediaUrl = this.domParser.getAttributeValue(streamIndex, "Url").replace('{bitrate}', '$Bandwidth$');
274275
mediaUrl = mediaUrl.replace('{start time}', '$Time$');
275276

277+
streamIndexTimeScale = this.domParser.getAttributeValue(streamIndex, "TimeScale");
278+
streamIndexTimeScale = streamIndexTimeScale ? parseFloat(streamIndexTimeScale) : timescale;
279+
276280
segmentTemplate.media = mediaUrl;
277-
segmentTemplate.timescale = timescale;
281+
segmentTemplate.timescale = streamIndexTimeScale;
278282

279-
segmentTemplate.SegmentTimeline = mapSegmentTimeline.call(this, streamIndex, timescale);
283+
segmentTemplate.SegmentTimeline = mapSegmentTimeline.call(this, streamIndex, segmentTemplate.timescale);
280284

281285
return segmentTemplate;
282286
},
@@ -676,7 +680,7 @@ Mss.dependencies.MssParser = function() {
676680
for (i = 0; i < adaptations.length; i++) {
677681
if (adaptations[i].contentType === 'audio' || adaptations[i].contentType === 'video') {
678682
segments = adaptations[i].SegmentTemplate.SegmentTimeline.S_asArray;
679-
startTime = segments[0].t;
683+
startTime = segments[0].t / adaptations[i].SegmentTemplate.timescale;
680684
if (timestampOffset === undefined) {
681685
timestampOffset = startTime;
682686
}
@@ -697,7 +701,7 @@ Mss.dependencies.MssParser = function() {
697701
if (!segments[j].tManifest) {
698702
segments[j].tManifest = segments[j].t;
699703
}
700-
segments[j].t -= timestampOffset;
704+
segments[j].t -= (timestampOffset * adaptations[i].SegmentTemplate.timescale);
701705
}
702706
if (adaptations[i].contentType === 'audio' || adaptations[i].contentType === 'video') {
703707
period.start = Math.max(segments[0].t, period.start);

0 commit comments

Comments
 (0)