hls.js 1.5.2-0.canary.9966 → 1.5.2-0.canary.9969

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
@@ -556,7 +556,7 @@
556
556
  // Some browsers don't allow to use bind on console object anyway
557
557
  // fallback to default if needed
558
558
  try {
559
- newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.2-0.canary.9966");
559
+ newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.2-0.canary.9969");
560
560
  } catch (e) {
561
561
  /* log fn threw an exception. All logger methods are no-ops. */
562
562
  return createLogger();
@@ -1799,6 +1799,12 @@
1799
1799
  var val = readSint32(buffer, offset);
1800
1800
  return val < 0 ? 4294967296 + val : val;
1801
1801
  }
1802
+ function readUint64(buffer, offset) {
1803
+ var result = readUint32(buffer, offset);
1804
+ result *= Math.pow(2, 32);
1805
+ result += readUint32(buffer, offset + 4);
1806
+ return result;
1807
+ }
1802
1808
  function readSint32(buffer, offset) {
1803
1809
  return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];
1804
1810
  }
@@ -1861,15 +1867,14 @@
1861
1867
  var index = 8;
1862
1868
  var timescale = readUint32(sidx, index);
1863
1869
  index += 4;
1864
-
1865
- // TODO: parse earliestPresentationTime and firstOffset
1866
- // usually zero in our case
1867
1870
  var earliestPresentationTime = 0;
1868
1871
  var firstOffset = 0;
1869
1872
  if (version === 0) {
1870
- index += 8;
1873
+ earliestPresentationTime = readUint32(sidx, index += 4);
1874
+ firstOffset = readUint32(sidx, index += 4);
1871
1875
  } else {
1872
- index += 16;
1876
+ earliestPresentationTime = readUint64(sidx, index += 8);
1877
+ firstOffset = readUint64(sidx, index += 8);
1873
1878
  }
1874
1879
 
1875
1880
  // skip reserved
@@ -2319,17 +2324,24 @@
2319
2324
  }
2320
2325
  if (videoDuration === 0 && audioDuration === 0) {
2321
2326
  // If duration samples are not available in the traf use sidx subsegment_duration
2327
+ var sidxMinStart = Infinity;
2328
+ var sidxMaxEnd = 0;
2322
2329
  var sidxDuration = 0;
2323
2330
  var sidxs = findBox(data, ['sidx']);
2324
2331
  for (var _i2 = 0; _i2 < sidxs.length; _i2++) {
2325
2332
  var sidx = parseSegmentIndex(sidxs[_i2]);
2326
2333
  if (sidx != null && sidx.references) {
2327
- sidxDuration += sidx.references.reduce(function (dur, ref) {
2334
+ sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale);
2335
+ var subSegmentDuration = sidx.references.reduce(function (dur, ref) {
2328
2336
  return dur + ref.info.duration || 0;
2329
2337
  }, 0);
2338
+ sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale);
2339
+ sidxDuration = sidxMaxEnd - sidxMinStart;
2330
2340
  }
2331
2341
  }
2332
- return sidxDuration;
2342
+ if (sidxDuration && isFiniteNumber(sidxDuration)) {
2343
+ return sidxDuration;
2344
+ }
2333
2345
  }
2334
2346
  if (videoDuration) {
2335
2347
  return videoDuration;
@@ -7797,8 +7809,11 @@
7797
7809
  return nextABRAutoLevel;
7798
7810
  },
7799
7811
  set: function set(nextLevel) {
7800
- var value = Math.max(this.hls.minAutoLevel, nextLevel);
7801
- if (this._nextAutoLevel != value) {
7812
+ var _this$hls3 = this.hls,
7813
+ maxAutoLevel = _this$hls3.maxAutoLevel,
7814
+ minAutoLevel = _this$hls3.minAutoLevel;
7815
+ var value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);
7816
+ if (this._nextAutoLevel !== value) {
7802
7817
  this.nextAutoLevelKey = '';
7803
7818
  this._nextAutoLevel = value;
7804
7819
  }
@@ -16681,7 +16696,7 @@
16681
16696
 
16682
16697
  // compute start position if we are aligned with the main playlist
16683
16698
  if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {
16684
- this.setStartPosition(track.details, sliding);
16699
+ this.setStartPosition(this.mainDetails || newDetails, sliding);
16685
16700
  }
16686
16701
  // only switch back to IDLE state if we were waiting for track to start downloading a new fragment
16687
16702
  if (this.state === State.WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {
@@ -17578,7 +17593,7 @@
17578
17593
  track.details = newDetails;
17579
17594
  this.levelLastLoaded = track;
17580
17595
  if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {
17581
- this.setStartPosition(track.details, sliding);
17596
+ this.setStartPosition(this.mainDetails || newDetails, sliding);
17582
17597
  }
17583
17598
 
17584
17599
  // trigger handler right now
@@ -27393,7 +27408,8 @@
27393
27408
  }
27394
27409
  // set new level to playlist loader : this will trigger start level load
27395
27410
  // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded
27396
- this.level = hls.nextLoadLevel = startLevel;
27411
+ hls.nextLoadLevel = startLevel;
27412
+ this.level = hls.loadLevel;
27397
27413
  this.loadedmetadata = false;
27398
27414
  }
27399
27415
  // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime
@@ -29281,7 +29297,7 @@
29281
29297
  * Get the video-dev/hls.js package version.
29282
29298
  */
29283
29299
  function get() {
29284
- return "1.5.2-0.canary.9966";
29300
+ return "1.5.2-0.canary.9969";
29285
29301
  }
29286
29302
  }, {
29287
29303
  key: "Events",