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.light.js CHANGED
@@ -493,7 +493,7 @@
493
493
  // Some browsers don't allow to use bind on console object anyway
494
494
  // fallback to default if needed
495
495
  try {
496
- newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.10427");
496
+ newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.14-0.canary.10431");
497
497
  } catch (e) {
498
498
  /* log fn threw an exception. All logger methods are no-ops. */
499
499
  return createLogger();
@@ -12154,30 +12154,14 @@
12154
12154
  }
12155
12155
  return null;
12156
12156
  }
12157
- function shouldAlignOnDiscontinuities(lastFrag, switchDetails, details) {
12158
- if (switchDetails) {
12159
- if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {
12157
+ function shouldAlignOnDiscontinuities(refDetails, details) {
12158
+ if (refDetails) {
12159
+ if (details.startCC < refDetails.endCC && details.endCC > refDetails.startCC) {
12160
12160
  return true;
12161
12161
  }
12162
12162
  }
12163
12163
  return false;
12164
12164
  }
12165
-
12166
- // Find the first frag in the previous level which matches the CC of the first frag of the new level
12167
- function findDiscontinuousReferenceFrag(prevDetails, curDetails) {
12168
- var prevFrags = prevDetails.fragments;
12169
- var curFrags = curDetails.fragments;
12170
- if (!curFrags.length || !prevFrags.length) {
12171
- logger.log('No fragments to align');
12172
- return;
12173
- }
12174
- var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);
12175
- if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {
12176
- logger.log('No frag in previous level to align on');
12177
- return;
12178
- }
12179
- return prevStartFrag;
12180
- }
12181
12165
  function adjustFragmentStart(frag, sliding) {
12182
12166
  if (frag) {
12183
12167
  var start = frag.start + sliding;
@@ -12212,7 +12196,7 @@
12212
12196
  if (!switchDetails) {
12213
12197
  return;
12214
12198
  }
12215
- alignDiscontinuities(lastFrag, details, switchDetails);
12199
+ alignDiscontinuities(details, switchDetails);
12216
12200
  if (!details.alignedSliding && switchDetails) {
12217
12201
  // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.
12218
12202
  // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same
@@ -12228,20 +12212,24 @@
12228
12212
  }
12229
12213
 
12230
12214
  /**
12231
- * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same
12232
- * discontinuity sequence.
12233
- * @param lastFrag - The last Fragment which shares the same discontinuity sequence
12215
+ * Ajust the start of fragments in `details` by the difference in time between fragments of the latest
12216
+ * shared discontinuity sequence change.
12234
12217
  * @param lastLevel - The details of the last loaded level
12235
12218
  * @param details - The details of the new level
12236
12219
  */
12237
- function alignDiscontinuities(lastFrag, details, switchDetails) {
12238
- if (shouldAlignOnDiscontinuities(lastFrag, switchDetails, details)) {
12239
- var referenceFrag = findDiscontinuousReferenceFrag(switchDetails, details);
12240
- if (referenceFrag && isFiniteNumber(referenceFrag.start)) {
12241
- logger.log("Adjusting PTS using last level due to CC increase within current level " + details.url);
12242
- adjustSlidingStart(referenceFrag.start, details);
12243
- }
12220
+ function alignDiscontinuities(details, refDetails) {
12221
+ if (!shouldAlignOnDiscontinuities(refDetails, details)) {
12222
+ return;
12244
12223
  }
12224
+ var targetCC = Math.min(refDetails.endCC, details.endCC);
12225
+ var refFrag = findFirstFragWithCC(refDetails.fragments, targetCC);
12226
+ var frag = findFirstFragWithCC(details.fragments, targetCC);
12227
+ if (!refFrag || !frag) {
12228
+ return;
12229
+ }
12230
+ logger.log("Aligning playlist at start of dicontinuity sequence " + targetCC);
12231
+ var delta = refFrag.start - frag.start;
12232
+ adjustSlidingStart(delta, details);
12245
12233
  }
12246
12234
 
12247
12235
  /**
@@ -13069,7 +13057,7 @@
13069
13057
  return;
13070
13058
  }
13071
13059
  if ('payload' in data) {
13072
- _this3.log("Loaded fragment " + frag.sn + " of level " + frag.level);
13060
+ _this3.log("Loaded " + frag.type + " sn: " + frag.sn + " of " + _this3.playlistLabel() + " " + frag.level);
13073
13061
  _this3.hls.trigger(Events.FRAG_LOADED, data);
13074
13062
  }
13075
13063
 
@@ -13213,9 +13201,9 @@
13213
13201
  return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;
13214
13202
  };
13215
13203
  _proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {
13216
- var _frag$startPTS, _frag$endPTS, _this$fragCurrent, _this$fragPrevious;
13204
+ var _this$fragCurrent, _this$fragPrevious;
13217
13205
  var media = this.mediaBuffer ? this.mediaBuffer : this.media;
13218
- 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)') + ")");
13206
+ this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + " > buffer:" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + ")");
13219
13207
  if (frag.sn !== 'initSegment') {
13220
13208
  var _this$levels;
13221
13209
  if (frag.type !== PlaylistLevelType.SUBTITLE) {
@@ -13277,7 +13265,7 @@
13277
13265
  }
13278
13266
  var keyLoadingPromise = null;
13279
13267
  if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {
13280
- this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " + (this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track') + " " + frag.level);
13268
+ this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " + this.playlistLabel() + " " + frag.level);
13281
13269
  this.state = State.KEY_LOADING;
13282
13270
  this.fragCurrent = frag;
13283
13271
  keyLoadingPromise = this.keyLoader.load(frag).then(function (keyLoadedData) {
@@ -13316,7 +13304,7 @@
13316
13304
  var partIndex = this.getNextPart(partList, frag, targetBufferTime);
13317
13305
  if (partIndex > -1) {
13318
13306
  var part = partList[partIndex];
13319
- 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)));
13307
+ 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)));
13320
13308
  this.nextLoadPosition = part.start + part.duration;
13321
13309
  this.state = State.FRAG_LOADING;
13322
13310
  var _result;
@@ -13356,7 +13344,7 @@
13356
13344
  // Selected fragment hint for part but not loading parts
13357
13345
  return Promise.resolve(null);
13358
13346
  }
13359
- 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)));
13347
+ 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)));
13360
13348
  // Don't update nextLoadPosition for fragments which are not buffered
13361
13349
  if (isFiniteNumber(frag.sn) && !this.bitrateTest) {
13362
13350
  this.nextLoadPosition = frag.start + frag.duration;
@@ -14120,11 +14108,22 @@
14120
14108
  // For this error fallthrough. Marking parsed will allow advancing to next fragment.
14121
14109
  }
14122
14110
  this.state = State.PARSED;
14111
+ this.log("Parsed " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + ")");
14123
14112
  this.hls.trigger(Events.FRAG_PARSED, {
14124
14113
  frag: frag,
14125
14114
  part: part
14126
14115
  });
14127
14116
  };
14117
+ _proto.playlistLabel = function playlistLabel() {
14118
+ return this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track';
14119
+ };
14120
+ _proto.fragInfo = function fragInfo(frag, pts) {
14121
+ var _ref3, _ref4;
14122
+ if (pts === void 0) {
14123
+ pts = true;
14124
+ }
14125
+ 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) + "]";
14126
+ };
14128
14127
  _proto.resetTransmuxer = function resetTransmuxer() {
14129
14128
  if (this.transmuxer) {
14130
14129
  this.transmuxer.destroy();
@@ -21987,7 +21986,7 @@
21987
21986
  * Get the video-dev/hls.js package version.
21988
21987
  */
21989
21988
  function get() {
21990
- return "1.5.14-0.canary.10427";
21989
+ return "1.5.14-0.canary.10431";
21991
21990
  }
21992
21991
  }, {
21993
21992
  key: "Events",