hls.js 1.6.0-beta.4.0.canary.11044 → 1.6.0-beta.4.0.canary.11046
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 +3 -1
- package/dist/hls.d.ts +3 -1
- package/dist/hls.js +197 -167
- package/dist/hls.js.d.ts +3 -1
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +39 -33
- 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 +38 -32
- 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 +149 -116
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/package.json +1 -1
- package/src/controller/base-stream-controller.ts +81 -69
- package/src/controller/buffer-controller.ts +2 -3
- package/src/controller/interstitial-player.ts +6 -3
- package/src/controller/interstitials-controller.ts +51 -27
- package/src/controller/interstitials-schedule.ts +21 -12
- package/src/controller/subtitle-stream-controller.ts +15 -14
- package/src/utils/level-helper.ts +6 -9
package/dist/hls.light.mjs
CHANGED
@@ -402,7 +402,7 @@ function enableLogs(debugConfig, context, id) {
|
|
402
402
|
// Some browsers don't allow to use bind on console object anyway
|
403
403
|
// fallback to default if needed
|
404
404
|
try {
|
405
|
-
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.6.0-beta.4.0.canary.
|
405
|
+
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.6.0-beta.4.0.canary.11046"}`);
|
406
406
|
} catch (e) {
|
407
407
|
/* log fn threw an exception. All logger methods are no-ops. */
|
408
408
|
return createLogger();
|
@@ -5672,15 +5672,12 @@ function findPart(partList, sn, partIndex) {
|
|
5672
5672
|
function reassignFragmentLevelIndexes(levels) {
|
5673
5673
|
levels.forEach((level, index) => {
|
5674
5674
|
var _level$details;
|
5675
|
-
|
5676
|
-
|
5677
|
-
|
5678
|
-
fragment.level = index;
|
5679
|
-
|
5680
|
-
|
5681
|
-
}
|
5682
|
-
});
|
5683
|
-
}
|
5675
|
+
(_level$details = level.details) == null ? void 0 : _level$details.fragments.forEach(fragment => {
|
5676
|
+
fragment.level = index;
|
5677
|
+
if (fragment.initSegment) {
|
5678
|
+
fragment.initSegment.level = index;
|
5679
|
+
}
|
5680
|
+
});
|
5684
5681
|
});
|
5685
5682
|
}
|
5686
5683
|
|
@@ -7863,6 +7860,7 @@ class BaseStreamController extends TaskLoop {
|
|
7863
7860
|
this.media = this.mediaBuffer = null;
|
7864
7861
|
this.loopSn = undefined;
|
7865
7862
|
if (transferringMedia) {
|
7863
|
+
this.resetLoadingState();
|
7866
7864
|
this.resetTransmuxer();
|
7867
7865
|
return;
|
7868
7866
|
}
|
@@ -7905,7 +7903,6 @@ class BaseStreamController extends TaskLoop {
|
|
7905
7903
|
super.onHandlerDestroyed();
|
7906
7904
|
}
|
7907
7905
|
loadFragment(frag, level, targetBufferTime) {
|
7908
|
-
this.hls.config;
|
7909
7906
|
this.startFragRequested = true;
|
7910
7907
|
this._loadFragForPlayback(frag, level, targetBufferTime);
|
7911
7908
|
}
|
@@ -8254,9 +8251,9 @@ class BaseStreamController extends TaskLoop {
|
|
8254
8251
|
}
|
8255
8252
|
doFragPartsLoad(frag, fromPart, level, progressCallback) {
|
8256
8253
|
return new Promise((resolve, reject) => {
|
8257
|
-
var _level$
|
8254
|
+
var _level$details;
|
8258
8255
|
const partsLoaded = [];
|
8259
|
-
const initialPartList = (_level$
|
8256
|
+
const initialPartList = (_level$details = level.details) == null ? void 0 : _level$details.partList;
|
8260
8257
|
const loadPart = part => {
|
8261
8258
|
this.fragmentLoader.loadPart(frag, part, progressCallback).then(partLoadedData => {
|
8262
8259
|
partsLoaded[part.index] = partLoadedData;
|
@@ -8531,6 +8528,7 @@ class BaseStreamController extends TaskLoop {
|
|
8531
8528
|
const end = this.loadingParts ? levelDetails.partEnd : levelDetails.fragmentEnd;
|
8532
8529
|
frag = this.getFragmentAtPosition(pos, end, levelDetails);
|
8533
8530
|
}
|
8531
|
+
frag = this.filterReplacedPrimary(frag, levelDetails);
|
8534
8532
|
return this.mapToInitFragWhenRequired(frag);
|
8535
8533
|
}
|
8536
8534
|
isLoopLoading(frag, targetBufferTime) {
|
@@ -8558,6 +8556,13 @@ class BaseStreamController extends TaskLoop {
|
|
8558
8556
|
this.loopSn = undefined;
|
8559
8557
|
return nextFragment;
|
8560
8558
|
}
|
8559
|
+
filterReplacedPrimary(frag, details) {
|
8560
|
+
if (!frag) {
|
8561
|
+
return frag;
|
8562
|
+
}
|
8563
|
+
this.hls.config;
|
8564
|
+
return frag;
|
8565
|
+
}
|
8561
8566
|
mapToInitFragWhenRequired(frag) {
|
8562
8567
|
// If an initSegment is present, it must be buffered first
|
8563
8568
|
if (frag != null && frag.initSegment && !(frag != null && frag.initSegment.data) && !this.bitrateTest) {
|
@@ -8930,7 +8935,6 @@ class BaseStreamController extends TaskLoop {
|
|
8930
8935
|
this.fragmentTracker.removeFragmentsInRange(start, Infinity, this.playlistType, false, true);
|
8931
8936
|
}
|
8932
8937
|
updateLevelTiming(frag, part, level, partial) {
|
8933
|
-
var _this$transmuxer;
|
8934
8938
|
const details = level.details;
|
8935
8939
|
if (!details) {
|
8936
8940
|
this.warn('level.details undefined');
|
@@ -8961,25 +8965,28 @@ class BaseStreamController extends TaskLoop {
|
|
8961
8965
|
}
|
8962
8966
|
return result;
|
8963
8967
|
}, false);
|
8964
|
-
if (!parsed
|
8965
|
-
|
8968
|
+
if (!parsed) {
|
8969
|
+
var _this$transmuxer;
|
8966
8970
|
if (level.fragmentError === 0) {
|
8967
8971
|
// Mark and track the odd empty segment as a gap to avoid reloading
|
8968
8972
|
this.treatAsGap(frag, level);
|
8969
8973
|
}
|
8970
|
-
this.
|
8971
|
-
|
8972
|
-
|
8973
|
-
|
8974
|
-
|
8975
|
-
|
8976
|
-
|
8977
|
-
|
8978
|
-
|
8979
|
-
|
8980
|
-
|
8974
|
+
if (((_this$transmuxer = this.transmuxer) == null ? void 0 : _this$transmuxer.error) === null) {
|
8975
|
+
const error = new Error(`Found no media in fragment ${frag.sn} of ${this.playlistLabel()} ${frag.level} resetting transmuxer to fallback to playlist timing`);
|
8976
|
+
this.warn(error.message);
|
8977
|
+
this.hls.trigger(Events.ERROR, {
|
8978
|
+
type: ErrorTypes.MEDIA_ERROR,
|
8979
|
+
details: ErrorDetails.FRAG_PARSING_ERROR,
|
8980
|
+
fatal: false,
|
8981
|
+
error,
|
8982
|
+
frag,
|
8983
|
+
reason: `Found no media in msn ${frag.sn} of ${this.playlistLabel()} "${level.url}"`
|
8984
|
+
});
|
8985
|
+
if (!this.hls) {
|
8986
|
+
return;
|
8987
|
+
}
|
8988
|
+
this.resetTransmuxer();
|
8981
8989
|
}
|
8982
|
-
this.resetTransmuxer();
|
8983
8990
|
// For this error fallthrough. Marking parsed will allow advancing to next fragment.
|
8984
8991
|
}
|
8985
8992
|
this.state = State.PARSED;
|
@@ -9246,15 +9253,14 @@ class BufferController extends Logger {
|
|
9246
9253
|
if (!media || !mediaSource) {
|
9247
9254
|
return;
|
9248
9255
|
}
|
9256
|
+
// once received, don't listen anymore to sourceopen event
|
9257
|
+
mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);
|
9249
9258
|
media.removeEventListener('emptied', this._onMediaEmptied);
|
9250
9259
|
this.updateDuration();
|
9251
9260
|
this.hls.trigger(Events.MEDIA_ATTACHED, {
|
9252
9261
|
media,
|
9253
9262
|
mediaSource: mediaSource
|
9254
9263
|
});
|
9255
|
-
|
9256
|
-
// once received, don't listen anymore to sourceopen event
|
9257
|
-
mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);
|
9258
9264
|
if (this.mediaSource !== null) {
|
9259
9265
|
this.checkPendingTracks();
|
9260
9266
|
}
|
@@ -19467,7 +19473,7 @@ function assignTrackIdsByGroup(tracks) {
|
|
19467
19473
|
});
|
19468
19474
|
}
|
19469
19475
|
|
19470
|
-
const version = "1.6.0-beta.4.0.canary.
|
19476
|
+
const version = "1.6.0-beta.4.0.canary.11046";
|
19471
19477
|
|
19472
19478
|
// ensure the worker ends up in the bundle
|
19473
19479
|
// If the worker should not be included this gets aliased to empty.js
|