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 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.10763");
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.10763";
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 = this._levels[level];
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 (level === this.currentLevelIndex) {
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 = levels[data.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 = levels[newLevelId];
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.level === context.level) {
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
  }