hls.js 1.4.6 → 1.4.8

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.
@@ -402,7 +402,7 @@ function enableLogs(debugConfig, 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
- exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.4.6"}`);
405
+ exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.4.8"}`);
406
406
  } catch (e) {
407
407
  exportedLogger = fakeLogger;
408
408
  }
@@ -8815,10 +8815,8 @@ class BaseStreamController extends TaskLoop {
8815
8815
  retryConfig
8816
8816
  } = errorAction || {};
8817
8817
  if (errorAction && action === NetworkErrorAction.RetryRequest && retryConfig) {
8818
- if (!this.loadedmetadata) {
8819
- this.startFragRequested = false;
8820
- this.nextLoadPosition = this.startPosition;
8821
- }
8818
+ var _this$levelLastLoaded;
8819
+ this.resetStartWhenNotLoaded((_this$levelLastLoaded = this.levelLastLoaded) != null ? _this$levelLastLoaded : frag.level);
8822
8820
  const delay = getRetryDelay(retryConfig, retryCount);
8823
8821
  this.warn(`Fragment ${frag.sn} of ${filterType} ${frag.level} errored with ${data.details}, retrying loading ${retryCount + 1}/${retryConfig.maxNumRetry} in ${delay}ms`);
8824
8822
  errorAction.resolved = true;
@@ -8834,6 +8832,8 @@ class BaseStreamController extends TaskLoop {
8834
8832
  } else {
8835
8833
  logger.warn(`${data.details} reached or exceeded max retry (${retryCount})`);
8836
8834
  }
8835
+ } else if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox) {
8836
+ this.state = State.WAITING_LEVEL;
8837
8837
  } else {
8838
8838
  this.state = State.ERROR;
8839
8839
  }
@@ -8916,9 +8916,10 @@ class BaseStreamController extends TaskLoop {
8916
8916
  }
8917
8917
  }
8918
8918
  resetWhenMissingContext(chunkMeta) {
8919
+ var _this$levelLastLoaded2;
8919
8920
  this.warn(`The loading context changed while buffering fragment ${chunkMeta.sn} of level ${chunkMeta.level}. This chunk will not be buffered.`);
8920
8921
  this.removeUnbufferedFrags();
8921
- this.resetStartWhenNotLoaded(chunkMeta.level);
8922
+ this.resetStartWhenNotLoaded((_this$levelLastLoaded2 = this.levelLastLoaded) != null ? _this$levelLastLoaded2 : chunkMeta.level);
8922
8923
  this.resetLoadingState();
8923
8924
  }
8924
8925
  removeUnbufferedFrags(start = 0) {
@@ -8990,7 +8991,10 @@ class BaseStreamController extends TaskLoop {
8990
8991
  }
8991
8992
  recoverWorkerError(data) {
8992
8993
  if (data.event === 'demuxerWorker') {
8994
+ var _ref, _this$levelLastLoaded3, _this$fragCurrent3;
8995
+ this.fragmentTracker.removeAllFragments();
8993
8996
  this.resetTransmuxer();
8997
+ this.resetStartWhenNotLoaded((_ref = (_this$levelLastLoaded3 = this.levelLastLoaded) != null ? _this$levelLastLoaded3 : (_this$fragCurrent3 = this.fragCurrent) == null ? void 0 : _this$fragCurrent3.level) != null ? _ref : 0);
8994
8998
  this.resetLoadingState();
8995
8999
  }
8996
9000
  }
@@ -15184,6 +15188,7 @@ class StreamController extends BaseStreamController {
15184
15188
  }
15185
15189
 
15186
15190
  // Avoid buffering if backtracking this fragment
15191
+ const notFirstFragment = frag.sn !== (details == null ? void 0 : details.startSN);
15187
15192
  if (video && remuxResult.independent !== false) {
15188
15193
  if (details) {
15189
15194
  const {
@@ -15209,7 +15214,7 @@ class StreamController extends BaseStreamController {
15209
15214
  const bufferInfo = this.getMainFwdBufferInfo();
15210
15215
  const targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole;
15211
15216
  const startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS;
15212
- if (targetBufferTime < startTime - this.config.maxBufferHole) {
15217
+ if (notFirstFragment && targetBufferTime < startTime - this.config.maxBufferHole) {
15213
15218
  this.backtrack(frag);
15214
15219
  return;
15215
15220
  }
@@ -15223,7 +15228,7 @@ class StreamController extends BaseStreamController {
15223
15228
  }
15224
15229
  this.bufferFragmentData(video, frag, part, chunkMeta);
15225
15230
  }
15226
- } else if (remuxResult.independent === false) {
15231
+ } else if (notFirstFragment && remuxResult.independent === false) {
15227
15232
  this.backtrack(frag);
15228
15233
  return;
15229
15234
  }
@@ -17252,6 +17257,7 @@ class XhrLoader {
17252
17257
  const stats = this.stats;
17253
17258
  stats.loading.first = 0;
17254
17259
  stats.loaded = 0;
17260
+ stats.aborted = false;
17255
17261
  const xhrSetup = this.xhrSetup;
17256
17262
  if (xhrSetup) {
17257
17263
  Promise.resolve().then(() => {
@@ -18079,7 +18085,7 @@ class Hls {
18079
18085
  * Get the video-dev/hls.js package version.
18080
18086
  */
18081
18087
  static get version() {
18082
- return "1.4.6";
18088
+ return "1.4.8";
18083
18089
  }
18084
18090
 
18085
18091
  /**