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.
@@ -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();
@@ -12530,7 +12530,12 @@ class BaseStreamController extends TaskLoop {
12530
12530
  if (media) {
12531
12531
  // Remove gap fragments
12532
12532
  this.fragmentTracker.removeFragmentsInRange(currentTime, Infinity, this.playlistType, true);
12533
- this.lastCurrentTime = currentTime;
12533
+
12534
+ // Don't set lastCurrentTime with backward seeks (allows for frag selection with strict tolerances)
12535
+ const lastCurrentTime = this.lastCurrentTime;
12536
+ if (currentTime > lastCurrentTime) {
12537
+ this.lastCurrentTime = currentTime;
12538
+ }
12534
12539
  if (!this.loadingParts) {
12535
12540
  const bufferEnd = Math.max(bufferInfo.end, currentTime);
12536
12541
  const shouldLoadParts = this.shouldLoadParts(this.getLevelDetails(), bufferEnd);
@@ -13228,18 +13233,16 @@ class BaseStreamController extends TaskLoop {
13228
13233
  }
13229
13234
  }
13230
13235
  getFwdBufferInfo(bufferable, type) {
13236
+ var _this$media;
13231
13237
  const pos = this.getLoadPosition();
13232
13238
  if (!isFiniteNumber(pos)) {
13233
13239
  return null;
13234
13240
  }
13235
- return this.getFwdBufferInfoAtPos(bufferable, pos, type);
13241
+ const backwardSeek = this.lastCurrentTime > pos;
13242
+ const maxBufferHole = backwardSeek || (_this$media = this.media) != null && _this$media.paused ? 0 : this.config.maxBufferHole;
13243
+ return this.getFwdBufferInfoAtPos(bufferable, pos, type, maxBufferHole);
13236
13244
  }
13237
- getFwdBufferInfoAtPos(bufferable, pos, type) {
13238
- const {
13239
- config: {
13240
- maxBufferHole
13241
- }
13242
- } = this;
13245
+ getFwdBufferInfoAtPos(bufferable, pos, type, maxBufferHole) {
13243
13246
  const bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole);
13244
13247
  // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos
13245
13248
  if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {
@@ -13336,7 +13339,7 @@ class BaseStreamController extends TaskLoop {
13336
13339
  nextFragment = this.getNextFragment(this.nextLoadPosition, levelDetails);
13337
13340
  if (nextFragment && !nextFragment.gap && bufferInfo.nextStart) {
13338
13341
  // Media buffered after GAP tags should not make the next buffer timerange exceed forward buffer length
13339
- const nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType);
13342
+ const nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType, 0);
13340
13343
  if (nextbufferInfo !== null && bufferInfo.len + nextbufferInfo.len >= maxBufLen) {
13341
13344
  // Returning here might result in not finding an audio and video candiate to skip to
13342
13345
  const sn = nextFragment.sn;
@@ -13456,7 +13459,9 @@ class BaseStreamController extends TaskLoop {
13456
13459
  }
13457
13460
  let frag;
13458
13461
  if (bufferEnd < end) {
13459
- const lookupTolerance = bufferEnd > end - maxFragLookUpTolerance ? 0 : maxFragLookUpTolerance;
13462
+ var _this$media2;
13463
+ const backwardSeek = bufferEnd < this.lastCurrentTime;
13464
+ const lookupTolerance = backwardSeek || bufferEnd > end - maxFragLookUpTolerance || (_this$media2 = this.media) != null && _this$media2.paused ? 0 : maxFragLookUpTolerance;
13460
13465
  // Remove the tolerance if it would put the bufferEnd past the actual end of stream
13461
13466
  // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)
13462
13467
  frag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, lookupTolerance);
@@ -20665,7 +20670,7 @@ class Hls {
20665
20670
  * Get the video-dev/hls.js package version.
20666
20671
  */
20667
20672
  static get version() {
20668
- return "1.5.13-0.canary.10403";
20673
+ return "1.5.13-0.canary.10406";
20669
20674
  }
20670
20675
 
20671
20676
  /**