hls.js 1.5.14-0.canary.10427 → 1.5.14-0.canary.10431
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hls.js +37 -38
- package/dist/hls.js.d.ts +2 -0
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +37 -38
- package/dist/hls.light.js.map +1 -1
- package/dist/hls.light.min.js +1 -1
- package/dist/hls.light.min.js.map +1 -1
- package/dist/hls.light.mjs +34 -38
- package/dist/hls.light.mjs.map +1 -1
- package/dist/hls.min.js +1 -1
- package/dist/hls.min.js.map +1 -1
- package/dist/hls.mjs +34 -38
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/package.json +2 -2
- package/src/controller/base-stream-controller.ts +23 -16
- package/src/utils/discontinuities.ts +21 -47
package/dist/hls.light.js
CHANGED
@@ -493,7 +493,7 @@
|
|
493
493
|
// Some browsers don't allow to use bind on console object anyway
|
494
494
|
// fallback to default if needed
|
495
495
|
try {
|
496
|
-
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.
|
496
|
+
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.10431");
|
497
497
|
} catch (e) {
|
498
498
|
/* log fn threw an exception. All logger methods are no-ops. */
|
499
499
|
return createLogger();
|
@@ -12154,30 +12154,14 @@
|
|
12154
12154
|
}
|
12155
12155
|
return null;
|
12156
12156
|
}
|
12157
|
-
function shouldAlignOnDiscontinuities(
|
12158
|
-
if (
|
12159
|
-
if (details.
|
12157
|
+
function shouldAlignOnDiscontinuities(refDetails, details) {
|
12158
|
+
if (refDetails) {
|
12159
|
+
if (details.startCC < refDetails.endCC && details.endCC > refDetails.startCC) {
|
12160
12160
|
return true;
|
12161
12161
|
}
|
12162
12162
|
}
|
12163
12163
|
return false;
|
12164
12164
|
}
|
12165
|
-
|
12166
|
-
// Find the first frag in the previous level which matches the CC of the first frag of the new level
|
12167
|
-
function findDiscontinuousReferenceFrag(prevDetails, curDetails) {
|
12168
|
-
var prevFrags = prevDetails.fragments;
|
12169
|
-
var curFrags = curDetails.fragments;
|
12170
|
-
if (!curFrags.length || !prevFrags.length) {
|
12171
|
-
logger.log('No fragments to align');
|
12172
|
-
return;
|
12173
|
-
}
|
12174
|
-
var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);
|
12175
|
-
if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {
|
12176
|
-
logger.log('No frag in previous level to align on');
|
12177
|
-
return;
|
12178
|
-
}
|
12179
|
-
return prevStartFrag;
|
12180
|
-
}
|
12181
12165
|
function adjustFragmentStart(frag, sliding) {
|
12182
12166
|
if (frag) {
|
12183
12167
|
var start = frag.start + sliding;
|
@@ -12212,7 +12196,7 @@
|
|
12212
12196
|
if (!switchDetails) {
|
12213
12197
|
return;
|
12214
12198
|
}
|
12215
|
-
alignDiscontinuities(
|
12199
|
+
alignDiscontinuities(details, switchDetails);
|
12216
12200
|
if (!details.alignedSliding && switchDetails) {
|
12217
12201
|
// If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.
|
12218
12202
|
// Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same
|
@@ -12228,20 +12212,24 @@
|
|
12228
12212
|
}
|
12229
12213
|
|
12230
12214
|
/**
|
12231
|
-
*
|
12232
|
-
* discontinuity sequence.
|
12233
|
-
* @param lastFrag - The last Fragment which shares the same discontinuity sequence
|
12215
|
+
* Ajust the start of fragments in `details` by the difference in time between fragments of the latest
|
12216
|
+
* shared discontinuity sequence change.
|
12234
12217
|
* @param lastLevel - The details of the last loaded level
|
12235
12218
|
* @param details - The details of the new level
|
12236
12219
|
*/
|
12237
|
-
function alignDiscontinuities(
|
12238
|
-
if (shouldAlignOnDiscontinuities(
|
12239
|
-
|
12240
|
-
if (referenceFrag && isFiniteNumber(referenceFrag.start)) {
|
12241
|
-
logger.log("Adjusting PTS using last level due to CC increase within current level " + details.url);
|
12242
|
-
adjustSlidingStart(referenceFrag.start, details);
|
12243
|
-
}
|
12220
|
+
function alignDiscontinuities(details, refDetails) {
|
12221
|
+
if (!shouldAlignOnDiscontinuities(refDetails, details)) {
|
12222
|
+
return;
|
12244
12223
|
}
|
12224
|
+
var targetCC = Math.min(refDetails.endCC, details.endCC);
|
12225
|
+
var refFrag = findFirstFragWithCC(refDetails.fragments, targetCC);
|
12226
|
+
var frag = findFirstFragWithCC(details.fragments, targetCC);
|
12227
|
+
if (!refFrag || !frag) {
|
12228
|
+
return;
|
12229
|
+
}
|
12230
|
+
logger.log("Aligning playlist at start of dicontinuity sequence " + targetCC);
|
12231
|
+
var delta = refFrag.start - frag.start;
|
12232
|
+
adjustSlidingStart(delta, details);
|
12245
12233
|
}
|
12246
12234
|
|
12247
12235
|
/**
|
@@ -13069,7 +13057,7 @@
|
|
13069
13057
|
return;
|
13070
13058
|
}
|
13071
13059
|
if ('payload' in data) {
|
13072
|
-
_this3.log("Loaded
|
13060
|
+
_this3.log("Loaded " + frag.type + " sn: " + frag.sn + " of " + _this3.playlistLabel() + " " + frag.level);
|
13073
13061
|
_this3.hls.trigger(Events.FRAG_LOADED, data);
|
13074
13062
|
}
|
13075
13063
|
|
@@ -13213,9 +13201,9 @@
|
|
13213
13201
|
return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;
|
13214
13202
|
};
|
13215
13203
|
_proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {
|
13216
|
-
var
|
13204
|
+
var _this$fragCurrent, _this$fragPrevious;
|
13217
13205
|
var media = this.mediaBuffer ? this.mediaBuffer : this.media;
|
13218
|
-
this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " +
|
13206
|
+
this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + " > buffer:" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + ")");
|
13219
13207
|
if (frag.sn !== 'initSegment') {
|
13220
13208
|
var _this$levels;
|
13221
13209
|
if (frag.type !== PlaylistLevelType.SUBTITLE) {
|
@@ -13277,7 +13265,7 @@
|
|
13277
13265
|
}
|
13278
13266
|
var keyLoadingPromise = null;
|
13279
13267
|
if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {
|
13280
|
-
this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " +
|
13268
|
+
this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " + this.playlistLabel() + " " + frag.level);
|
13281
13269
|
this.state = State.KEY_LOADING;
|
13282
13270
|
this.fragCurrent = frag;
|
13283
13271
|
keyLoadingPromise = this.keyLoader.load(frag).then(function (keyLoadedData) {
|
@@ -13316,7 +13304,7 @@
|
|
13316
13304
|
var partIndex = this.getNextPart(partList, frag, targetBufferTime);
|
13317
13305
|
if (partIndex > -1) {
|
13318
13306
|
var part = partList[partIndex];
|
13319
|
-
this.log("Loading part sn: " + frag.sn + " p: " + part.index + " cc: " + frag.cc + " of playlist [" + details.startSN + "-" + details.endSN + "] parts [0-" + partIndex + "-" + (partList.length - 1) + "] " +
|
13307
|
+
this.log("Loading part sn: " + frag.sn + " p: " + part.index + " cc: " + frag.cc + " of playlist [" + details.startSN + "-" + details.endSN + "] parts [0-" + partIndex + "-" + (partList.length - 1) + "] " + this.playlistLabel() + ": " + frag.level + ", target: " + parseFloat(targetBufferTime.toFixed(3)));
|
13320
13308
|
this.nextLoadPosition = part.start + part.duration;
|
13321
13309
|
this.state = State.FRAG_LOADING;
|
13322
13310
|
var _result;
|
@@ -13356,7 +13344,7 @@
|
|
13356
13344
|
// Selected fragment hint for part but not loading parts
|
13357
13345
|
return Promise.resolve(null);
|
13358
13346
|
}
|
13359
|
-
this.log("Loading
|
13347
|
+
this.log("Loading " + frag.type + " sn: " + frag.sn + " of " + this.fragInfo(frag, false) + ") cc: " + frag.cc + " " + (details ? '[' + details.startSN + '-' + details.endSN + ']' : '') + ", target: " + parseFloat(targetBufferTime.toFixed(3)));
|
13360
13348
|
// Don't update nextLoadPosition for fragments which are not buffered
|
13361
13349
|
if (isFiniteNumber(frag.sn) && !this.bitrateTest) {
|
13362
13350
|
this.nextLoadPosition = frag.start + frag.duration;
|
@@ -14120,11 +14108,22 @@
|
|
14120
14108
|
// For this error fallthrough. Marking parsed will allow advancing to next fragment.
|
14121
14109
|
}
|
14122
14110
|
this.state = State.PARSED;
|
14111
|
+
this.log("Parsed " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + ")");
|
14123
14112
|
this.hls.trigger(Events.FRAG_PARSED, {
|
14124
14113
|
frag: frag,
|
14125
14114
|
part: part
|
14126
14115
|
});
|
14127
14116
|
};
|
14117
|
+
_proto.playlistLabel = function playlistLabel() {
|
14118
|
+
return this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track';
|
14119
|
+
};
|
14120
|
+
_proto.fragInfo = function fragInfo(frag, pts) {
|
14121
|
+
var _ref3, _ref4;
|
14122
|
+
if (pts === void 0) {
|
14123
|
+
pts = true;
|
14124
|
+
}
|
14125
|
+
return this.playlistLabel() + " " + frag.level + " (frag:[" + ((_ref3 = pts ? frag.startPTS : frag.start) != null ? _ref3 : NaN).toFixed(3) + "-" + ((_ref4 = pts ? frag.endPTS : frag.end) != null ? _ref4 : NaN).toFixed(3) + "]";
|
14126
|
+
};
|
14128
14127
|
_proto.resetTransmuxer = function resetTransmuxer() {
|
14129
14128
|
if (this.transmuxer) {
|
14130
14129
|
this.transmuxer.destroy();
|
@@ -21987,7 +21986,7 @@
|
|
21987
21986
|
* Get the video-dev/hls.js package version.
|
21988
21987
|
*/
|
21989
21988
|
function get() {
|
21990
|
-
return "1.5.14-0.canary.
|
21989
|
+
return "1.5.14-0.canary.10431";
|
21991
21990
|
}
|
21992
21991
|
}, {
|
21993
21992
|
key: "Events",
|