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.js
CHANGED
@@ -522,7 +522,7 @@
|
|
522
522
|
// Some browsers don't allow to use bind on console object anyway
|
523
523
|
// fallback to default if needed
|
524
524
|
try {
|
525
|
-
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.
|
525
|
+
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.10431");
|
526
526
|
} catch (e) {
|
527
527
|
/* log fn threw an exception. All logger methods are no-ops. */
|
528
528
|
return createLogger();
|
@@ -9004,30 +9004,14 @@
|
|
9004
9004
|
}
|
9005
9005
|
return null;
|
9006
9006
|
}
|
9007
|
-
function shouldAlignOnDiscontinuities(
|
9008
|
-
if (
|
9009
|
-
if (details.
|
9007
|
+
function shouldAlignOnDiscontinuities(refDetails, details) {
|
9008
|
+
if (refDetails) {
|
9009
|
+
if (details.startCC < refDetails.endCC && details.endCC > refDetails.startCC) {
|
9010
9010
|
return true;
|
9011
9011
|
}
|
9012
9012
|
}
|
9013
9013
|
return false;
|
9014
9014
|
}
|
9015
|
-
|
9016
|
-
// Find the first frag in the previous level which matches the CC of the first frag of the new level
|
9017
|
-
function findDiscontinuousReferenceFrag(prevDetails, curDetails) {
|
9018
|
-
var prevFrags = prevDetails.fragments;
|
9019
|
-
var curFrags = curDetails.fragments;
|
9020
|
-
if (!curFrags.length || !prevFrags.length) {
|
9021
|
-
logger.log('No fragments to align');
|
9022
|
-
return;
|
9023
|
-
}
|
9024
|
-
var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);
|
9025
|
-
if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {
|
9026
|
-
logger.log('No frag in previous level to align on');
|
9027
|
-
return;
|
9028
|
-
}
|
9029
|
-
return prevStartFrag;
|
9030
|
-
}
|
9031
9015
|
function adjustFragmentStart(frag, sliding) {
|
9032
9016
|
if (frag) {
|
9033
9017
|
var start = frag.start + sliding;
|
@@ -9062,7 +9046,7 @@
|
|
9062
9046
|
if (!switchDetails) {
|
9063
9047
|
return;
|
9064
9048
|
}
|
9065
|
-
alignDiscontinuities(
|
9049
|
+
alignDiscontinuities(details, switchDetails);
|
9066
9050
|
if (!details.alignedSliding && switchDetails) {
|
9067
9051
|
// If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.
|
9068
9052
|
// Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same
|
@@ -9078,20 +9062,24 @@
|
|
9078
9062
|
}
|
9079
9063
|
|
9080
9064
|
/**
|
9081
|
-
*
|
9082
|
-
* discontinuity sequence.
|
9083
|
-
* @param lastFrag - The last Fragment which shares the same discontinuity sequence
|
9065
|
+
* Ajust the start of fragments in `details` by the difference in time between fragments of the latest
|
9066
|
+
* shared discontinuity sequence change.
|
9084
9067
|
* @param lastLevel - The details of the last loaded level
|
9085
9068
|
* @param details - The details of the new level
|
9086
9069
|
*/
|
9087
|
-
function alignDiscontinuities(
|
9088
|
-
if (shouldAlignOnDiscontinuities(
|
9089
|
-
|
9090
|
-
if (referenceFrag && isFiniteNumber(referenceFrag.start)) {
|
9091
|
-
logger.log("Adjusting PTS using last level due to CC increase within current level " + details.url);
|
9092
|
-
adjustSlidingStart(referenceFrag.start, details);
|
9093
|
-
}
|
9070
|
+
function alignDiscontinuities(details, refDetails) {
|
9071
|
+
if (!shouldAlignOnDiscontinuities(refDetails, details)) {
|
9072
|
+
return;
|
9094
9073
|
}
|
9074
|
+
var targetCC = Math.min(refDetails.endCC, details.endCC);
|
9075
|
+
var refFrag = findFirstFragWithCC(refDetails.fragments, targetCC);
|
9076
|
+
var frag = findFirstFragWithCC(details.fragments, targetCC);
|
9077
|
+
if (!refFrag || !frag) {
|
9078
|
+
return;
|
9079
|
+
}
|
9080
|
+
logger.log("Aligning playlist at start of dicontinuity sequence " + targetCC);
|
9081
|
+
var delta = refFrag.start - frag.start;
|
9082
|
+
adjustSlidingStart(delta, details);
|
9095
9083
|
}
|
9096
9084
|
|
9097
9085
|
/**
|
@@ -10247,7 +10235,7 @@
|
|
10247
10235
|
return;
|
10248
10236
|
}
|
10249
10237
|
if ('payload' in data) {
|
10250
|
-
_this3.log("Loaded
|
10238
|
+
_this3.log("Loaded " + frag.type + " sn: " + frag.sn + " of " + _this3.playlistLabel() + " " + frag.level);
|
10251
10239
|
_this3.hls.trigger(Events.FRAG_LOADED, data);
|
10252
10240
|
}
|
10253
10241
|
|
@@ -10391,9 +10379,9 @@
|
|
10391
10379
|
return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;
|
10392
10380
|
};
|
10393
10381
|
_proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {
|
10394
|
-
var
|
10382
|
+
var _this$fragCurrent, _this$fragPrevious;
|
10395
10383
|
var media = this.mediaBuffer ? this.mediaBuffer : this.media;
|
10396
|
-
this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " +
|
10384
|
+
this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + " > buffer:" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + ")");
|
10397
10385
|
if (frag.sn !== 'initSegment') {
|
10398
10386
|
var _this$levels;
|
10399
10387
|
if (frag.type !== PlaylistLevelType.SUBTITLE) {
|
@@ -10455,7 +10443,7 @@
|
|
10455
10443
|
}
|
10456
10444
|
var keyLoadingPromise = null;
|
10457
10445
|
if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {
|
10458
|
-
this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " +
|
10446
|
+
this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " + this.playlistLabel() + " " + frag.level);
|
10459
10447
|
this.state = State.KEY_LOADING;
|
10460
10448
|
this.fragCurrent = frag;
|
10461
10449
|
keyLoadingPromise = this.keyLoader.load(frag).then(function (keyLoadedData) {
|
@@ -10494,7 +10482,7 @@
|
|
10494
10482
|
var partIndex = this.getNextPart(partList, frag, targetBufferTime);
|
10495
10483
|
if (partIndex > -1) {
|
10496
10484
|
var part = partList[partIndex];
|
10497
|
-
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) + "] " +
|
10485
|
+
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)));
|
10498
10486
|
this.nextLoadPosition = part.start + part.duration;
|
10499
10487
|
this.state = State.FRAG_LOADING;
|
10500
10488
|
var _result;
|
@@ -10534,7 +10522,7 @@
|
|
10534
10522
|
// Selected fragment hint for part but not loading parts
|
10535
10523
|
return Promise.resolve(null);
|
10536
10524
|
}
|
10537
|
-
this.log("Loading
|
10525
|
+
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)));
|
10538
10526
|
// Don't update nextLoadPosition for fragments which are not buffered
|
10539
10527
|
if (isFiniteNumber(frag.sn) && !this.bitrateTest) {
|
10540
10528
|
this.nextLoadPosition = frag.start + frag.duration;
|
@@ -11298,11 +11286,22 @@
|
|
11298
11286
|
// For this error fallthrough. Marking parsed will allow advancing to next fragment.
|
11299
11287
|
}
|
11300
11288
|
this.state = State.PARSED;
|
11289
|
+
this.log("Parsed " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + ")");
|
11301
11290
|
this.hls.trigger(Events.FRAG_PARSED, {
|
11302
11291
|
frag: frag,
|
11303
11292
|
part: part
|
11304
11293
|
});
|
11305
11294
|
};
|
11295
|
+
_proto.playlistLabel = function playlistLabel() {
|
11296
|
+
return this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track';
|
11297
|
+
};
|
11298
|
+
_proto.fragInfo = function fragInfo(frag, pts) {
|
11299
|
+
var _ref3, _ref4;
|
11300
|
+
if (pts === void 0) {
|
11301
|
+
pts = true;
|
11302
|
+
}
|
11303
|
+
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) + "]";
|
11304
|
+
};
|
11306
11305
|
_proto.resetTransmuxer = function resetTransmuxer() {
|
11307
11306
|
if (this.transmuxer) {
|
11308
11307
|
this.transmuxer.destroy();
|
@@ -30788,7 +30787,7 @@
|
|
30788
30787
|
* Get the video-dev/hls.js package version.
|
30789
30788
|
*/
|
30790
30789
|
function get() {
|
30791
|
-
return "1.5.14-0.canary.
|
30790
|
+
return "1.5.14-0.canary.10431";
|
30792
30791
|
}
|
30793
30792
|
}, {
|
30794
30793
|
key: "Events",
|
package/dist/hls.js.d.ts
CHANGED
@@ -328,6 +328,8 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
|
|
328
328
|
protected resetWhenMissingContext(chunkMeta: ChunkMetadata): void;
|
329
329
|
protected removeUnbufferedFrags(start?: number): void;
|
330
330
|
private updateLevelTiming;
|
331
|
+
private playlistLabel;
|
332
|
+
private fragInfo;
|
331
333
|
protected resetTransmuxer(): void;
|
332
334
|
protected recoverWorkerError(data: ErrorData): void;
|
333
335
|
set state(nextState: string);
|