hls.js 1.5.2 → 1.5.4
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 +32 -16
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +30 -14
- 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 +33 -16
- 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 +35 -18
- 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 +5 -3
- package/src/controller/audio-stream-controller.ts +1 -1
- package/src/controller/stream-controller.ts +2 -1
- package/src/controller/subtitle-stream-controller.ts +1 -1
- package/src/utils/mp4-tools.ts +28 -9
package/dist/hls.light.mjs
CHANGED
@@ -411,7 +411,7 @@ function enableLogs(debugConfig, id) {
|
|
411
411
|
// Some browsers don't allow to use bind on console object anyway
|
412
412
|
// fallback to default if needed
|
413
413
|
try {
|
414
|
-
exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.
|
414
|
+
exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.4"}`);
|
415
415
|
} catch (e) {
|
416
416
|
exportedLogger = fakeLogger;
|
417
417
|
}
|
@@ -1392,6 +1392,12 @@ function readUint32(buffer, offset) {
|
|
1392
1392
|
const val = readSint32(buffer, offset);
|
1393
1393
|
return val < 0 ? 4294967296 + val : val;
|
1394
1394
|
}
|
1395
|
+
function readUint64(buffer, offset) {
|
1396
|
+
let result = readUint32(buffer, offset);
|
1397
|
+
result *= Math.pow(2, 32);
|
1398
|
+
result += readUint32(buffer, offset + 4);
|
1399
|
+
return result;
|
1400
|
+
}
|
1395
1401
|
function readSint32(buffer, offset) {
|
1396
1402
|
return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];
|
1397
1403
|
}
|
@@ -1454,15 +1460,14 @@ function parseSegmentIndex(sidx) {
|
|
1454
1460
|
let index = 8;
|
1455
1461
|
const timescale = readUint32(sidx, index);
|
1456
1462
|
index += 4;
|
1457
|
-
|
1458
|
-
|
1459
|
-
// usually zero in our case
|
1460
|
-
const earliestPresentationTime = 0;
|
1461
|
-
const firstOffset = 0;
|
1463
|
+
let earliestPresentationTime = 0;
|
1464
|
+
let firstOffset = 0;
|
1462
1465
|
if (version === 0) {
|
1463
|
-
index +=
|
1466
|
+
earliestPresentationTime = readUint32(sidx, index += 4);
|
1467
|
+
firstOffset = readUint32(sidx, index += 4);
|
1464
1468
|
} else {
|
1465
|
-
index +=
|
1469
|
+
earliestPresentationTime = readUint64(sidx, index += 8);
|
1470
|
+
firstOffset = readUint64(sidx, index += 8);
|
1466
1471
|
}
|
1467
1472
|
|
1468
1473
|
// skip reserved
|
@@ -1910,15 +1915,22 @@ function getDuration(data, initData) {
|
|
1910
1915
|
}
|
1911
1916
|
if (videoDuration === 0 && audioDuration === 0) {
|
1912
1917
|
// If duration samples are not available in the traf use sidx subsegment_duration
|
1918
|
+
let sidxMinStart = Infinity;
|
1919
|
+
let sidxMaxEnd = 0;
|
1913
1920
|
let sidxDuration = 0;
|
1914
1921
|
const sidxs = findBox(data, ['sidx']);
|
1915
1922
|
for (let i = 0; i < sidxs.length; i++) {
|
1916
1923
|
const sidx = parseSegmentIndex(sidxs[i]);
|
1917
1924
|
if (sidx != null && sidx.references) {
|
1918
|
-
|
1925
|
+
sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale);
|
1926
|
+
const subSegmentDuration = sidx.references.reduce((dur, ref) => dur + ref.info.duration || 0, 0);
|
1927
|
+
sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale);
|
1928
|
+
sidxDuration = sidxMaxEnd - sidxMinStart;
|
1919
1929
|
}
|
1920
1930
|
}
|
1921
|
-
|
1931
|
+
if (sidxDuration && isFiniteNumber(sidxDuration)) {
|
1932
|
+
return sidxDuration;
|
1933
|
+
}
|
1922
1934
|
}
|
1923
1935
|
if (videoDuration) {
|
1924
1936
|
return videoDuration;
|
@@ -6642,7 +6654,7 @@ class AbrController {
|
|
6642
6654
|
const ttfbEstimateSec = this.bwEstimator.getEstimateTTFB() / 1000;
|
6643
6655
|
const levelsSkipped = [];
|
6644
6656
|
for (let i = maxAutoLevel; i >= minAutoLevel; i--) {
|
6645
|
-
var _levelInfo$supportedR
|
6657
|
+
var _levelInfo$supportedR;
|
6646
6658
|
const levelInfo = levels[i];
|
6647
6659
|
const upSwitch = i > selectionBaseLevel;
|
6648
6660
|
if (!levelInfo) {
|
@@ -6651,7 +6663,7 @@ class AbrController {
|
|
6651
6663
|
|
6652
6664
|
// skip candidates which change codec-family or video-range,
|
6653
6665
|
// and which decrease or increase frame-rate for up and down-switch respectfully
|
6654
|
-
if (currentCodecSet && levelInfo.codecSet !== currentCodecSet || currentVideoRange && levelInfo.videoRange !== currentVideoRange || upSwitch && currentFrameRate > levelInfo.frameRate || !upSwitch && currentFrameRate > 0 && currentFrameRate < levelInfo.frameRate ||
|
6666
|
+
if (currentCodecSet && levelInfo.codecSet !== currentCodecSet || currentVideoRange && levelInfo.videoRange !== currentVideoRange || upSwitch && currentFrameRate > levelInfo.frameRate || !upSwitch && currentFrameRate > 0 && currentFrameRate < levelInfo.frameRate || levelInfo.supportedResult && !((_levelInfo$supportedR = levelInfo.supportedResult.decodingInfoResults) != null && _levelInfo$supportedR[0].smooth)) {
|
6655
6667
|
levelsSkipped.push(i);
|
6656
6668
|
continue;
|
6657
6669
|
}
|
@@ -6701,8 +6713,12 @@ class AbrController {
|
|
6701
6713
|
return -1;
|
6702
6714
|
}
|
6703
6715
|
set nextAutoLevel(nextLevel) {
|
6704
|
-
const
|
6705
|
-
|
6716
|
+
const {
|
6717
|
+
maxAutoLevel,
|
6718
|
+
minAutoLevel
|
6719
|
+
} = this.hls;
|
6720
|
+
const value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);
|
6721
|
+
if (this._nextAutoLevel !== value) {
|
6706
6722
|
this.nextAutoLevelKey = '';
|
6707
6723
|
this._nextAutoLevel = value;
|
6708
6724
|
}
|
@@ -18610,7 +18626,8 @@ class StreamController extends BaseStreamController {
|
|
18610
18626
|
}
|
18611
18627
|
// set new level to playlist loader : this will trigger start level load
|
18612
18628
|
// hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded
|
18613
|
-
|
18629
|
+
hls.nextLoadLevel = startLevel;
|
18630
|
+
this.level = hls.loadLevel;
|
18614
18631
|
this.loadedmetadata = false;
|
18615
18632
|
}
|
18616
18633
|
// if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime
|
@@ -19685,7 +19702,7 @@ class Hls {
|
|
19685
19702
|
* Get the video-dev/hls.js package version.
|
19686
19703
|
*/
|
19687
19704
|
static get version() {
|
19688
|
-
return "1.5.
|
19705
|
+
return "1.5.4";
|
19689
19706
|
}
|
19690
19707
|
|
19691
19708
|
/**
|