hls.js 1.6.0-beta.1.0.canary.10751 → 1.6.0-beta.1.0.canary.10752

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
@@ -1028,7 +1028,7 @@
1028
1028
  // Some browsers don't allow to use bind on console object anyway
1029
1029
  // fallback to default if needed
1030
1030
  try {
1031
- newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.1.0.canary.10751");
1031
+ newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.1.0.canary.10752");
1032
1032
  } catch (e) {
1033
1033
  /* log fn threw an exception. All logger methods are no-ops. */
1034
1034
  return createLogger();
@@ -1817,7 +1817,7 @@
1817
1817
  var bwEstimate = _this.getBwEstimate();
1818
1818
  var levels = hls.levels;
1819
1819
  var level = levels[frag.level];
1820
- var expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.averageBitrate / 8));
1820
+ var expectedLen = Math.max(stats.loaded, Math.round(duration * (frag.bitrate || level.averageBitrate) / 8));
1821
1821
  var timeStreaming = loadedFirstByte ? timeLoading - ttfb : timeLoading;
1822
1822
  if (timeStreaming < 1 && loadedFirstByte) {
1823
1823
  timeStreaming = Math.min(timeLoading, stats.loaded * 8 / bwEstimate);
@@ -2272,7 +2272,7 @@
2272
2272
  }
2273
2273
 
2274
2274
  // Use average bitrate when starvation delay (buffer length) is gt or eq two segment durations and rebuffering is not expected (maxStarvationDelay > 0)
2275
- var bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levels[i].averageBitrate : levels[i].maxBitrate;
2275
+ var bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levelInfo.averageBitrate : levelInfo.maxBitrate;
2276
2276
  var fetchDuration = _this3.getTimeToLoadFrag(ttfbEstimateSec, adjustedbw, bitrate * avgDuration, levelDetails === undefined);
2277
2277
  var canSwitchWithinTolerance =
2278
2278
  // if adjusted bw is greater than level bitrate AND
@@ -3286,6 +3286,8 @@
3286
3286
  _this._decryptdata = null;
3287
3287
  _this._programDateTime = null;
3288
3288
  _this._ref = null;
3289
+ // Approximate bit rate of the fragment expressed in bits per second (bps) as indicated by the last EXT-X-BITRATE (kbps) tag
3290
+ _this._bitrate = void 0;
3289
3291
  _this.rawProgramDateTime = null;
3290
3292
  _this.tagList = [];
3291
3293
  // EXTINF has to be present for a m3u8 to be considered valid
@@ -3393,6 +3395,38 @@
3393
3395
  info.endDTS = Math.max(info.endDTS, endDTS);
3394
3396
  };
3395
3397
  return _createClass(Fragment, [{
3398
+ key: "byteLength",
3399
+ get: function get() {
3400
+ if (this.hasStats) {
3401
+ var total = this.stats.total;
3402
+ if (total) {
3403
+ return total;
3404
+ }
3405
+ }
3406
+ if (this.byteRange) {
3407
+ var start = this.byteRange[0];
3408
+ var end = this.byteRange[1];
3409
+ if (isFiniteNumber(start) && isFiniteNumber(end)) {
3410
+ return end - start;
3411
+ }
3412
+ }
3413
+ return null;
3414
+ }
3415
+ }, {
3416
+ key: "bitrate",
3417
+ get: function get() {
3418
+ if (this.byteLength) {
3419
+ return this.byteLength * 8 / this.duration;
3420
+ }
3421
+ if (this._bitrate) {
3422
+ return this._bitrate;
3423
+ }
3424
+ return null;
3425
+ },
3426
+ set: function set(value) {
3427
+ this._bitrate = value;
3428
+ }
3429
+ }, {
3396
3430
  key: "decryptdata",
3397
3431
  get: function get() {
3398
3432
  var levelkeys = this.levelkeys;
@@ -7346,6 +7380,7 @@
7346
7380
  var currentPart = 0;
7347
7381
  var totalduration = 0;
7348
7382
  var discontinuityCounter = 0;
7383
+ var currentBitrate = 0;
7349
7384
  var prevFrag = null;
7350
7385
  var frag = new Fragment(type, base);
7351
7386
  var result;
@@ -7366,6 +7401,9 @@
7366
7401
  frag.start = totalduration;
7367
7402
  frag.sn = currentSN;
7368
7403
  frag.cc = discontinuityCounter;
7404
+ if (currentBitrate) {
7405
+ frag.bitrate = currentBitrate;
7406
+ }
7369
7407
  frag.level = id;
7370
7408
  if (currentInitSegment) {
7371
7409
  frag.initSegment = currentInitSegment;
@@ -7495,6 +7533,12 @@
7495
7533
  break;
7496
7534
  case 'BITRATE':
7497
7535
  frag.tagList.push([tag, value1]);
7536
+ currentBitrate = parseInt(value1) * 1000;
7537
+ if (isFiniteNumber(currentBitrate)) {
7538
+ frag.bitrate = currentBitrate;
7539
+ } else {
7540
+ currentBitrate = 0;
7541
+ }
7498
7542
  break;
7499
7543
  case 'DATERANGE':
7500
7544
  {
@@ -19649,7 +19693,7 @@
19649
19693
  return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;
19650
19694
  }
19651
19695
 
19652
- var version = "1.6.0-beta.1.0.canary.10751";
19696
+ var version = "1.6.0-beta.1.0.canary.10752";
19653
19697
 
19654
19698
  // ensure the worker ends up in the bundle
19655
19699
  // If the worker should not be included this gets aliased to empty.js