hls.js 1.5.13-0.canary.10403 → 1.5.13-0.canary.10406

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
@@ -420,7 +420,7 @@ function enableLogs(debugConfig, context, id) {
420
420
  // Some browsers don't allow to use bind on console object anyway
421
421
  // fallback to default if needed
422
422
  try {
423
- newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.5.13-0.canary.10403"}`);
423
+ newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.5.13-0.canary.10406"}`);
424
424
  } catch (e) {
425
425
  /* log fn threw an exception. All logger methods are no-ops. */
426
426
  return createLogger();
@@ -9684,7 +9684,12 @@ class BaseStreamController extends TaskLoop {
9684
9684
  if (media) {
9685
9685
  // Remove gap fragments
9686
9686
  this.fragmentTracker.removeFragmentsInRange(currentTime, Infinity, this.playlistType, true);
9687
- this.lastCurrentTime = currentTime;
9687
+
9688
+ // Don't set lastCurrentTime with backward seeks (allows for frag selection with strict tolerances)
9689
+ const lastCurrentTime = this.lastCurrentTime;
9690
+ if (currentTime > lastCurrentTime) {
9691
+ this.lastCurrentTime = currentTime;
9692
+ }
9688
9693
  if (!this.loadingParts) {
9689
9694
  const bufferEnd = Math.max(bufferInfo.end, currentTime);
9690
9695
  const shouldLoadParts = this.shouldLoadParts(this.getLevelDetails(), bufferEnd);
@@ -10382,18 +10387,16 @@ class BaseStreamController extends TaskLoop {
10382
10387
  }
10383
10388
  }
10384
10389
  getFwdBufferInfo(bufferable, type) {
10390
+ var _this$media;
10385
10391
  const pos = this.getLoadPosition();
10386
10392
  if (!isFiniteNumber(pos)) {
10387
10393
  return null;
10388
10394
  }
10389
- return this.getFwdBufferInfoAtPos(bufferable, pos, type);
10395
+ const backwardSeek = this.lastCurrentTime > pos;
10396
+ const maxBufferHole = backwardSeek || (_this$media = this.media) != null && _this$media.paused ? 0 : this.config.maxBufferHole;
10397
+ return this.getFwdBufferInfoAtPos(bufferable, pos, type, maxBufferHole);
10390
10398
  }
10391
- getFwdBufferInfoAtPos(bufferable, pos, type) {
10392
- const {
10393
- config: {
10394
- maxBufferHole
10395
- }
10396
- } = this;
10399
+ getFwdBufferInfoAtPos(bufferable, pos, type, maxBufferHole) {
10397
10400
  const bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole);
10398
10401
  // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos
10399
10402
  if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {
@@ -10490,7 +10493,7 @@ class BaseStreamController extends TaskLoop {
10490
10493
  nextFragment = this.getNextFragment(this.nextLoadPosition, levelDetails);
10491
10494
  if (nextFragment && !nextFragment.gap && bufferInfo.nextStart) {
10492
10495
  // Media buffered after GAP tags should not make the next buffer timerange exceed forward buffer length
10493
- const nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType);
10496
+ const nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType, 0);
10494
10497
  if (nextbufferInfo !== null && bufferInfo.len + nextbufferInfo.len >= maxBufLen) {
10495
10498
  // Returning here might result in not finding an audio and video candiate to skip to
10496
10499
  const sn = nextFragment.sn;
@@ -10610,7 +10613,9 @@ class BaseStreamController extends TaskLoop {
10610
10613
  }
10611
10614
  let frag;
10612
10615
  if (bufferEnd < end) {
10613
- const lookupTolerance = bufferEnd > end - maxFragLookUpTolerance ? 0 : maxFragLookUpTolerance;
10616
+ var _this$media2;
10617
+ const backwardSeek = bufferEnd < this.lastCurrentTime;
10618
+ const lookupTolerance = backwardSeek || bufferEnd > end - maxFragLookUpTolerance || (_this$media2 = this.media) != null && _this$media2.paused ? 0 : maxFragLookUpTolerance;
10614
10619
  // Remove the tolerance if it would put the bufferEnd past the actual end of stream
10615
10620
  // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)
10616
10621
  frag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, lookupTolerance);
@@ -29280,7 +29285,7 @@ class Hls {
29280
29285
  * Get the video-dev/hls.js package version.
29281
29286
  */
29282
29287
  static get version() {
29283
- return "1.5.13-0.canary.10403";
29288
+ return "1.5.13-0.canary.10406";
29284
29289
  }
29285
29290
 
29286
29291
  /**