hls.js 1.6.0-beta.1.0.canary.10826 → 1.6.0-beta.2
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 +2 -0
- package/dist/hls.d.ts +2 -0
- package/dist/hls.js +32 -19
- package/dist/hls.js.d.ts +2 -0
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +26 -18
- 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 +28 -22
- 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 -23
- 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/buffer-controller.ts +21 -14
- package/src/controller/interstitials-controller.ts +7 -1
package/dist/hls.mjs
CHANGED
@@ -401,7 +401,7 @@ function enableLogs(debugConfig, context, id) {
|
|
401
401
|
// Some browsers don't allow to use bind on console object anyway
|
402
402
|
// fallback to default if needed
|
403
403
|
try {
|
404
|
-
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.6.0-beta.
|
404
|
+
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.6.0-beta.2"}`);
|
405
405
|
} catch (e) {
|
406
406
|
/* log fn threw an exception. All logger methods are no-ops. */
|
407
407
|
return createLogger();
|
@@ -9836,7 +9836,7 @@ var eventemitter3 = {exports: {}};
|
|
9836
9836
|
var eventemitter3Exports = eventemitter3.exports;
|
9837
9837
|
var EventEmitter = /*@__PURE__*/getDefaultExportFromCjs(eventemitter3Exports);
|
9838
9838
|
|
9839
|
-
const version = "1.6.0-beta.
|
9839
|
+
const version = "1.6.0-beta.2";
|
9840
9840
|
|
9841
9841
|
// ensure the worker ends up in the bundle
|
9842
9842
|
// If the worker should not be included this gets aliased to empty.js
|
@@ -17910,12 +17910,8 @@ class BufferController extends Logger {
|
|
17910
17910
|
const trackNames = transferredTracks ? Object.keys(transferredTracks) : null;
|
17911
17911
|
const trackCount = trackNames ? trackNames.length : 0;
|
17912
17912
|
const mediaSourceOpenCallback = () => {
|
17913
|
-
if (this.media) {
|
17914
|
-
|
17915
|
-
const readyState = (_this$mediaSource2 = this.mediaSource) == null ? void 0 : _this$mediaSource2.readyState;
|
17916
|
-
if (readyState === 'open' || readyState === 'ended') {
|
17917
|
-
this._onMediaSourceOpen();
|
17918
|
-
}
|
17913
|
+
if (this.media && this.mediaSourceOpenOrEnded) {
|
17914
|
+
this._onMediaSourceOpen();
|
17919
17915
|
}
|
17920
17916
|
};
|
17921
17917
|
if (transferredTracks && trackNames && trackCount) {
|
@@ -17977,6 +17973,11 @@ transfer tracks: ${JSON.stringify(transferredTracks, (key, value) => key === 'in
|
|
17977
17973
|
mediaSourceOpenCallback();
|
17978
17974
|
}
|
17979
17975
|
}
|
17976
|
+
get mediaSourceOpenOrEnded() {
|
17977
|
+
var _this$mediaSource2;
|
17978
|
+
const readyState = (_this$mediaSource2 = this.mediaSource) == null ? void 0 : _this$mediaSource2.readyState;
|
17979
|
+
return readyState === 'open' || readyState === 'ended';
|
17980
|
+
}
|
17980
17981
|
onMediaDetaching(event, data) {
|
17981
17982
|
const transferringMedia = !!data.transferMedia;
|
17982
17983
|
this.transferData = this.overrides = undefined;
|
@@ -17997,18 +17998,23 @@ transfer tracks: ${JSON.stringify(transferredTracks, (key, value) => key === 'in
|
|
17997
17998
|
});
|
17998
17999
|
this.resetQueue();
|
17999
18000
|
} else {
|
18000
|
-
if (
|
18001
|
+
if (this.mediaSourceOpenOrEnded) {
|
18002
|
+
const open = mediaSource.readyState === 'open';
|
18001
18003
|
try {
|
18002
18004
|
const sourceBuffers = mediaSource.sourceBuffers;
|
18003
18005
|
for (let i = sourceBuffers.length; i--;) {
|
18004
|
-
|
18006
|
+
if (open) {
|
18007
|
+
sourceBuffers[i].abort();
|
18008
|
+
}
|
18005
18009
|
mediaSource.removeSourceBuffer(sourceBuffers[i]);
|
18006
18010
|
}
|
18007
|
-
|
18008
|
-
|
18009
|
-
|
18010
|
-
|
18011
|
-
|
18011
|
+
if (open) {
|
18012
|
+
// endOfStream could trigger exception if any sourcebuffer is in updating state
|
18013
|
+
// we don't really care about checking sourcebuffer state here,
|
18014
|
+
// as we are anyway detaching the MediaSource
|
18015
|
+
// let's just avoid this exception to propagate
|
18016
|
+
mediaSource.endOfStream();
|
18017
|
+
}
|
18012
18018
|
} catch (err) {
|
18013
18019
|
this.warn(`onMediaDetaching: ${err.message} while calling endOfStream`);
|
18014
18020
|
}
|
@@ -18157,7 +18163,7 @@ transfer tracks: ${JSON.stringify(transferredTracks, (key, value) => key === 'in
|
|
18157
18163
|
if (this.sourceBufferCount) {
|
18158
18164
|
return;
|
18159
18165
|
}
|
18160
|
-
if (this.
|
18166
|
+
if (this.mediaSourceOpenOrEnded) {
|
18161
18167
|
this.checkPendingTracks();
|
18162
18168
|
}
|
18163
18169
|
}
|
@@ -18360,7 +18366,7 @@ transfer tracks: ${JSON.stringify(transferredTracks, (key, value) => key === 'in
|
|
18360
18366
|
});
|
18361
18367
|
},
|
18362
18368
|
onError: error => {
|
18363
|
-
var _this$
|
18369
|
+
var _this$media;
|
18364
18370
|
// in case any error occured while appending, put back segment in segments table
|
18365
18371
|
const event = {
|
18366
18372
|
type: ErrorTypes.MEDIA_ERROR,
|
@@ -18378,7 +18384,7 @@ transfer tracks: ${JSON.stringify(transferredTracks, (key, value) => key === 'in
|
|
18378
18384
|
// QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror
|
18379
18385
|
// let's stop appending any segments, and report BUFFER_FULL_ERROR error
|
18380
18386
|
event.details = ErrorDetails.BUFFER_FULL_ERROR;
|
18381
|
-
} else if (error.code === DOMException.INVALID_STATE_ERR &&
|
18387
|
+
} else if (error.code === DOMException.INVALID_STATE_ERR && this.mediaSourceOpenOrEnded && !((_this$media = this.media) != null && _this$media.error)) {
|
18382
18388
|
// Allow retry for "Failed to execute 'appendBuffer' on 'SourceBuffer': This SourceBuffer is still processing" errors
|
18383
18389
|
event.errorAction = createDoNothingErrorAction(true);
|
18384
18390
|
} else if (error.name === TRACK_REMOVED_ERROR_NAME) {
|
@@ -18877,8 +18883,8 @@ transfer tracks: ${JSON.stringify(transferredTracks, (key, value) => key === 'in
|
|
18877
18883
|
operation.onStart();
|
18878
18884
|
}
|
18879
18885
|
onSBUpdateEnd(type) {
|
18880
|
-
var _this$
|
18881
|
-
if (((_this$
|
18886
|
+
var _this$mediaSource4;
|
18887
|
+
if (((_this$mediaSource4 = this.mediaSource) == null ? void 0 : _this$mediaSource4.readyState) === 'closed') {
|
18882
18888
|
this.resetBuffer(type);
|
18883
18889
|
return;
|
18884
18890
|
}
|
@@ -18890,8 +18896,8 @@ transfer tracks: ${JSON.stringify(transferredTracks, (key, value) => key === 'in
|
|
18890
18896
|
this.shiftAndExecuteNext(type);
|
18891
18897
|
}
|
18892
18898
|
onSBUpdateError(type, event) {
|
18893
|
-
var _this$
|
18894
|
-
const error = new Error(`${type} SourceBuffer error. MediaSource readyState: ${(_this$
|
18899
|
+
var _this$mediaSource5;
|
18900
|
+
const error = new Error(`${type} SourceBuffer error. MediaSource readyState: ${(_this$mediaSource5 = this.mediaSource) == null ? void 0 : _this$mediaSource5.readyState}`);
|
18895
18901
|
this.error(`${error}`, event);
|
18896
18902
|
// according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error
|
18897
18903
|
// SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event
|
@@ -23609,6 +23615,9 @@ class InterstitialsController extends Logger {
|
|
23609
23615
|
this.onPlay = () => {
|
23610
23616
|
this.shouldPlay = true;
|
23611
23617
|
};
|
23618
|
+
this.onPause = () => {
|
23619
|
+
this.shouldPlay = false;
|
23620
|
+
};
|
23612
23621
|
this.onSeeking = () => {
|
23613
23622
|
const currentTime = this.currentTime;
|
23614
23623
|
if (currentTime === undefined || this.playbackDisabled) {
|
@@ -23862,7 +23871,7 @@ Schedule: ${scheduleItems.map(seg => segmentToString(seg))}`);
|
|
23862
23871
|
// @ts-ignore
|
23863
23872
|
this.assetListLoader = null;
|
23864
23873
|
// @ts-ignore
|
23865
|
-
this.onPlay = this.onSeeking = this.onTimeupdate = null;
|
23874
|
+
this.onPlay = this.onPause = this.onSeeking = this.onTimeupdate = null;
|
23866
23875
|
// @ts-ignore
|
23867
23876
|
this.onScheduleUpdate = null;
|
23868
23877
|
}
|
@@ -23874,6 +23883,7 @@ Schedule: ${scheduleItems.map(seg => segmentToString(seg))}`);
|
|
23874
23883
|
}
|
23875
23884
|
removeMediaListeners(media) {
|
23876
23885
|
media.removeEventListener('play', this.onPlay);
|
23886
|
+
media.removeEventListener('pause', this.onPause);
|
23877
23887
|
media.removeEventListener('seeking', this.onSeeking);
|
23878
23888
|
media.removeEventListener('timeupdate', this.onTimeupdate);
|
23879
23889
|
}
|
@@ -23883,6 +23893,7 @@ Schedule: ${scheduleItems.map(seg => segmentToString(seg))}`);
|
|
23883
23893
|
media.addEventListener('seeking', this.onSeeking);
|
23884
23894
|
media.addEventListener('timeupdate', this.onTimeupdate);
|
23885
23895
|
media.addEventListener('play', this.onPlay);
|
23896
|
+
media.addEventListener('pause', this.onPause);
|
23886
23897
|
}
|
23887
23898
|
onMediaAttached(event, data) {
|
23888
23899
|
const playingItem = this.playingItem;
|