hls.js 1.5.14-0.canary.10427 → 1.5.14-0.canary.10431

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.js CHANGED
@@ -522,7 +522,7 @@
522
522
  // Some browsers don't allow to use bind on console object anyway
523
523
  // fallback to default if needed
524
524
  try {
525
- newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.10427");
525
+ newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.10431");
526
526
  } catch (e) {
527
527
  /* log fn threw an exception. All logger methods are no-ops. */
528
528
  return createLogger();
@@ -9004,30 +9004,14 @@
9004
9004
  }
9005
9005
  return null;
9006
9006
  }
9007
- function shouldAlignOnDiscontinuities(lastFrag, switchDetails, details) {
9008
- if (switchDetails) {
9009
- if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {
9007
+ function shouldAlignOnDiscontinuities(refDetails, details) {
9008
+ if (refDetails) {
9009
+ if (details.startCC < refDetails.endCC && details.endCC > refDetails.startCC) {
9010
9010
  return true;
9011
9011
  }
9012
9012
  }
9013
9013
  return false;
9014
9014
  }
9015
-
9016
- // Find the first frag in the previous level which matches the CC of the first frag of the new level
9017
- function findDiscontinuousReferenceFrag(prevDetails, curDetails) {
9018
- var prevFrags = prevDetails.fragments;
9019
- var curFrags = curDetails.fragments;
9020
- if (!curFrags.length || !prevFrags.length) {
9021
- logger.log('No fragments to align');
9022
- return;
9023
- }
9024
- var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);
9025
- if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {
9026
- logger.log('No frag in previous level to align on');
9027
- return;
9028
- }
9029
- return prevStartFrag;
9030
- }
9031
9015
  function adjustFragmentStart(frag, sliding) {
9032
9016
  if (frag) {
9033
9017
  var start = frag.start + sliding;
@@ -9062,7 +9046,7 @@
9062
9046
  if (!switchDetails) {
9063
9047
  return;
9064
9048
  }
9065
- alignDiscontinuities(lastFrag, details, switchDetails);
9049
+ alignDiscontinuities(details, switchDetails);
9066
9050
  if (!details.alignedSliding && switchDetails) {
9067
9051
  // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.
9068
9052
  // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same
@@ -9078,20 +9062,24 @@
9078
9062
  }
9079
9063
 
9080
9064
  /**
9081
- * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same
9082
- * discontinuity sequence.
9083
- * @param lastFrag - The last Fragment which shares the same discontinuity sequence
9065
+ * Ajust the start of fragments in `details` by the difference in time between fragments of the latest
9066
+ * shared discontinuity sequence change.
9084
9067
  * @param lastLevel - The details of the last loaded level
9085
9068
  * @param details - The details of the new level
9086
9069
  */
9087
- function alignDiscontinuities(lastFrag, details, switchDetails) {
9088
- if (shouldAlignOnDiscontinuities(lastFrag, switchDetails, details)) {
9089
- var referenceFrag = findDiscontinuousReferenceFrag(switchDetails, details);
9090
- if (referenceFrag && isFiniteNumber(referenceFrag.start)) {
9091
- logger.log("Adjusting PTS using last level due to CC increase within current level " + details.url);
9092
- adjustSlidingStart(referenceFrag.start, details);
9093
- }
9070
+ function alignDiscontinuities(details, refDetails) {
9071
+ if (!shouldAlignOnDiscontinuities(refDetails, details)) {
9072
+ return;
9094
9073
  }
9074
+ var targetCC = Math.min(refDetails.endCC, details.endCC);
9075
+ var refFrag = findFirstFragWithCC(refDetails.fragments, targetCC);
9076
+ var frag = findFirstFragWithCC(details.fragments, targetCC);
9077
+ if (!refFrag || !frag) {
9078
+ return;
9079
+ }
9080
+ logger.log("Aligning playlist at start of dicontinuity sequence " + targetCC);
9081
+ var delta = refFrag.start - frag.start;
9082
+ adjustSlidingStart(delta, details);
9095
9083
  }
9096
9084
 
9097
9085
  /**
@@ -10247,7 +10235,7 @@
10247
10235
  return;
10248
10236
  }
10249
10237
  if ('payload' in data) {
10250
- _this3.log("Loaded fragment " + frag.sn + " of level " + frag.level);
10238
+ _this3.log("Loaded " + frag.type + " sn: " + frag.sn + " of " + _this3.playlistLabel() + " " + frag.level);
10251
10239
  _this3.hls.trigger(Events.FRAG_LOADED, data);
10252
10240
  }
10253
10241
 
@@ -10391,9 +10379,9 @@
10391
10379
  return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;
10392
10380
  };
10393
10381
  _proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {
10394
- var _frag$startPTS, _frag$endPTS, _this$fragCurrent, _this$fragPrevious;
10382
+ var _this$fragCurrent, _this$fragPrevious;
10395
10383
  var media = this.mediaBuffer ? this.mediaBuffer : this.media;
10396
- this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + (this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track') + " " + frag.level + " (frag:[" + ((_frag$startPTS = frag.startPTS) != null ? _frag$startPTS : NaN).toFixed(3) + "-" + ((_frag$endPTS = frag.endPTS) != null ? _frag$endPTS : NaN).toFixed(3) + "] > buffer:" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + ")");
10384
+ this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + " > buffer:" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + ")");
10397
10385
  if (frag.sn !== 'initSegment') {
10398
10386
  var _this$levels;
10399
10387
  if (frag.type !== PlaylistLevelType.SUBTITLE) {
@@ -10455,7 +10443,7 @@
10455
10443
  }
10456
10444
  var keyLoadingPromise = null;
10457
10445
  if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {
10458
- this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " + (this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track') + " " + frag.level);
10446
+ this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " + this.playlistLabel() + " " + frag.level);
10459
10447
  this.state = State.KEY_LOADING;
10460
10448
  this.fragCurrent = frag;
10461
10449
  keyLoadingPromise = this.keyLoader.load(frag).then(function (keyLoadedData) {
@@ -10494,7 +10482,7 @@
10494
10482
  var partIndex = this.getNextPart(partList, frag, targetBufferTime);
10495
10483
  if (partIndex > -1) {
10496
10484
  var part = partList[partIndex];
10497
- this.log("Loading part sn: " + frag.sn + " p: " + part.index + " cc: " + frag.cc + " of playlist [" + details.startSN + "-" + details.endSN + "] parts [0-" + partIndex + "-" + (partList.length - 1) + "] " + (this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track') + ": " + frag.level + ", target: " + parseFloat(targetBufferTime.toFixed(3)));
10485
+ this.log("Loading part sn: " + frag.sn + " p: " + part.index + " cc: " + frag.cc + " of playlist [" + details.startSN + "-" + details.endSN + "] parts [0-" + partIndex + "-" + (partList.length - 1) + "] " + this.playlistLabel() + ": " + frag.level + ", target: " + parseFloat(targetBufferTime.toFixed(3)));
10498
10486
  this.nextLoadPosition = part.start + part.duration;
10499
10487
  this.state = State.FRAG_LOADING;
10500
10488
  var _result;
@@ -10534,7 +10522,7 @@
10534
10522
  // Selected fragment hint for part but not loading parts
10535
10523
  return Promise.resolve(null);
10536
10524
  }
10537
- this.log("Loading fragment " + frag.sn + " cc: " + frag.cc + " " + (details ? 'of [' + details.startSN + '-' + details.endSN + '] ' : '') + (this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track') + ": " + frag.level + ", target: " + parseFloat(targetBufferTime.toFixed(3)));
10525
+ this.log("Loading " + frag.type + " sn: " + frag.sn + " of " + this.fragInfo(frag, false) + ") cc: " + frag.cc + " " + (details ? '[' + details.startSN + '-' + details.endSN + ']' : '') + ", target: " + parseFloat(targetBufferTime.toFixed(3)));
10538
10526
  // Don't update nextLoadPosition for fragments which are not buffered
10539
10527
  if (isFiniteNumber(frag.sn) && !this.bitrateTest) {
10540
10528
  this.nextLoadPosition = frag.start + frag.duration;
@@ -11298,11 +11286,22 @@
11298
11286
  // For this error fallthrough. Marking parsed will allow advancing to next fragment.
11299
11287
  }
11300
11288
  this.state = State.PARSED;
11289
+ this.log("Parsed " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + ")");
11301
11290
  this.hls.trigger(Events.FRAG_PARSED, {
11302
11291
  frag: frag,
11303
11292
  part: part
11304
11293
  });
11305
11294
  };
11295
+ _proto.playlistLabel = function playlistLabel() {
11296
+ return this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track';
11297
+ };
11298
+ _proto.fragInfo = function fragInfo(frag, pts) {
11299
+ var _ref3, _ref4;
11300
+ if (pts === void 0) {
11301
+ pts = true;
11302
+ }
11303
+ return this.playlistLabel() + " " + frag.level + " (frag:[" + ((_ref3 = pts ? frag.startPTS : frag.start) != null ? _ref3 : NaN).toFixed(3) + "-" + ((_ref4 = pts ? frag.endPTS : frag.end) != null ? _ref4 : NaN).toFixed(3) + "]";
11304
+ };
11306
11305
  _proto.resetTransmuxer = function resetTransmuxer() {
11307
11306
  if (this.transmuxer) {
11308
11307
  this.transmuxer.destroy();
@@ -30788,7 +30787,7 @@
30788
30787
  * Get the video-dev/hls.js package version.
30789
30788
  */
30790
30789
  function get() {
30791
- return "1.5.14-0.canary.10427";
30790
+ return "1.5.14-0.canary.10431";
30792
30791
  }
30793
30792
  }, {
30794
30793
  key: "Events",
package/dist/hls.js.d.ts CHANGED
@@ -328,6 +328,8 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
328
328
  protected resetWhenMissingContext(chunkMeta: ChunkMetadata): void;
329
329
  protected removeUnbufferedFrags(start?: number): void;
330
330
  private updateLevelTiming;
331
+ private playlistLabel;
332
+ private fragInfo;
331
333
  protected resetTransmuxer(): void;
332
334
  protected recoverWorkerError(data: ErrorData): void;
333
335
  set state(nextState: string);