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/README.md +6 -11
- package/dist/hls.d.mts +4 -0
- package/dist/hls.d.ts +4 -0
- package/dist/hls.js +48 -4
- package/dist/hls.js.d.ts +4 -0
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +48 -4
- package/dist/hls.light.js.map +1 -1
- package/dist/hls.light.min.js +1 -1
- package/dist/hls.light.min.js.map +1 -1
- package/dist/hls.light.mjs +44 -4
- package/dist/hls.light.mjs.map +1 -1
- package/dist/hls.min.js +1 -1
- package/dist/hls.min.js.map +1 -1
- package/dist/hls.mjs +44 -4
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/dist/hls.worker.js.map +1 -1
- package/package.json +1 -1
- package/src/controller/abr-controller.ts +6 -5
- package/src/loader/fragment-loader.ts +1 -1
- package/src/loader/fragment.ts +33 -0
- package/src/loader/m3u8-parser.ts +10 -0
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.
|
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 =
|
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 ?
|
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.
|
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
|