hls.js 1.6.0-beta.1.0.canary.10824 → 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.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.1.0.canary.10824"}`);
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.1.0.canary.10824";
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
- var _this$mediaSource2;
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 (mediaSource.readyState === 'open') {
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
- sourceBuffers[i].abort();
18006
+ if (open) {
18007
+ sourceBuffers[i].abort();
18008
+ }
18005
18009
  mediaSource.removeSourceBuffer(sourceBuffers[i]);
18006
18010
  }
18007
- // endOfStream could trigger exception if any sourcebuffer is in updating state
18008
- // we don't really care about checking sourcebuffer state here,
18009
- // as we are anyway detaching the MediaSource
18010
- // let's just avoid this exception to propagate
18011
- mediaSource.endOfStream();
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.mediaSource !== null && this.mediaSource.readyState === 'open') {
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$mediaSource4, _this$media;
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 && ((_this$mediaSource4 = this.mediaSource) == null ? void 0 : _this$mediaSource4.readyState) === 'open' && !((_this$media = this.media) != null && _this$media.error)) {
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$mediaSource5;
18881
- if (((_this$mediaSource5 = this.mediaSource) == null ? void 0 : _this$mediaSource5.readyState) === 'closed') {
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$mediaSource6;
18894
- const error = new Error(`${type} SourceBuffer error. MediaSource readyState: ${(_this$mediaSource6 = this.mediaSource) == null ? void 0 : _this$mediaSource6.readyState}`);
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;