hls.js 1.5.2-0.canary.9965 → 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-demo.js +4 -5
- package/dist/hls-demo.js.map +1 -1
- package/dist/hls.js +30 -14
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +28 -12
- 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 +31 -14
- 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 +33 -16
- 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 +3 -2
- 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.mjs
CHANGED
@@ -431,7 +431,7 @@ function enableLogs(debugConfig, context, id) {
|
|
431
431
|
// Some browsers don't allow to use bind on console object anyway
|
432
432
|
// fallback to default if needed
|
433
433
|
try {
|
434
|
-
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.5.2-0.canary.
|
434
|
+
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.5.2-0.canary.9969"}`);
|
435
435
|
} catch (e) {
|
436
436
|
/* log fn threw an exception. All logger methods are no-ops. */
|
437
437
|
return createLogger();
|
@@ -1591,6 +1591,12 @@ function readUint32(buffer, offset) {
|
|
1591
1591
|
const val = readSint32(buffer, offset);
|
1592
1592
|
return val < 0 ? 4294967296 + val : val;
|
1593
1593
|
}
|
1594
|
+
function readUint64(buffer, offset) {
|
1595
|
+
let result = readUint32(buffer, offset);
|
1596
|
+
result *= Math.pow(2, 32);
|
1597
|
+
result += readUint32(buffer, offset + 4);
|
1598
|
+
return result;
|
1599
|
+
}
|
1594
1600
|
function readSint32(buffer, offset) {
|
1595
1601
|
return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];
|
1596
1602
|
}
|
@@ -1653,15 +1659,14 @@ function parseSegmentIndex(sidx) {
|
|
1653
1659
|
let index = 8;
|
1654
1660
|
const timescale = readUint32(sidx, index);
|
1655
1661
|
index += 4;
|
1656
|
-
|
1657
|
-
|
1658
|
-
// usually zero in our case
|
1659
|
-
const earliestPresentationTime = 0;
|
1660
|
-
const firstOffset = 0;
|
1662
|
+
let earliestPresentationTime = 0;
|
1663
|
+
let firstOffset = 0;
|
1661
1664
|
if (version === 0) {
|
1662
|
-
index +=
|
1665
|
+
earliestPresentationTime = readUint32(sidx, index += 4);
|
1666
|
+
firstOffset = readUint32(sidx, index += 4);
|
1663
1667
|
} else {
|
1664
|
-
index +=
|
1668
|
+
earliestPresentationTime = readUint64(sidx, index += 8);
|
1669
|
+
firstOffset = readUint64(sidx, index += 8);
|
1665
1670
|
}
|
1666
1671
|
|
1667
1672
|
// skip reserved
|
@@ -2109,15 +2114,22 @@ function getDuration(data, initData) {
|
|
2109
2114
|
}
|
2110
2115
|
if (videoDuration === 0 && audioDuration === 0) {
|
2111
2116
|
// If duration samples are not available in the traf use sidx subsegment_duration
|
2117
|
+
let sidxMinStart = Infinity;
|
2118
|
+
let sidxMaxEnd = 0;
|
2112
2119
|
let sidxDuration = 0;
|
2113
2120
|
const sidxs = findBox(data, ['sidx']);
|
2114
2121
|
for (let i = 0; i < sidxs.length; i++) {
|
2115
2122
|
const sidx = parseSegmentIndex(sidxs[i]);
|
2116
2123
|
if (sidx != null && sidx.references) {
|
2117
|
-
|
2124
|
+
sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale);
|
2125
|
+
const subSegmentDuration = sidx.references.reduce((dur, ref) => dur + ref.info.duration || 0, 0);
|
2126
|
+
sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale);
|
2127
|
+
sidxDuration = sidxMaxEnd - sidxMinStart;
|
2118
2128
|
}
|
2119
2129
|
}
|
2120
|
-
|
2130
|
+
if (sidxDuration && isFiniteNumber(sidxDuration)) {
|
2131
|
+
return sidxDuration;
|
2132
|
+
}
|
2121
2133
|
}
|
2122
2134
|
if (videoDuration) {
|
2123
2135
|
return videoDuration;
|
@@ -7467,8 +7479,12 @@ class AbrController extends Logger {
|
|
7467
7479
|
return -1;
|
7468
7480
|
}
|
7469
7481
|
set nextAutoLevel(nextLevel) {
|
7470
|
-
const
|
7471
|
-
|
7482
|
+
const {
|
7483
|
+
maxAutoLevel,
|
7484
|
+
minAutoLevel
|
7485
|
+
} = this.hls;
|
7486
|
+
const value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);
|
7487
|
+
if (this._nextAutoLevel !== value) {
|
7472
7488
|
this.nextAutoLevelKey = '';
|
7473
7489
|
this._nextAutoLevel = value;
|
7474
7490
|
}
|
@@ -16144,7 +16160,7 @@ class AudioStreamController extends BaseStreamController {
|
|
16144
16160
|
|
16145
16161
|
// compute start position if we are aligned with the main playlist
|
16146
16162
|
if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {
|
16147
|
-
this.setStartPosition(
|
16163
|
+
this.setStartPosition(this.mainDetails || newDetails, sliding);
|
16148
16164
|
}
|
16149
16165
|
// only switch back to IDLE state if we were waiting for track to start downloading a new fragment
|
16150
16166
|
if (this.state === State.WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {
|
@@ -17058,7 +17074,7 @@ class SubtitleStreamController extends BaseStreamController {
|
|
17058
17074
|
track.details = newDetails;
|
17059
17075
|
this.levelLastLoaded = track;
|
17060
17076
|
if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {
|
17061
|
-
this.setStartPosition(
|
17077
|
+
this.setStartPosition(this.mainDetails || newDetails, sliding);
|
17062
17078
|
}
|
17063
17079
|
|
17064
17080
|
// trigger handler right now
|
@@ -26734,7 +26750,8 @@ class StreamController extends BaseStreamController {
|
|
26734
26750
|
}
|
26735
26751
|
// set new level to playlist loader : this will trigger start level load
|
26736
26752
|
// hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded
|
26737
|
-
|
26753
|
+
hls.nextLoadLevel = startLevel;
|
26754
|
+
this.level = hls.loadLevel;
|
26738
26755
|
this.loadedmetadata = false;
|
26739
26756
|
}
|
26740
26757
|
// if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime
|
@@ -27787,7 +27804,7 @@ class Hls {
|
|
27787
27804
|
* Get the video-dev/hls.js package version.
|
27788
27805
|
*/
|
27789
27806
|
static get version() {
|
27790
|
-
return "1.5.2-0.canary.
|
27807
|
+
return "1.5.2-0.canary.9969";
|
27791
27808
|
}
|
27792
27809
|
|
27793
27810
|
/**
|