hls.js 1.6.0-beta.1.0.canary.10763 → 1.6.0-beta.1.0.canary.10765
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 +5 -0
- package/dist/hls.d.ts +5 -0
- package/dist/hls.js +51 -17
- package/dist/hls.js.d.ts +5 -0
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +40 -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 +38 -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 +49 -17
- 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 -2
- package/src/controller/audio-track-controller.ts +1 -0
- package/src/controller/interstitials-controller.ts +1 -0
- package/src/controller/level-controller.ts +3 -2
- package/src/controller/stream-controller.ts +2 -2
- package/src/controller/subtitle-track-controller.ts +1 -0
- package/src/loader/playlist-loader.ts +38 -8
- package/src/types/events.ts +4 -0
- package/src/types/loader.ts +4 -1
package/dist/hls.d.mts
CHANGED
@@ -2606,6 +2606,7 @@ export declare interface LevelLoadedData {
|
|
2606
2606
|
details: LevelDetails;
|
2607
2607
|
id: number;
|
2608
2608
|
level: number;
|
2609
|
+
levelInfo: Level;
|
2609
2610
|
networkDetails: any;
|
2610
2611
|
stats: LoaderStats;
|
2611
2612
|
deliveryDirectives: HlsUrlParameters | null;
|
@@ -2614,6 +2615,7 @@ export declare interface LevelLoadedData {
|
|
2614
2615
|
export declare interface LevelLoadingData {
|
2615
2616
|
id: number;
|
2616
2617
|
level: number;
|
2618
|
+
levelInfo: Level;
|
2617
2619
|
pathwayId: string | undefined;
|
2618
2620
|
url: string;
|
2619
2621
|
deliveryDirectives: HlsUrlParameters | null;
|
@@ -3152,6 +3154,7 @@ export declare interface PlaylistLoaderContext extends LoaderContext {
|
|
3152
3154
|
pathwayId?: string;
|
3153
3155
|
levelDetails?: LevelDetails;
|
3154
3156
|
deliveryDirectives: HlsUrlParameters | null;
|
3157
|
+
levelOrTrack: Level | MediaPlaylist | null;
|
3155
3158
|
}
|
3156
3159
|
|
3157
3160
|
export declare type RationalTimestamp = {
|
@@ -3654,11 +3657,13 @@ export declare interface TrackLoadedData {
|
|
3654
3657
|
networkDetails: any;
|
3655
3658
|
stats: LoaderStats;
|
3656
3659
|
deliveryDirectives: HlsUrlParameters | null;
|
3660
|
+
track: MediaPlaylist;
|
3657
3661
|
}
|
3658
3662
|
|
3659
3663
|
export declare interface TrackLoadingData {
|
3660
3664
|
id: number;
|
3661
3665
|
groupId: string;
|
3666
|
+
track: MediaPlaylist;
|
3662
3667
|
url: string;
|
3663
3668
|
deliveryDirectives: HlsUrlParameters | null;
|
3664
3669
|
}
|
package/dist/hls.d.ts
CHANGED
@@ -2606,6 +2606,7 @@ export declare interface LevelLoadedData {
|
|
2606
2606
|
details: LevelDetails;
|
2607
2607
|
id: number;
|
2608
2608
|
level: number;
|
2609
|
+
levelInfo: Level;
|
2609
2610
|
networkDetails: any;
|
2610
2611
|
stats: LoaderStats;
|
2611
2612
|
deliveryDirectives: HlsUrlParameters | null;
|
@@ -2614,6 +2615,7 @@ export declare interface LevelLoadedData {
|
|
2614
2615
|
export declare interface LevelLoadingData {
|
2615
2616
|
id: number;
|
2616
2617
|
level: number;
|
2618
|
+
levelInfo: Level;
|
2617
2619
|
pathwayId: string | undefined;
|
2618
2620
|
url: string;
|
2619
2621
|
deliveryDirectives: HlsUrlParameters | null;
|
@@ -3152,6 +3154,7 @@ export declare interface PlaylistLoaderContext extends LoaderContext {
|
|
3152
3154
|
pathwayId?: string;
|
3153
3155
|
levelDetails?: LevelDetails;
|
3154
3156
|
deliveryDirectives: HlsUrlParameters | null;
|
3157
|
+
levelOrTrack: Level | MediaPlaylist | null;
|
3155
3158
|
}
|
3156
3159
|
|
3157
3160
|
export declare type RationalTimestamp = {
|
@@ -3654,11 +3657,13 @@ export declare interface TrackLoadedData {
|
|
3654
3657
|
networkDetails: any;
|
3655
3658
|
stats: LoaderStats;
|
3656
3659
|
deliveryDirectives: HlsUrlParameters | null;
|
3660
|
+
track: MediaPlaylist;
|
3657
3661
|
}
|
3658
3662
|
|
3659
3663
|
export declare interface TrackLoadingData {
|
3660
3664
|
id: number;
|
3661
3665
|
groupId: string;
|
3666
|
+
track: MediaPlaylist;
|
3662
3667
|
url: string;
|
3663
3668
|
deliveryDirectives: HlsUrlParameters | null;
|
3664
3669
|
}
|
package/dist/hls.js
CHANGED
@@ -1057,7 +1057,7 @@
|
|
1057
1057
|
// Some browsers don't allow to use bind on console object anyway
|
1058
1058
|
// fallback to default if needed
|
1059
1059
|
try {
|
1060
|
-
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.1.0.canary.
|
1060
|
+
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.1.0.canary.10765");
|
1061
1061
|
} catch (e) {
|
1062
1062
|
/* log fn threw an exception. All logger methods are no-ops. */
|
1063
1063
|
return createLogger();
|
@@ -2546,8 +2546,10 @@
|
|
2546
2546
|
return 0; // continue
|
2547
2547
|
}
|
2548
2548
|
if (config.useMediaCapabilities && !levelInfo.supportedResult && !levelInfo.supportedPromise) {
|
2549
|
+
var _levelInfo$videoCodec;
|
2549
2550
|
var mediaCapabilities = navigator.mediaCapabilities;
|
2550
|
-
if (typeof (mediaCapabilities == null ? void 0 : mediaCapabilities.decodingInfo) === 'function' && requiresMediaCapabilitiesDecodingInfo(levelInfo, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference))
|
2551
|
+
if (typeof (mediaCapabilities == null ? void 0 : mediaCapabilities.decodingInfo) === 'function' && (requiresMediaCapabilitiesDecodingInfo(levelInfo, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference) || ((_levelInfo$videoCodec = levelInfo.videoCodec) == null ? void 0 : _levelInfo$videoCodec.substring(0, 4)) === 'hvc1') // Force media capabilities check for HEVC to avoid failure on Windows
|
2552
|
+
) {
|
2551
2553
|
levelInfo.supportedPromise = getMediaDecodingInfoPromise(levelInfo, audioTracksByGroup, mediaCapabilities);
|
2552
2554
|
levelInfo.supportedPromise.then(function (decodingInfo) {
|
2553
2555
|
if (!_this3.hls) {
|
@@ -2563,6 +2565,9 @@
|
|
2563
2565
|
if (index > -1 && levels.length > 1) {
|
2564
2566
|
_this3.log("Removing unsupported level " + index);
|
2565
2567
|
_this3.hls.removeLevel(index);
|
2568
|
+
if (_this3.hls.loadLevel === -1) {
|
2569
|
+
_this3.hls.nextLoadLevel = 0;
|
2570
|
+
}
|
2566
2571
|
}
|
2567
2572
|
}
|
2568
2573
|
});
|
@@ -16217,7 +16222,7 @@
|
|
16217
16222
|
return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;
|
16218
16223
|
}
|
16219
16224
|
|
16220
|
-
var version = "1.6.0-beta.1.0.canary.
|
16225
|
+
var version = "1.6.0-beta.1.0.canary.10765";
|
16221
16226
|
|
16222
16227
|
// ensure the worker ends up in the bundle
|
16223
16228
|
// If the worker should not be included this gets aliased to empty.js
|
@@ -17925,7 +17930,8 @@
|
|
17925
17930
|
url: url,
|
17926
17931
|
id: id,
|
17927
17932
|
groupId: groupId,
|
17928
|
-
deliveryDirectives: hlsUrlParameters || null
|
17933
|
+
deliveryDirectives: hlsUrlParameters || null,
|
17934
|
+
track: audioTrack
|
17929
17935
|
});
|
17930
17936
|
}
|
17931
17937
|
};
|
@@ -24382,6 +24388,7 @@
|
|
24382
24388
|
this.schedule.reset();
|
24383
24389
|
this.emptyPlayerQueue();
|
24384
24390
|
this.clearScheduleState();
|
24391
|
+
this.shouldPlay = false;
|
24385
24392
|
this.bufferedPos = this.timelinePos = -1;
|
24386
24393
|
this.mediaSelection = this.altSelection = this.manager = this.requiredTracks = null;
|
24387
24394
|
// BUFFER_CODECS listener added here for buffer-controller to handle it first where it adds tracks
|
@@ -26289,7 +26296,8 @@
|
|
26289
26296
|
url: url,
|
26290
26297
|
id: id,
|
26291
26298
|
groupId: groupId,
|
26292
|
-
deliveryDirectives: hlsUrlParameters || null
|
26299
|
+
deliveryDirectives: hlsUrlParameters || null,
|
26300
|
+
track: currentTrack
|
26293
26301
|
});
|
26294
26302
|
}
|
26295
26303
|
}
|
@@ -31263,7 +31271,7 @@
|
|
31263
31271
|
var _data$deliveryDirecti2;
|
31264
31272
|
var level = data.level,
|
31265
31273
|
details = data.details;
|
31266
|
-
var curLevel =
|
31274
|
+
var curLevel = data.levelInfo;
|
31267
31275
|
if (!curLevel) {
|
31268
31276
|
var _data$deliveryDirecti;
|
31269
31277
|
this.warn("Invalid level index " + level);
|
@@ -31274,7 +31282,7 @@
|
|
31274
31282
|
}
|
31275
31283
|
|
31276
31284
|
// only process level loaded events matching with expected level
|
31277
|
-
if (
|
31285
|
+
if (curLevel === this.currentLevel) {
|
31278
31286
|
// reset level load error counter on successful level loaded only if there is no issues with fragments
|
31279
31287
|
if (curLevel.fragmentError === 0) {
|
31280
31288
|
curLevel.loadError = 0;
|
@@ -31312,6 +31320,7 @@
|
|
31312
31320
|
this.hls.trigger(Events.LEVEL_LOADING, {
|
31313
31321
|
url: url,
|
31314
31322
|
level: currentLevelIndex,
|
31323
|
+
levelInfo: currentLevel,
|
31315
31324
|
pathwayId: currentLevel.attrs['PATHWAY-ID'],
|
31316
31325
|
id: 0,
|
31317
31326
|
// Deprecated Level urlId
|
@@ -32372,7 +32381,7 @@
|
|
32372
32381
|
if (!levels || this.state !== State.IDLE) {
|
32373
32382
|
return;
|
32374
32383
|
}
|
32375
|
-
var level =
|
32384
|
+
var level = data.levelInfo;
|
32376
32385
|
if (!level.details || level.details.live && this.levelLastLoaded !== level || this.waitForCdnTuneIn(level.details)) {
|
32377
32386
|
this.state = State.WAITING_LEVEL;
|
32378
32387
|
}
|
@@ -32389,7 +32398,7 @@
|
|
32389
32398
|
return;
|
32390
32399
|
}
|
32391
32400
|
this.log("Level " + newLevelId + " loaded [" + newDetails.startSN + "," + newDetails.endSN + "]" + (newDetails.lastPartSn ? "[part-" + newDetails.lastPartSn + "-" + newDetails.lastPartIndex + "]" : '') + ", cc [" + newDetails.startCC + ", " + newDetails.endCC + "] duration:" + duration);
|
32392
|
-
var curLevel =
|
32401
|
+
var curLevel = data.levelInfo;
|
32393
32402
|
var fragCurrent = this.fragCurrent;
|
32394
32403
|
if (fragCurrent && (this.state === State.FRAG_LOADING || this.state === State.FRAG_LOADING_WAITING_RETRY)) {
|
32395
32404
|
if (fragCurrent.level !== data.level && fragCurrent.loader) {
|
@@ -33451,6 +33460,7 @@
|
|
33451
33460
|
hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);
|
33452
33461
|
hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);
|
33453
33462
|
hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
|
33463
|
+
hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);
|
33454
33464
|
};
|
33455
33465
|
_proto.unregisterListeners = function unregisterListeners() {
|
33456
33466
|
var hls = this.hls;
|
@@ -33458,6 +33468,7 @@
|
|
33458
33468
|
hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);
|
33459
33469
|
hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);
|
33460
33470
|
hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
|
33471
|
+
hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);
|
33461
33472
|
}
|
33462
33473
|
|
33463
33474
|
/**
|
@@ -33507,7 +33518,8 @@
|
|
33507
33518
|
responseType: 'text',
|
33508
33519
|
type: PlaylistContextType.MANIFEST,
|
33509
33520
|
url: url,
|
33510
|
-
deliveryDirectives: null
|
33521
|
+
deliveryDirectives: null,
|
33522
|
+
levelOrTrack: null
|
33511
33523
|
});
|
33512
33524
|
};
|
33513
33525
|
_proto.onLevelLoading = function onLevelLoading(event, data) {
|
@@ -33515,7 +33527,8 @@
|
|
33515
33527
|
level = data.level,
|
33516
33528
|
pathwayId = data.pathwayId,
|
33517
33529
|
url = data.url,
|
33518
|
-
deliveryDirectives = data.deliveryDirectives
|
33530
|
+
deliveryDirectives = data.deliveryDirectives,
|
33531
|
+
levelInfo = data.levelInfo;
|
33519
33532
|
this.load({
|
33520
33533
|
id: id,
|
33521
33534
|
level: level,
|
@@ -33523,14 +33536,16 @@
|
|
33523
33536
|
responseType: 'text',
|
33524
33537
|
type: PlaylistContextType.LEVEL,
|
33525
33538
|
url: url,
|
33526
|
-
deliveryDirectives: deliveryDirectives
|
33539
|
+
deliveryDirectives: deliveryDirectives,
|
33540
|
+
levelOrTrack: levelInfo
|
33527
33541
|
});
|
33528
33542
|
};
|
33529
33543
|
_proto.onAudioTrackLoading = function onAudioTrackLoading(event, data) {
|
33530
33544
|
var id = data.id,
|
33531
33545
|
groupId = data.groupId,
|
33532
33546
|
url = data.url,
|
33533
|
-
deliveryDirectives = data.deliveryDirectives
|
33547
|
+
deliveryDirectives = data.deliveryDirectives,
|
33548
|
+
track = data.track;
|
33534
33549
|
this.load({
|
33535
33550
|
id: id,
|
33536
33551
|
groupId: groupId,
|
@@ -33538,14 +33553,16 @@
|
|
33538
33553
|
responseType: 'text',
|
33539
33554
|
type: PlaylistContextType.AUDIO_TRACK,
|
33540
33555
|
url: url,
|
33541
|
-
deliveryDirectives: deliveryDirectives
|
33556
|
+
deliveryDirectives: deliveryDirectives,
|
33557
|
+
levelOrTrack: track
|
33542
33558
|
});
|
33543
33559
|
};
|
33544
33560
|
_proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(event, data) {
|
33545
33561
|
var id = data.id,
|
33546
33562
|
groupId = data.groupId,
|
33547
33563
|
url = data.url,
|
33548
|
-
deliveryDirectives = data.deliveryDirectives
|
33564
|
+
deliveryDirectives = data.deliveryDirectives,
|
33565
|
+
track = data.track;
|
33549
33566
|
this.load({
|
33550
33567
|
id: id,
|
33551
33568
|
groupId: groupId,
|
@@ -33553,9 +33570,23 @@
|
|
33553
33570
|
responseType: 'text',
|
33554
33571
|
type: PlaylistContextType.SUBTITLE_TRACK,
|
33555
33572
|
url: url,
|
33556
|
-
deliveryDirectives: deliveryDirectives
|
33573
|
+
deliveryDirectives: deliveryDirectives,
|
33574
|
+
levelOrTrack: track
|
33557
33575
|
});
|
33558
33576
|
};
|
33577
|
+
_proto.onLevelsUpdated = function onLevelsUpdated(event, data) {
|
33578
|
+
// abort and delete loader of removed levels
|
33579
|
+
var loader = this.loaders[PlaylistContextType.LEVEL];
|
33580
|
+
if (loader) {
|
33581
|
+
var context = loader.context;
|
33582
|
+
if (context && !data.levels.some(function (lvl) {
|
33583
|
+
return lvl === context.levelOrTrack;
|
33584
|
+
})) {
|
33585
|
+
loader.abort();
|
33586
|
+
delete this.loaders[PlaylistContextType.LEVEL];
|
33587
|
+
}
|
33588
|
+
}
|
33589
|
+
};
|
33559
33590
|
_proto.load = function load(context) {
|
33560
33591
|
var _context$deliveryDire,
|
33561
33592
|
_this = this;
|
@@ -33567,7 +33598,7 @@
|
|
33567
33598
|
var loader = this.getInternalLoader(context);
|
33568
33599
|
if (loader) {
|
33569
33600
|
var loaderContext = loader.context;
|
33570
|
-
if (loaderContext && loaderContext.url === context.url && loaderContext.
|
33601
|
+
if (loaderContext && loaderContext.url === context.url && loaderContext.levelOrTrack === context.levelOrTrack) {
|
33571
33602
|
// same URL can't overlap
|
33572
33603
|
this.hls.logger.trace('[playlist-loader]: playlist request ongoing');
|
33573
33604
|
return;
|
@@ -33888,6 +33919,7 @@
|
|
33888
33919
|
case PlaylistContextType.LEVEL:
|
33889
33920
|
hls.trigger(Events.LEVEL_LOADED, {
|
33890
33921
|
details: levelDetails,
|
33922
|
+
levelInfo: context.levelOrTrack || hls.levels[0],
|
33891
33923
|
level: levelIndex || 0,
|
33892
33924
|
id: id || 0,
|
33893
33925
|
stats: stats,
|
@@ -33898,6 +33930,7 @@
|
|
33898
33930
|
case PlaylistContextType.AUDIO_TRACK:
|
33899
33931
|
hls.trigger(Events.AUDIO_TRACK_LOADED, {
|
33900
33932
|
details: levelDetails,
|
33933
|
+
track: context.levelOrTrack,
|
33901
33934
|
id: id || 0,
|
33902
33935
|
groupId: groupId || '',
|
33903
33936
|
stats: stats,
|
@@ -33908,6 +33941,7 @@
|
|
33908
33941
|
case PlaylistContextType.SUBTITLE_TRACK:
|
33909
33942
|
hls.trigger(Events.SUBTITLE_TRACK_LOADED, {
|
33910
33943
|
details: levelDetails,
|
33944
|
+
track: context.levelOrTrack,
|
33911
33945
|
id: id || 0,
|
33912
33946
|
groupId: groupId || '',
|
33913
33947
|
stats: stats,
|
package/dist/hls.js.d.ts
CHANGED
@@ -2606,6 +2606,7 @@ export declare interface LevelLoadedData {
|
|
2606
2606
|
details: LevelDetails;
|
2607
2607
|
id: number;
|
2608
2608
|
level: number;
|
2609
|
+
levelInfo: Level;
|
2609
2610
|
networkDetails: any;
|
2610
2611
|
stats: LoaderStats;
|
2611
2612
|
deliveryDirectives: HlsUrlParameters | null;
|
@@ -2614,6 +2615,7 @@ export declare interface LevelLoadedData {
|
|
2614
2615
|
export declare interface LevelLoadingData {
|
2615
2616
|
id: number;
|
2616
2617
|
level: number;
|
2618
|
+
levelInfo: Level;
|
2617
2619
|
pathwayId: string | undefined;
|
2618
2620
|
url: string;
|
2619
2621
|
deliveryDirectives: HlsUrlParameters | null;
|
@@ -3152,6 +3154,7 @@ export declare interface PlaylistLoaderContext extends LoaderContext {
|
|
3152
3154
|
pathwayId?: string;
|
3153
3155
|
levelDetails?: LevelDetails;
|
3154
3156
|
deliveryDirectives: HlsUrlParameters | null;
|
3157
|
+
levelOrTrack: Level | MediaPlaylist | null;
|
3155
3158
|
}
|
3156
3159
|
|
3157
3160
|
export declare type RationalTimestamp = {
|
@@ -3654,11 +3657,13 @@ export declare interface TrackLoadedData {
|
|
3654
3657
|
networkDetails: any;
|
3655
3658
|
stats: LoaderStats;
|
3656
3659
|
deliveryDirectives: HlsUrlParameters | null;
|
3660
|
+
track: MediaPlaylist;
|
3657
3661
|
}
|
3658
3662
|
|
3659
3663
|
export declare interface TrackLoadingData {
|
3660
3664
|
id: number;
|
3661
3665
|
groupId: string;
|
3666
|
+
track: MediaPlaylist;
|
3662
3667
|
url: string;
|
3663
3668
|
deliveryDirectives: HlsUrlParameters | null;
|
3664
3669
|
}
|