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

Commit 2b794c3

Browse files
committed
Merge branch 'release/1.8.0'
2 parents 3a8c632 + 54bb5db commit 2b794c3

34 files changed

+1445
-1278
lines changed

.jshintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"devel" : true,
1212
"browser": true,
1313
"loopfunc" : true,
14+
"sub" : true,
1415
"predef" : [
1516
"dijon",
1617
"Q",

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ install:
2020
script:
2121
- npm run build
2222
- npm run deploy
23-
after_success:
24-
- npm test
23+
#after_success:
24+
# - npm test

RELEASES NOTES.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
### Release Notes v1.8.0 (2017/01/23)
2+
* Implements license persistence at application layer (protection model 21Jan2015) according to player configuration (by default no license persistence)
3+
* [MSS] Add support for MSS static streams starting at t > 0 (live delinearization use case)
4+
* [HLS] Add support for HLSv5 streams (multiple audio/subtitle tracks/streams)
5+
* [HLS] Add support for VTT subtitles
6+
* [HLS] Add support for DVR mode
7+
* - Provide absolute program date/time (if available) for DVR window range (see MediaPlayer.getDVRWindowRange())
8+
* Bugs fixing:
9+
* - [MSS] Correct 'IsLive' parameter parsing in case
10+
* - [MSS] Fix use case where 'FourCC' field is an empty string
11+
* - [HLS] Fix regression on MPEGTS packets demultiplexing
12+
* - [HLS] Correct H.264 SPS parsing to retrieve video's width and height values
13+
114
### Release Notes v1.7.0 (2016/11/28)
215
* Add support for TTML origin defined with field 'c'
316
* Bugs fixing:

app/js/dash/DashHandler.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,8 @@ Dash.dependencies.DashHandler = function() {
283283
fTimescale,
284284
template.media,
285285
s.mediaRange,
286-
availabilityIdx);
286+
availabilityIdx,
287+
s.tManifest);
287288
};
288289

289290
fTimescale = representation.timescale;
@@ -313,7 +314,7 @@ Dash.dependencies.DashHandler = function() {
313314
time = frag.t;
314315
}
315316

316-
//This is a special case: "A negative value of the @r attribute of the S element indicates that the duration indicated in @d attribute repeats until the start of the next S element, the end of the Period or until the
317+
//This is a special case: "A negative value of the @r attribute of the S element indicates that the duration indicated in @d attribute repeats until the start of the next S element, the end of the Period or until the
317318
// next MPD update."
318319
if (repeat < 0) {
319320
nextFrag = fragments[i + 1];
@@ -554,7 +555,7 @@ Dash.dependencies.DashHandler = function() {
554555
return deferred.promise;
555556
},
556557

557-
getTimeBasedSegment = function(representation, time, duration, fTimescale, url, range, index) {
558+
getTimeBasedSegment = function(representation, time, duration, fTimescale, url, range, index, tManifest) {
558559
var self = this,
559560
scaledTime = time / fTimescale,
560561
scaledDuration = Math.min(duration / fTimescale, representation.adaptation.period.mpd.maxSegmentDuration),
@@ -582,7 +583,7 @@ Dash.dependencies.DashHandler = function() {
582583
// at this wall clock time, the video element currentTime should be seg.presentationStartTime
583584
seg.wallStartTime = self.timelineConverter.calcWallTimeForSegment(seg, isDynamic);
584585

585-
seg.replacementTime = time;
586+
seg.replacementTime = tManifest ? tManifest : time;
586587

587588
seg.replacementNumber = getNumberForSegment(seg, index);
588589

@@ -636,6 +637,12 @@ Dash.dependencies.DashHandler = function() {
636637
seg.index = s.index;
637638
seg.indexRange = s.indexRange;
638639

640+
// ORANGE: overwrite duration if set at segment level (HLS use case)
641+
if (s.duration) {
642+
seg.duration = s.duration;
643+
seg.presentationStartTime = seg.mediaStartTime = s.time;
644+
}
645+
639646
// ORANGE: add sequence number (HLS use case)
640647
if (s.sequenceNumber !== undefined) {
641648
seg.sequenceNumber = s.sequenceNumber;
@@ -961,6 +968,7 @@ Dash.dependencies.DashHandler = function() {
961968
}
962969

963970
requestedTime = time;
971+
index = -1;
964972

965973
self.debug.log("[DashHandler][" + type + "] Getting the request for time: " + time);
966974

@@ -1032,7 +1040,6 @@ Dash.dependencies.DashHandler = function() {
10321040

10331041
requestedTime = null;
10341042
index += 1;
1035-
//self.debug.log("New index: " + index);
10361043

10371044
deferred = Q.defer();
10381045

@@ -1088,6 +1095,9 @@ Dash.dependencies.DashHandler = function() {
10881095
throw "You must call getSegmentRequestForTime first.";
10891096
}
10901097

1098+
requestedTime = null;
1099+
index += 1;
1100+
10911101
deferred = Q.defer();
10921102

10931103
self.debug.log("[DashHandler][" + type + "] Getting the next request => sn = " + sn);

0 commit comments

Comments
 (0)