hls.js 1.6.0-beta.1.0.canary.10764 → 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 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.10764");
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.10764";
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
  };
@@ -26290,7 +26296,8 @@
26290
26296
  url: url,
26291
26297
  id: id,
26292
26298
  groupId: groupId,
26293
- deliveryDirectives: hlsUrlParameters || null
26299
+ deliveryDirectives: hlsUrlParameters || null,
26300
+ track: currentTrack
26294
26301
  });
26295
26302
  }
26296
26303
  }
@@ -31264,7 +31271,7 @@
31264
31271
  var _data$deliveryDirecti2;
31265
31272
  var level = data.level,
31266
31273
  details = data.details;
31267
- var curLevel = this._levels[level];
31274
+ var curLevel = data.levelInfo;
31268
31275
  if (!curLevel) {
31269
31276
  var _data$deliveryDirecti;
31270
31277
  this.warn("Invalid level index " + level);
@@ -31275,7 +31282,7 @@
31275
31282
  }
31276
31283
 
31277
31284
  // only process level loaded events matching with expected level
31278
- if (level === this.currentLevelIndex) {
31285
+ if (curLevel === this.currentLevel) {
31279
31286
  // reset level load error counter on successful level loaded only if there is no issues with fragments
31280
31287
  if (curLevel.fragmentError === 0) {
31281
31288
  curLevel.loadError = 0;
@@ -31313,6 +31320,7 @@
31313
31320
  this.hls.trigger(Events.LEVEL_LOADING, {
31314
31321
  url: url,
31315
31322
  level: currentLevelIndex,
31323
+ levelInfo: currentLevel,
31316
31324
  pathwayId: currentLevel.attrs['PATHWAY-ID'],
31317
31325
  id: 0,
31318
31326
  // Deprecated Level urlId
@@ -32373,7 +32381,7 @@
32373
32381
  if (!levels || this.state !== State.IDLE) {
32374
32382
  return;
32375
32383
  }
32376
- var level = levels[data.level];
32384
+ var level = data.levelInfo;
32377
32385
  if (!level.details || level.details.live && this.levelLastLoaded !== level || this.waitForCdnTuneIn(level.details)) {
32378
32386
  this.state = State.WAITING_LEVEL;
32379
32387
  }
@@ -32390,7 +32398,7 @@
32390
32398
  return;
32391
32399
  }
32392
32400
  this.log("Level " + newLevelId + " loaded [" + newDetails.startSN + "," + newDetails.endSN + "]" + (newDetails.lastPartSn ? "[part-" + newDetails.lastPartSn + "-" + newDetails.lastPartIndex + "]" : '') + ", cc [" + newDetails.startCC + ", " + newDetails.endCC + "] duration:" + duration);
32393
- var curLevel = levels[newLevelId];
32401
+ var curLevel = data.levelInfo;
32394
32402
  var fragCurrent = this.fragCurrent;
32395
32403
  if (fragCurrent && (this.state === State.FRAG_LOADING || this.state === State.FRAG_LOADING_WAITING_RETRY)) {
32396
32404
  if (fragCurrent.level !== data.level && fragCurrent.loader) {
@@ -33452,6 +33460,7 @@
33452
33460
  hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);
33453
33461
  hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);
33454
33462
  hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
33463
+ hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);
33455
33464
  };
33456
33465
  _proto.unregisterListeners = function unregisterListeners() {
33457
33466
  var hls = this.hls;
@@ -33459,6 +33468,7 @@
33459
33468
  hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);
33460
33469
  hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);
33461
33470
  hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
33471
+ hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);
33462
33472
  }
33463
33473
 
