hls.js 1.6.0-beta.2.0.canary.10925 → 1.6.0-beta.2.0.canary.10926
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.d.mts +8 -1
- package/dist/hls.d.ts +8 -1
- package/dist/hls.js +43 -13
- package/dist/hls.js.d.ts +8 -1
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +42 -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 +38 -12
- 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 +39 -13
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/package.json +1 -1
- package/src/controller/abr-controller.ts +2 -2
- package/src/controller/base-stream-controller.ts +4 -4
- package/src/controller/error-controller.ts +2 -2
- package/src/controller/fragment-tracker.ts +1 -1
- package/src/controller/gap-controller.ts +17 -4
- package/src/controller/interstitials-controller.ts +1 -1
- package/src/controller/level-controller.ts +4 -0
- package/src/controller/stream-controller.ts +1 -1
- package/src/hls.ts +10 -0
- package/src/utils/rendition-helper.ts +1 -1
package/dist/hls.d.mts
CHANGED
@@ -1449,7 +1449,7 @@ export declare class FragmentTracker implements ComponentAPI {
|
|
1449
1449
|
/**
|
1450
1450
|
* Gets the partial fragment for a certain time
|
1451
1451
|
*/
|
1452
|
-
getPartialFragment(time: number):
|
1452
|
+
getPartialFragment(time: number): MediaFragment | null;
|
1453
1453
|
isEndListAppended(type: PlaylistLevelType): boolean;
|
1454
1454
|
getState(fragment: Fragment): FragmentState;
|
1455
1455
|
private isTimeBuffered;
|
@@ -1665,7 +1665,14 @@ declare class Hls implements HlsEventEmitter {
|
|
1665
1665
|
* @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH
|
1666
1666
|
*/
|
1667
1667
|
get levels(): Level[];
|
1668
|
+
/**
|
1669
|
+
* @returns LevelDetails of last loaded level (variant) or `null` prior to loading a media playlist.
|
1670
|
+
*/
|
1668
1671
|
get latestLevelDetails(): LevelDetails | null;
|
1672
|
+
/**
|
1673
|
+
* @returns Level object of selected level (variant) or `null` prior to selecting a level or once the level is removed.
|
1674
|
+
*/
|
1675
|
+
get loadLevelObj(): Level | null;
|
1669
1676
|
/**
|
1670
1677
|
* Index of quality level (variant) currently played
|
1671
1678
|
*/
|
package/dist/hls.d.ts
CHANGED
@@ -1449,7 +1449,7 @@ export declare class FragmentTracker implements ComponentAPI {
|
|
1449
1449
|
/**
|
1450
1450
|
* Gets the partial fragment for a certain time
|
1451
1451
|
*/
|
1452
|
-
getPartialFragment(time: number):
|
1452
|
+
getPartialFragment(time: number): MediaFragment | null;
|
1453
1453
|
isEndListAppended(type: PlaylistLevelType): boolean;
|
1454
1454
|
getState(fragment: Fragment): FragmentState;
|
1455
1455
|
private isTimeBuffered;
|
@@ -1665,7 +1665,14 @@ declare class Hls implements HlsEventEmitter {
|
|
1665
1665
|
* @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH
|
1666
1666
|
*/
|
1667
1667
|
get levels(): Level[];
|
1668
|
+
/**
|
1669
|
+
* @returns LevelDetails of last loaded level (variant) or `null` prior to loading a media playlist.
|
1670
|
+
*/
|
1668
1671
|
get latestLevelDetails(): LevelDetails | null;
|
1672
|
+
/**
|
1673
|
+
* @returns Level object of selected level (variant) or `null` prior to selecting a level or once the level is removed.
|
1674
|
+
*/
|
1675
|
+
get loadLevelObj(): Level | null;
|
1669
1676
|
/**
|
1670
1677
|
* Index of quality level (variant) currently played
|
1671
1678
|
*/
|
package/dist/hls.js
CHANGED
@@ -1059,7 +1059,7 @@
|
|
1059
1059
|
// Some browsers don't allow to use bind on console object anyway
|
1060
1060
|
// fallback to default if needed
|
1061
1061
|
try {
|
1062
|
-
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.2.0.canary.
|
1062
|
+
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.2.0.canary.10926");
|
1063
1063
|
} catch (e) {
|
1064
1064
|
/* log fn threw an exception. All logger methods are no-ops. */
|
1065
1065
|
return createLogger();
|
@@ -2049,8 +2049,8 @@
|
|
2049
2049
|
return -1;
|
2050
2050
|
}
|
2051
2051
|
function useAlternateAudio(audioTrackUrl, hls) {
|
2052
|
-
var _hls$
|
2053
|
-
return !!audioTrackUrl && audioTrackUrl !== ((_hls$
|
2052
|
+
var _hls$loadLevelObj;
|
2053
|
+
return !!audioTrackUrl && audioTrackUrl !== ((_hls$loadLevelObj = hls.loadLevelObj) == null ? undefined : _hls$loadLevelObj.uri);
|
2054
2054
|
}
|
2055
2055
|
|
2056
2056
|
var AbrController = /*#__PURE__*/function (_Logger) {
|
@@ -2470,8 +2470,8 @@
|
|
2470
2470
|
}
|
2471
2471
|
// If no matching level found, see if min auto level would be a better option
|
2472
2472
|
var minLevel = hls.levels[minAutoLevel];
|
2473
|
-
var autoLevel = hls.
|
2474
|
-
if ((minLevel == null ? undefined : minLevel.bitrate) <
|
2473
|
+
var autoLevel = hls.loadLevelObj;
|
2474
|
+
if (autoLevel && (minLevel == null ? undefined : minLevel.bitrate) < autoLevel.bitrate) {
|
2475
2475
|
return minAutoLevel;
|
2476
2476
|
}
|
2477
2477
|
// or if bitrate is not lower, continue to use loadLevel
|
@@ -3086,7 +3086,7 @@
|
|
3086
3086
|
case ErrorDetails.SUBTITLE_LOAD_ERROR:
|
3087
3087
|
case ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:
|
3088
3088
|
if (context) {
|
3089
|
-
var level = hls.
|
3089
|
+
var level = hls.loadLevelObj;
|
3090
3090
|
if (level && (context.type === PlaylistContextType.AUDIO_TRACK && level.hasAudioGroup(context.groupId) || context.type === PlaylistContextType.SUBTITLE_TRACK && level.hasSubtitleGroup(context.groupId))) {
|
3091
3091
|
// Perform Pathway switch or Redundant failover if possible for fastest recovery
|
3092
3092
|
// otherwise allow playlist retry count to reach max error retries
|
@@ -3099,7 +3099,7 @@
|
|
3099
3099
|
return;
|
3100
3100
|
case ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:
|
3101
3101
|
{
|
3102
|
-
var _level = hls.
|
3102
|
+
var _level = hls.loadLevelObj;
|
3103
3103
|
var restrictedHdcpLevel = _level == null ? undefined : _level.attrs['HDCP-LEVEL'];
|
3104
3104
|
if (restrictedHdcpLevel) {
|
3105
3105
|
data.errorAction = {
|
@@ -9629,7 +9629,8 @@
|
|
9629
9629
|
if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {
|
9630
9630
|
var bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);
|
9631
9631
|
if (bufferedFragAtPos && (bufferInfo.nextStart <= bufferedFragAtPos.end || bufferedFragAtPos.gap)) {
|
9632
|
-
|
9632
|
+
var gapDuration = Math.max(Math.min(bufferInfo.nextStart, bufferedFragAtPos.end) - pos, maxBufferHole);
|
9633
|
+
return BufferHelper.bufferInfo(bufferable, pos, gapDuration);
|
9633
9634
|
}
|
9634
9635
|
}
|
9635
9636
|
return bufferInfo;
|
@@ -16334,7 +16335,7 @@
|
|
16334
16335
|
return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;
|
16335
16336
|
}
|
16336
16337
|
|
16337
|
-
var version = "1.6.0-beta.2.0.canary.
|
16338
|
+
var version = "1.6.0-beta.2.0.canary.10926";
|
16338
16339
|
|
16339
16340
|
// ensure the worker ends up in the bundle
|
16340
16341
|
// If the worker should not be included this gets aliased to empty.js
|
@@ -25004,7 +25005,7 @@
|
|
25004
25005
|
var primary = this.hls;
|
25005
25006
|
var userConfig = primary.userConfig;
|
25006
25007
|
var videoPreference = userConfig.videoPreference;
|
25007
|
-
var currentLevel = primary.
|
25008
|
+
var currentLevel = primary.loadLevelObj || primary.levels[primary.currentLevel];
|
25008
25009
|
if (videoPreference || currentLevel) {
|
25009
25010
|
videoPreference = _extends({}, videoPreference);
|
25010
25011
|
if (currentLevel.videoCodec) {
|
@@ -31048,7 +31049,7 @@
|
|
31048
31049
|
var currentTime = media.currentTime;
|
31049
31050
|
var bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);
|
31050
31051
|
var startTime = currentTime < bufferInfo.start ? bufferInfo.start : bufferInfo.nextStart;
|
31051
|
-
if (startTime) {
|
31052
|
+
if (startTime && this.hls) {
|
31052
31053
|
var bufferStarved = bufferInfo.len <= config.maxBufferHole;
|
31053
31054
|
var waiting = bufferInfo.len > 0 && bufferInfo.len < 1 && media.readyState < 3;
|
31054
31055
|
var gapLength = startTime - currentTime;
|
@@ -31065,6 +31066,17 @@
|
|
31065
31066
|
if (!startGap) {
|
31066
31067
|
var startProvisioned = partial || fragmentTracker.getAppendedFrag(currentTime, PlaylistLevelType.MAIN);
|
31067
31068
|
if (startProvisioned) {
|
31069
|
+
var _this$hls$loadLevelOb;
|
31070
|
+
// Do not seek when selected variant playlist is unloaded
|
31071
|
+
if (!((_this$hls$loadLevelOb = this.hls.loadLevelObj) != null && _this$hls$loadLevelOb.details)) {
|
31072
|
+
return 0;
|
31073
|
+
}
|
31074
|
+
// Do not seek when required fragments are inflight or appending
|
31075
|
+
var inFlightDependency = getInFlightDependency(this.hls.inFlightFragments, startTime);
|
31076
|
+
if (inFlightDependency) {
|
31077
|
+
return 0;
|
31078
|
+
}
|
31079
|
+
// Do not seek if we can't walk tracked fragments to end of gap
|
31068
31080
|
var moreToLoad = false;
|
31069
31081
|
var pos = startProvisioned.end;
|
31070
31082
|
while (pos < startTime) {
|
@@ -31086,7 +31098,7 @@
|
|
31086
31098
|
this.warn("skipping hole, adjusting currentTime from " + currentTime + " to " + targetTime);
|
31087
31099
|
this.moved = true;
|
31088
31100
|
media.currentTime = targetTime;
|
31089
|
-
if (!(partial != null && partial.gap)
|
31101
|
+
if (!(partial != null && partial.gap)) {
|
31090
31102
|
var error = new Error("fragment loaded with buffer holes, seeking from " + currentTime + " to " + targetTime);
|
31091
31103
|
this.hls.trigger(Events.ERROR, {
|
31092
31104
|
type: ErrorTypes.MEDIA_ERROR,
|
@@ -32190,6 +32202,11 @@
|
|
32190
32202
|
}
|
32191
32203
|
return this._levels;
|
32192
32204
|
}
|
32205
|
+
}, {
|
32206
|
+
key: "loadLevelObj",
|
32207
|
+
get: function get() {
|
32208
|
+
return this.currentLevel;
|
32209
|
+
}
|
32193
32210
|
}, {
|
32194
32211
|
key: "level",
|
32195
32212
|
get: function get() {
|
@@ -32543,7 +32560,7 @@
|
|
32543
32560
|
_proto.onTickEnd = function onTickEnd() {
|
32544
32561
|
var _this$media2;
|
32545
32562
|
_BaseStreamController.prototype.onTickEnd.call(this);
|
32546
|
-
if ((_this$media2 = this.media) != null && _this$media2.readyState) {
|
32563
|
+
if ((_this$media2 = this.media) != null && _this$media2.readyState && this.media.seeking === false) {
|
32547
32564
|
this.lastCurrentTime = this.media.currentTime;
|
32548
32565
|
}
|
32549
32566
|
this.checkFragmentChanged();
|
@@ -34923,12 +34940,25 @@
|
|
34923
34940
|
var levels = this.levelController.levels;
|
34924
34941
|
return levels ? levels : [];
|
34925
34942
|
}
|
34943
|
+
|
34944
|
+
/**
|
34945
|
+
* @returns LevelDetails of last loaded level (variant) or `null` prior to loading a media playlist.
|
34946
|
+
*/
|
34926
34947
|
}, {
|
34927
34948
|
key: "latestLevelDetails",
|
34928
34949
|
get: function get() {
|
34929
34950
|
return this.streamController.getLevelDetails() || null;
|
34930
34951
|
}
|
34931
34952
|
|
34953
|
+
/**
|
34954
|
+
* @returns Level object of selected level (variant) or `null` prior to selecting a level or once the level is removed.
|
34955
|
+
*/
|
34956
|
+
}, {
|
34957
|
+
key: "loadLevelObj",
|
34958
|
+
get: function get() {
|
34959
|
+
return this.levelController.loadLevelObj;
|
34960
|
+
}
|
34961
|
+
|
34932
34962
|
/**
|
34933
34963
|
* Index of quality level (variant) currently played
|
34934
34964
|
*/
|
package/dist/hls.js.d.ts
CHANGED
@@ -1449,7 +1449,7 @@ export declare class FragmentTracker implements ComponentAPI {
|
|
1449
1449
|
/**
|
1450
1450
|
* Gets the partial fragment for a certain time
|
1451
1451
|
*/
|
1452
|
-
getPartialFragment(time: number):
|
1452
|
+
getPartialFragment(time: number): MediaFragment | null;
|
1453
1453
|
isEndListAppended(type: PlaylistLevelType): boolean;
|
1454
1454
|
getState(fragment: Fragment): FragmentState;
|
1455
1455
|
private isTimeBuffered;
|
@@ -1665,7 +1665,14 @@ declare class Hls implements HlsEventEmitter {
|
|
1665
1665
|
* @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH
|
1666
1666
|
*/
|
1667
1667
|
get levels(): Level[];
|
1668
|
+
/**
|
1669
|
+
* @returns LevelDetails of last loaded level (variant) or `null` prior to loading a media playlist.
|
1670
|
+
*/
|
1668
1671
|
get latestLevelDetails(): LevelDetails | null;
|
1672
|
+
/**
|
1673
|
+
* @returns Level object of selected level (variant) or `null` prior to selecting a level or once the level is removed.
|
1674
|
+
*/
|
1675
|
+
get loadLevelObj(): Level | null;
|
1669
1676
|
/**
|
1670
1677
|
* Index of quality level (variant) currently played
|
1671
1678
|
*/
|