hls.js 1.6.0-beta.1.0.canary.10765 → 1.6.0-beta.1.0.canary.10766
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.d.mts +1 -0
- package/dist/hls.d.ts +1 -0
- package/dist/hls.js +41 -24
- package/dist/hls.js.d.ts +1 -0
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +34 -17
- 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 -17
- 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 +41 -24
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/dist/hls.worker.js.map +1 -1
- package/package.json +1 -1
- package/src/controller/audio-stream-controller.ts +7 -7
- package/src/controller/base-stream-controller.ts +35 -20
- package/src/controller/stream-controller.ts +5 -5
- package/src/controller/subtitle-stream-controller.ts +9 -5
- package/src/loader/fragment.ts +5 -1
package/dist/hls.light.js
CHANGED
@@ -1028,7 +1028,7 @@
|
|
1028
1028
|
// Some browsers don't allow to use bind on console object anyway
|
1029
1029
|
// fallback to default if needed
|
1030
1030
|
try {
|
1031
|
-
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.1.0.canary.
|
1031
|
+
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.1.0.canary.10766");
|
1032
1032
|
} catch (e) {
|
1033
1033
|
/* log fn threw an exception. All logger methods are no-ops. */
|
1034
1034
|
return createLogger();
|
@@ -3272,6 +3272,10 @@
|
|
3272
3272
|
}
|
3273
3273
|
}]);
|
3274
3274
|
}();
|
3275
|
+
function isMediaFragment(frag) {
|
3276
|
+
return frag.sn !== 'initSegment';
|
3277
|
+
}
|
3278
|
+
|
3275
3279
|
/**
|
3276
3280
|
* Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}.
|
3277
3281
|
*/
|
@@ -3492,7 +3496,7 @@
|
|
3492
3496
|
}, {
|
3493
3497
|
key: "ref",
|
3494
3498
|
get: function get() {
|
3495
|
-
if (this
|
3499
|
+
if (!isMediaFragment(this)) {
|
3496
3500
|
return null;
|
3497
3501
|
}
|
3498
3502
|
if (!this._ref) {
|
@@ -18252,7 +18256,7 @@
|
|
18252
18256
|
_proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {
|
18253
18257
|
var media = this.mediaBuffer ? this.mediaBuffer : this.media;
|
18254
18258
|
this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag, false, part) + " > buffer:" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + ")");
|
18255
|
-
if (frag
|
18259
|
+
if (isMediaFragment(frag)) {
|
18256
18260
|
var _this$levels;
|
18257
18261
|
if (frag.type !== PlaylistLevelType.SUBTITLE) {
|
18258
18262
|
var el = frag.elementaryStreams;
|
@@ -18326,7 +18330,7 @@
|
|
18326
18330
|
this.keyLoader.loadClear(frag, details.encryptedFragments);
|
18327
18331
|
}
|
18328
18332
|
var fragPrevious = this.fragPrevious;
|
18329
|
-
if (frag
|
18333
|
+
if (isMediaFragment(frag) && (!fragPrevious || frag.sn !== fragPrevious.sn)) {
|
18330
18334
|
var shouldLoadParts = this.shouldLoadParts(level.details, frag.end);
|
18331
18335
|
if (shouldLoadParts !== this.loadingParts) {
|
18332
18336
|
this.log("LL-Part loading " + (shouldLoadParts ? 'ON' : 'OFF') + " loading sn " + (fragPrevious == null ? void 0 : fragPrevious.sn) + "->" + frag.sn);
|
@@ -18334,7 +18338,7 @@
|
|
18334
18338
|
}
|
18335
18339
|
}
|
18336
18340
|
targetBufferTime = Math.max(frag.start, targetBufferTime || 0);
|
18337
|
-
if (this.loadingParts && frag
|
18341
|
+
if (this.loadingParts && isMediaFragment(frag)) {
|
18338
18342
|
var partList = details.partList;
|
18339
18343
|
if (partList && progressCallback) {
|
18340
18344
|
if (targetBufferTime > frag.end && details.fragmentHint) {
|
@@ -18377,7 +18381,7 @@
|
|
18377
18381
|
}
|
18378
18382
|
}
|
18379
18383
|
}
|
18380
|
-
if (frag
|
18384
|
+
if (isMediaFragment(frag) && this.loadingParts) {
|
18381
18385
|
this.log("LL-Part loading OFF after next part miss @" + targetBufferTime.toFixed(2));
|
18382
18386
|
this.loadingParts = false;
|
18383
18387
|
} else if (!frag.url) {
|
@@ -18919,7 +18923,7 @@
|
|
18919
18923
|
return pos;
|
18920
18924
|
};
|
18921
18925
|
_proto.handleFragLoadAborted = function handleFragLoadAborted(frag, part) {
|
18922
|
-
if (this.transmuxer && frag
|
18926
|
+
if (this.transmuxer && isMediaFragment(frag) && frag.stats.aborted) {
|
18923
18927
|
this.warn("Fragment " + frag.sn + (part ? ' part ' + part.index : '') + " of level " + frag.level + " was aborted");
|
18924
18928
|
this.resetFragmentLoading(frag);
|
18925
18929
|
}
|
@@ -18954,10 +18958,18 @@
|
|
18954
18958
|
var errorAction = data.errorAction;
|
18955
18959
|
var _ref2 = errorAction || {},
|
18956
18960
|
action = _ref2.action,
|
18961
|
+
flags = _ref2.flags,
|
18957
18962
|
_ref2$retryCount = _ref2.retryCount,
|
18958
18963
|
retryCount = _ref2$retryCount === void 0 ? 0 : _ref2$retryCount,
|
18959
18964
|
retryConfig = _ref2.retryConfig;
|
18960
|
-
|
18965
|
+
var couldRetry = !!errorAction && !!retryConfig;
|
18966
|
+
var retry = couldRetry && action === NetworkErrorAction.RetryRequest;
|
18967
|
+
var noAlternate = couldRetry && !errorAction.resolved && flags === ErrorActionFlags.MoveAllAlternatesMatchingHost;
|
18968
|
+
if (!retry && noAlternate && isMediaFragment(frag) && !frag.endList) {
|
18969
|
+
this.resetFragmentErrors(filterType);
|
18970
|
+
this.treatAsGap(frag);
|
18971
|
+
errorAction.resolved = true;
|
18972
|
+
} else if ((retry || noAlternate) && retryCount < retryConfig.maxNumRetry) {
|
18961
18973
|
this.resetStartWhenNotLoaded(this.levelLastLoaded);
|
18962
18974
|
var delay = getRetryDelay(retryConfig, retryCount);
|
18963
18975
|
this.warn("Fragment " + frag.sn + " of " + filterType + " " + frag.level + " errored with " + data.details + ", retrying loading " + (retryCount + 1) + "/" + retryConfig.maxNumRetry + " in " + delay + "ms");
|
@@ -18975,7 +18987,7 @@
|
|
18975
18987
|
this.warn(data.details + " reached or exceeded max retry (" + retryCount + ")");
|
18976
18988
|
return;
|
18977
18989
|
}
|
18978
|
-
} else if (
|
18990
|
+
} else if (action === NetworkErrorAction.SendAlternateToPenaltyBox) {
|
18979
18991
|
this.state = State.WAITING_LEVEL;
|
18980
18992
|
} else {
|
18981
18993
|
this.state = State.ERROR;
|
@@ -19111,10 +19123,7 @@
|
|
19111
19123
|
var error = new Error("Found no media in fragment " + frag.sn + " of level " + frag.level + " resetting transmuxer to fallback to playlist timing");
|
19112
19124
|
if (level.fragmentError === 0) {
|
19113
19125
|
// Mark and track the odd empty segment as a gap to avoid reloading
|
19114
|
-
level
|
19115
|
-
frag.gap = true;
|
19116
|
-
this.fragmentTracker.removeFragment(frag);
|
19117
|
-
this.fragmentTracker.fragBuffered(frag, true);
|
19126
|
+
this.treatAsGap(frag, level);
|
19118
19127
|
}
|
19119
19128
|
this.warn(error.message);
|
19120
19129
|
this.hls.trigger(Events.ERROR, {
|
@@ -19148,6 +19157,14 @@
|
|
19148
19157
|
}
|
19149
19158
|
return this.playlistLabel() + " " + frag.level + " (" + (part ? 'part' : 'frag') + ":[" + ((_ref3 = pts && !part ? frag.startPTS : (part || frag).start) != null ? _ref3 : NaN).toFixed(3) + "-" + ((_ref4 = pts && !part ? frag.endPTS : (part || frag).end) != null ? _ref4 : NaN).toFixed(3) + "]" + (part && frag.type === 'main' ? 'INDEPENDENT=' + (part.independent ? 'YES' : 'NO') : '');
|
19150
19159
|
};
|
19160
|
+
_proto.treatAsGap = function treatAsGap(frag, level) {
|
19161
|
+
if (level) {
|
19162
|
+
level.fragmentError++;
|
19163
|
+
}
|
19164
|
+
frag.gap = true;
|
19165
|
+
this.fragmentTracker.removeFragment(frag);
|
19166
|
+
this.fragmentTracker.fragBuffered(frag, true);
|
19167
|
+
};
|
19151
19168
|
_proto.resetTransmuxer = function resetTransmuxer() {
|
19152
19169
|
var _this$transmuxer2;
|
19153
19170
|
(_this$transmuxer2 = this.transmuxer) == null ? void 0 : _this$transmuxer2.reset();
|
@@ -19692,7 +19709,7 @@
|
|
19692
19709
|
return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;
|
19693
19710
|
}
|
19694
19711
|
|
19695
|
-
var version = "1.6.0-beta.1.0.canary.
|
19712
|
+
var version = "1.6.0-beta.1.0.canary.10766";
|
19696
19713
|
|
19697
19714
|
// ensure the worker ends up in the bundle
|
19698
19715
|
// If the worker should not be included this gets aliased to empty.js
|
@@ -20336,7 +20353,7 @@
|
|
20336
20353
|
var targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end;
|
20337
20354
|
var frag = this.getNextFragment(targetBufferTime, levelDetails);
|
20338
20355
|
// Avoid backtracking by loading an earlier segment in streams with segments that do not start with a key frame (flagged by `couldBacktrack`)
|
20339
|
-
if (this.couldBacktrack && !this.fragPrevious && frag && frag
|
20356
|
+
if (this.couldBacktrack && !this.fragPrevious && frag && isMediaFragment(frag) && this.fragmentTracker.getState(frag) !== FragmentState.OK) {
|
20340
20357
|
var _this$backtrackFragme;
|
20341
20358
|
var backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn;
|
20342
20359
|
var fragIdx = backtrackSn - levelDetails.startSN;
|
@@ -20373,7 +20390,7 @@
|
|
20373
20390
|
// Check if fragment is not loaded
|
20374
20391
|
var fragState = this.fragmentTracker.getState(frag);
|
20375
20392
|
if (fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {
|
20376
|
-
if (frag
|
20393
|
+
if (!isMediaFragment(frag)) {
|
20377
20394
|
this._loadInitSegment(frag, level);
|
20378
20395
|
} else if (this.bitrateTest) {
|
20379
20396
|
this.log("Fragment " + frag.sn + " of level " + frag.level + " is being downloaded to test bitrate and will not be buffered");
|
@@ -20783,7 +20800,7 @@
|
|
20783
20800
|
}
|
20784
20801
|
var stats = part ? part.stats : frag.stats;
|
20785
20802
|
this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));
|
20786
|
-
if (frag
|
20803
|
+
if (isMediaFragment(frag)) {
|
20787
20804
|
this.fragPrevious = frag;
|
20788
20805
|
}
|
20789
20806
|
this.fragBufferedComplete(frag, part);
|