33464
33474
  /**
@@ -33508,7 +33518,8 @@
33508
33518
  responseType: 'text',
33509
33519
  type: PlaylistContextType.MANIFEST,
33510
33520
  url: url,
33511
- deliveryDirectives: null
33521
+ deliveryDirectives: null,
33522
+ levelOrTrack: null
33512
33523
  });
33513
33524
  };
33514
33525
  _proto.onLevelLoading = function onLevelLoading(event, data) {
@@ -33516,7 +33527,8 @@
33516
33527
  level = data.level,
33517
33528
  pathwayId = data.pathwayId,
33518
33529
  url = data.url,
33519
- deliveryDirectives = data.deliveryDirectives;
33530
+ deliveryDirectives = data.deliveryDirectives,
33531
+ levelInfo = data.levelInfo;
33520
33532
  this.load({
33521
33533
  id: id,
33522
33534
  level: level,
@@ -33524,14 +33536,16 @@
33524
33536
  responseType: 'text',
33525
33537
  type: PlaylistContextType.LEVEL,
33526
33538
  url: url,
33527
- deliveryDirectives: deliveryDirectives
33539
+ deliveryDirectives: deliveryDirectives,
33540
+ levelOrTrack: levelInfo
33528
33541
  });
33529
33542
  };
33530
33543
  _proto.onAudioTrackLoading = function onAudioTrackLoading(event, data) {
33531
33544
  var id = data.id,
33532
33545
  groupId = data.groupId,
33533
33546
  url = data.url,
33534
- deliveryDirectives = data.deliveryDirectives;
33547
+ deliveryDirectives = data.deliveryDirectives,
33548
+ track = data.track;
33535
33549
  this.load({
33536
33550
  id: id,
33537
33551
  groupId: groupId,
@@ -33539,14 +33553,16 @@
33539
33553
  responseType: 'text',
33540
33554
  type: PlaylistContextType.AUDIO_TRACK,
33541
33555
  url: url,
33542
- deliveryDirectives: deliveryDirectives
33556
+ deliveryDirectives: deliveryDirectives,
33557
+ levelOrTrack: track
33543
33558
  });
33544
33559
  };
33545
33560
  _proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(event, data) {
33546
33561
  var id = data.id,
33547
33562
  groupId = data.groupId,
33548
33563
  url = data.url,
33549
- deliveryDirectives = data.deliveryDirectives;
33564
+ deliveryDirectives = data.deliveryDirectives,
33565
+ track = data.track;
33550
33566
  this.load({
33551
33567
  id: id,
33552
33568
  groupId: groupId,
@@ -33554,9 +33570,23 @@
33554
33570
  responseType: 'text',
33555
33571
  type: PlaylistContextType.SUBTITLE_TRACK,
33556
33572
  url: url,
33557
- deliveryDirectives: deliveryDirectives
33573
+ deliveryDirectives: deliveryDirectives,
33574
+ levelOrTrack: track
33558
33575
  });
33559
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
+ };
33560
33590
  _proto.load = function load(context) {
33561
33591
  var _context$deliveryDire,
33562
33592
  _this = this;
@@ -33568,7 +33598,7 @@
33568
33598
  var loader = this.getInternalLoader(context);
33569
33599
  if (loader) {
33570
33600
  var loaderContext = loader.context;
33571
- if (loaderContext && loaderContext.url === context.url && loaderContext.level === context.level) {
33601
+ if (loaderContext && loaderContext.url === context.url && loaderContext.levelOrTrack === context.levelOrTrack) {
33572
33602
  // same URL can't overlap
33573
33603
  this.hls.logger.trace('[playlist-loader]: playlist request ongoing');
33574
33604
  return;
@@ -33889,6 +33919,7 @@
33889
33919
  case PlaylistContextType.LEVEL:
33890
33920
  hls.trigger(Events.LEVEL_LOADED, {
33891
33921
  details: levelDetails,
33922
+ levelInfo: context.levelOrTrack || hls.levels[0],
33892
33923
  level: levelIndex || 0,
33893
33924
  id: id || 0,
33894
33925
  stats: stats,
@@ -33899,6 +33930,7 @@
33899
33930
  case PlaylistContextType.AUDIO_TRACK:
33900
33931
  hls.trigger(Events.AUDIO_TRACK_LOADED, {
33901
33932
  details: levelDetails,
33933
+ track: context.levelOrTrack,
33902
33934
  id: id || 0,
33903
33935
  groupId: groupId || '',
33904
33936
  stats: stats,
@@ -33909,6 +33941,7 @@
33909
33941
  case PlaylistContextType.SUBTITLE_TRACK:
33910
33942
  hls.trigger(Events.SUBTITLE_TRACK_LOADED, {
33911
33943
  details: levelDetails,
33944
+ track: context.levelOrTrack,
33912
33945
  id: id || 0,
33913
33946
  groupId: groupId || '',
33914
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
  }