hls.js 1.5.7 → 1.5.8-0.canary.10046

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.
Files changed (72) hide show
  1. package/README.md +2 -1
  2. package/dist/hls-demo.js +10 -0
  3. package/dist/hls-demo.js.map +1 -1
  4. package/dist/hls.js +2314 -1298
  5. package/dist/hls.js.d.ts +97 -84
  6. package/dist/hls.js.map +1 -1
  7. package/dist/hls.light.js +1486 -1075
  8. package/dist/hls.light.js.map +1 -1
  9. package/dist/hls.light.min.js +1 -1
  10. package/dist/hls.light.min.js.map +1 -1
  11. package/dist/hls.light.mjs +1195 -789
  12. package/dist/hls.light.mjs.map +1 -1
  13. package/dist/hls.min.js +1 -1
  14. package/dist/hls.min.js.map +1 -1
  15. package/dist/hls.mjs +1979 -982
  16. package/dist/hls.mjs.map +1 -1
  17. package/dist/hls.worker.js +1 -1
  18. package/dist/hls.worker.js.map +1 -1
  19. package/package.json +22 -22
  20. package/src/config.ts +3 -2
  21. package/src/controller/abr-controller.ts +24 -20
  22. package/src/controller/audio-stream-controller.ts +68 -74
  23. package/src/controller/audio-track-controller.ts +1 -1
  24. package/src/controller/base-playlist-controller.ts +20 -8
  25. package/src/controller/base-stream-controller.ts +157 -36
  26. package/src/controller/buffer-controller.ts +203 -67
  27. package/src/controller/buffer-operation-queue.ts +16 -19
  28. package/src/controller/cap-level-controller.ts +2 -2
  29. package/src/controller/cmcd-controller.ts +27 -6
  30. package/src/controller/content-steering-controller.ts +8 -6
  31. package/src/controller/eme-controller.ts +9 -22
  32. package/src/controller/error-controller.ts +6 -8
  33. package/src/controller/fps-controller.ts +2 -3
  34. package/src/controller/fragment-tracker.ts +15 -11
  35. package/src/controller/gap-controller.ts +43 -16
  36. package/src/controller/latency-controller.ts +9 -11
  37. package/src/controller/level-controller.ts +12 -18
  38. package/src/controller/stream-controller.ts +36 -31
  39. package/src/controller/subtitle-stream-controller.ts +28 -40
  40. package/src/controller/subtitle-track-controller.ts +5 -3
  41. package/src/controller/timeline-controller.ts +23 -30
  42. package/src/crypt/aes-crypto.ts +21 -2
  43. package/src/crypt/decrypter-aes-mode.ts +4 -0
  44. package/src/crypt/decrypter.ts +32 -18
  45. package/src/crypt/fast-aes-key.ts +24 -5
  46. package/src/demux/audio/adts.ts +9 -4
  47. package/src/demux/sample-aes.ts +2 -0
  48. package/src/demux/transmuxer-interface.ts +4 -12
  49. package/src/demux/transmuxer-worker.ts +4 -4
  50. package/src/demux/transmuxer.ts +16 -3
  51. package/src/demux/tsdemuxer.ts +71 -37
  52. package/src/demux/video/avc-video-parser.ts +208 -119
  53. package/src/demux/video/base-video-parser.ts +134 -2
  54. package/src/demux/video/exp-golomb.ts +0 -208
  55. package/src/demux/video/hevc-video-parser.ts +746 -0
  56. package/src/events.ts +7 -0
  57. package/src/hls.ts +49 -37
  58. package/src/loader/fragment-loader.ts +9 -2
  59. package/src/loader/key-loader.ts +2 -0
  60. package/src/loader/level-key.ts +10 -9
  61. package/src/loader/playlist-loader.ts +4 -5
  62. package/src/remux/mp4-generator.ts +196 -1
  63. package/src/remux/mp4-remuxer.ts +23 -7
  64. package/src/task-loop.ts +5 -2
  65. package/src/types/component-api.ts +2 -0
  66. package/src/types/demuxer.ts +3 -0
  67. package/src/types/events.ts +4 -0
  68. package/src/utils/buffer-helper.ts +12 -31
  69. package/src/utils/codecs.ts +34 -5
  70. package/src/utils/encryption-methods-util.ts +21 -0
  71. package/src/utils/logger.ts +54 -24
  72. package/src/utils/mp4-tools.ts +4 -2
package/dist/hls.js.d.ts CHANGED
@@ -6,7 +6,7 @@ export declare interface AbrComponentAPI extends ComponentAPI {
6
6
  resetEstimator(abrEwmaDefaultEstimate: number): any;
7
7
  }
8
8
 
9
- export declare class AbrController implements AbrComponentAPI {
9
+ export declare class AbrController extends Logger implements AbrComponentAPI {
10
10
  protected hls: Hls;
11
11
  private lastLevelLoadSec;
12
12
  private lastLoadedFragLevel;
@@ -112,8 +112,8 @@ export declare class AudioStreamController extends BaseStreamController implemen
112
112
  private cachedTrackLoadedData;
113
113
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
114
114
  protected onHandlerDestroying(): void;
115
- private _registerListeners;
116
- private _unregisterListeners;
115
+ protected registerListeners(): void;
116
+ protected unregisterListeners(): void;
117
117
  onInitPtsFound(event: Events.INIT_PTS_FOUND, { frag, id, initPTS, timescale }: InitPTSFoundData): void;
118
118
  startLoad(startPosition: number): void;
119
119
  doTick(): void;
@@ -121,19 +121,18 @@ export declare class AudioStreamController extends BaseStreamController implemen
121
121
  protected resetLoadingState(): void;
122
122
  protected onTickEnd(): void;
123
123
  private doTickIdle;
124
- protected getMaxBufferLength(mainBufferLength?: number): number;
125
- onMediaDetaching(): void;
126
- onAudioTracksUpdated(event: Events.AUDIO_TRACKS_UPDATED, { audioTracks }: AudioTracksUpdatedData): void;
127
- onAudioTrackSwitching(event: Events.AUDIO_TRACK_SWITCHING, data: AudioTrackSwitchingData): void;
128
- onManifestLoading(): void;
129
- onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;
130
- onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: TrackLoadedData): void;
124
+ protected onMediaDetaching(): void;
125
+ private onAudioTracksUpdated;
126
+ private onAudioTrackSwitching;
127
+ protected onManifestLoading(): void;
128
+ private onLevelLoaded;
129
+ private onAudioTrackLoaded;
131
130
  _handleFragmentLoadProgress(data: FragLoadedData): void;
132
131
  protected _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;
133
- onBufferReset(): void;
134
- onBufferCreated(event: Events.BUFFER_CREATED, data: BufferCreatedData): void;
135
- onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;
136
- private onError;
132
+ private onBufferReset;
133
+ private onBufferCreated;
134
+ private onFragBuffered;
135
+ protected onError(event: Events.ERROR, data: ErrorData): void;
137
136
  private onBufferFlushing;
138
137
  private onBufferFlushed;
139
138
  private _handleTransmuxComplete;
@@ -188,13 +187,11 @@ export declare interface BackBufferData {
188
187
  bufferEnd: number;
189
188
  }
190
189
 
191
- export declare class BasePlaylistController implements NetworkComponentAPI {
190
+ export declare class BasePlaylistController extends Logger implements NetworkComponentAPI {
192
191
  protected hls: Hls;
193
192
  protected timer: number;
194
193
  protected requestScheduled: number;
195
194
  protected canLoad: boolean;
196
- protected log: (msg: any) => void;
197
- protected warn: (msg: any) => void;
198
195
  constructor(hls: Hls, logPrefix: string);
199
196
  destroy(): void;
200
197
  protected clearTimer(): void;
@@ -249,22 +246,25 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
249
246
  protected startFragRequested: boolean;
250
247
  protected decrypter: Decrypter;
251
248
  protected initPTS: RationalTimestamp[];
252
- protected onvseeking: EventListener | null;
253
- protected onvended: EventListener | null;
254
- private readonly logPrefix;
255
- protected log: (msg: any) => void;
256
- protected warn: (msg: any) => void;
249
+ protected buffering: boolean;
250
+ private loadingParts;
257
251
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader, logPrefix: string, playlistType: PlaylistLevelType);
252
+ protected registerListeners(): void;
253
+ protected unregisterListeners(): void;
258
254
  protected doTick(): void;
259
255
  protected onTickEnd(): void;
260
256
  startLoad(startPosition: number): void;
261
257
  stopLoad(): void;
258
+ pauseBuffering(): void;
259
+ resumeBuffering(): void;
262
260
  protected _streamEnded(bufferInfo: BufferInfo, levelDetails: LevelDetails): boolean;
263
261
  protected getLevelDetails(): LevelDetails | undefined;
264
262
  protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
265
263
  protected onMediaDetaching(): void;
266
- protected onMediaSeeking(): void;
267
- protected onMediaEnded(): void;
264
+ protected onManifestLoading(): void;
265
+ protected onError(event: Events.ERROR, data: ErrorData): void;
266
+ protected onMediaSeeking: () => void;
267
+ protected onMediaEnded: () => void;
268
268
  protected onManifestLoaded(event: Events.MANIFEST_LOADED, data: ManifestLoadedData): void;
269
269
  protected onHandlerDestroying(): void;
270
270
  protected onHandlerDestroyed(): void;
@@ -284,6 +284,7 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
284
284
  private doFragPartsLoad;
285
285
  private handleFragLoadError;
286
286
  protected _handleTransmuxerFlush(chunkMeta: ChunkMetadata): void;
287
+ private shouldLoadParts;
287
288
  protected getCurrentContext(chunkMeta: ChunkMetadata): {
288
289
  frag: Fragment;
289
290
  part: Part | null;
@@ -353,17 +354,20 @@ export declare interface BufferCodecsData {
353
354
  audio?: Track;
354
355
  }
355
356
 
356
- export declare class BufferController implements ComponentAPI {
357
+ export declare class BufferController extends Logger implements ComponentAPI {
357
358
  private details;
358
359
  private _objectUrl;
359
360
  private operationQueue;
360
361
  private listeners;
361
362
  private hls;
363
+ private fragmentTracker;
362
364
  bufferCodecEventsExpected: number;
363
365
  private _bufferCodecEventsTotal;
364
366
  media: HTMLMediaElement | null;
365
367
  mediaSource: MediaSource | null;
366
368
  private lastMpegAudioChunk;
369
+ private blockedAudioAppend;
370
+ private lastVideoAppendEnd;
367
371
  private appendSource;
368
372
  appendErrors: {
369
373
  audio: number;
@@ -373,10 +377,7 @@ export declare class BufferController implements ComponentAPI {
373
377
  tracks: TrackSet;
374
378
  pendingTracks: TrackSet;
375
379
  sourceBuffer: SourceBuffers;
376
- protected log: (msg: any) => void;
377
- protected warn: (msg: any, obj?: any) => void;
378
- protected error: (msg: any, obj?: any) => void;
379
- constructor(hls: Hls);
380
+ constructor(hls: Hls, fragmentTracker: FragmentTracker);
380
381
  hasSourceTypes(): boolean;
381
382
  destroy(): void;
382
383
  protected registerListeners(): void;
@@ -391,8 +392,11 @@ export declare class BufferController implements ComponentAPI {
391
392
  protected onBufferReset(): void;
392
393
  private resetBuffer;
393
394
  protected onBufferCodecs(event: Events.BUFFER_CODECS, data: BufferCodecsData): void;
394
- protected appendChangeType(type: any, mimeType: any): void;
395
+ protected appendChangeType(type: SourceBufferName, mimeType: string): void;
396
+ private blockAudio;
397
+ private unblockAudio;
395
398
  protected onBufferAppending(event: Events.BUFFER_APPENDING, eventData: BufferAppendingData): void;
399
+ private getFlushOp;
396
400
  protected onBufferFlushing(event: Events.BUFFER_FLUSHING, data: BufferFlushingData): void;
397
401
  protected onFragParsed(event: Events.FRAG_PARSED, data: FragParsedData): void;
398
402
  private onFragChanged;
@@ -406,8 +410,8 @@ export declare class BufferController implements ComponentAPI {
406
410
  * 'liveDurationInfinity` is set to `true`
407
411
  * More details: https://github.com/video-dev/hls.js/issues/355
408
412
  */
409
- private updateMediaElementDuration;
410
- updateSeekableRange(levelDetails: any): void;
413
+ private getDurationAndRange;
414
+ private updateMediaSource;
411
415
  protected checkPendingTracks(): void;
412
416
  protected createSourceBuffers(tracks: TrackSet): void;
413
417
  private _onMediaSourceOpen;
@@ -602,6 +606,7 @@ export declare class CMCDController implements ComponentAPI {
602
606
  * Apply CMCD data to a segment request
603
607
  */
604
608
  private applyFragmentData;
609
+ private getNextFrag;
605
610
  /**
606
611
  * The CMCD object type.
607
612
  */
@@ -635,9 +640,8 @@ export declare interface ComponentAPI {
635
640
  destroy(): void;
636
641
  }
637
642
 
638
- export declare class ContentSteeringController implements NetworkComponentAPI {
643
+ export declare class ContentSteeringController extends Logger implements NetworkComponentAPI {
639
644
  private readonly hls;
640
- private log;
641
645
  private loader;
642
646
  private uri;
643
647
  private pathwayId;
@@ -727,6 +731,7 @@ declare class Decrypter {
727
731
  private currentIV;
728
732
  private currentResult;
729
733
  private useSoftware;
734
+ private enableSoftwareAES;
730
735
  constructor(config: HlsConfig, { removePKCS7Padding }?: {
731
736
  removePKCS7Padding?: boolean | undefined;
732
737
  });
@@ -734,14 +739,19 @@ declare class Decrypter {
734
739
  isSync(): boolean;
735
740
  flush(): Uint8Array | null;
736
741
  reset(): void;
737
- decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer): Promise<ArrayBuffer>;
738
- softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): ArrayBuffer | null;
739
- webCryptoDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): Promise<ArrayBuffer>;
742
+ decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): Promise<ArrayBuffer>;
743
+ softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): ArrayBuffer | null;
744
+ webCryptoDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): Promise<ArrayBuffer>;
740
745
  private onWebCryptoError;
741
746
  private getValidChunk;
742
747
  private logOnce;
743
748
  }
744
749
 
750
+ declare const enum DecrypterAesMode {
751
+ cbc = 0,
752
+ ctr = 1
753
+ }
754
+
745
755
  declare type DRMSystemConfiguration = {
746
756
  licenseUrl: string;
747
757
  serverCertificateUrl?: string;
@@ -787,7 +797,7 @@ export declare const enum ElementaryStreamTypes {
787
797
  * @class
788
798
  * @constructor
789
799
  */
790
- export declare class EMEController implements ComponentAPI {
800
+ export declare class EMEController extends Logger implements ComponentAPI {
791
801
  static CDMCleanupPromise: Promise<void> | void;
792
802
  private readonly hls;
793
803
  private readonly config;
@@ -798,12 +808,6 @@ export declare class EMEController implements ComponentAPI {
798
808
  private mediaKeySessions;
799
809
  private keyIdToKeySessionPromise;
800
810
  private setMediaKeysQueue;
801
- private onMediaEncrypted;
802
- private onWaitingForKey;
803
- private debug;
804
- private log;
805
- private warn;
806
- private error;
807
811
  constructor(hls: Hls);
808
812
  destroy(): void;
809
813
  private registerListeners;
@@ -824,8 +828,8 @@ export declare class EMEController implements ComponentAPI {
824
828
  private handleError;
825
829
  private getKeySystemForKeyPromise;
826
830
  private getKeySystemSelectionPromise;
827
- private _onMediaEncrypted;
828
- private _onWaitingForKey;
831
+ private onMediaEncrypted;
832
+ private onWaitingForKey;
829
833
  private attemptSetMediaKeys;
830
834
  private generateRequestWithPreferredKeySession;
831
835
  private onKeyStatusChange;
@@ -859,13 +863,10 @@ export declare const enum ErrorActionFlags {
859
863
  SwitchToSDR = 4
860
864
  }
861
865
 
862
- export declare class ErrorController implements NetworkComponentAPI {
866
+ export declare class ErrorController extends Logger implements NetworkComponentAPI {
863
867
  private readonly hls;
864
868
  private playlistError;
865
869
  private penalizedRenditions;
866
- private log;
867
- private warn;
868
- private error;
869
870
  constructor(hls: Hls);
870
871
  private registerListeners;
871
872
  private unregisterListeners;
@@ -975,6 +976,7 @@ export declare enum Events {
975
976
  MEDIA_ATTACHED = "hlsMediaAttached",
976
977
  MEDIA_DETACHING = "hlsMediaDetaching",
977
978
  MEDIA_DETACHED = "hlsMediaDetached",
979
+ MEDIA_ENDED = "hlsMediaEnded",
978
980
  BUFFER_RESET = "hlsBufferReset",
979
981
  BUFFER_CODECS = "hlsBufferCodecs",
980
982
  BUFFER_CREATED = "hlsBufferCreated",
@@ -1250,6 +1252,7 @@ declare class FragmentTracker implements ComponentAPI {
1250
1252
  * If not found any Fragment, return null
1251
1253
  */
1252
1254
  getBufferedFrag(position: number, levelType: PlaylistLevelType): Fragment | null;
1255
+ getFragAtPos(position: number, levelType: PlaylistLevelType, buffered?: boolean): Fragment | null;
1253
1256
  /**
1254
1257
  * Partial fragments effected by coded frame eviction will be removed
1255
1258
  * The browser will unload parts of the buffer to free up memory for new buffer data
@@ -1321,9 +1324,12 @@ declare class Hls implements HlsEventEmitter {
1321
1324
  * The configuration object provided on player instantiation.
1322
1325
  */
1323
1326
  readonly userConfig: Partial<HlsConfig>;
1327
+ /**
1328
+ * The logger functions used by this player instance, configured on player instantiation.
1329
+ */
1330
+ readonly logger: ILogger;
1324
1331
  private coreComponents;
1325
1332
  private networkControllers;
1326
- private started;
1327
1333
  private _emitter;
1328
1334
  private _autoLevelCapping;
1329
1335
  private _maxHdcpLevel;
@@ -1410,11 +1416,11 @@ declare class Hls implements HlsEventEmitter {
1410
1416
  */
1411
1417
  stopLoad(): void;
1412
1418
  /**
1413
- * Resumes stream controller segment loading if previously started.
1419
+ * Resumes stream controller segment loading after `pauseBuffering` has been called.
1414
1420
  */
1415
1421
  resumeBuffering(): void;
1416
1422
  /**
1417
- * Stops stream controller segment loading without changing 'started' state like stopLoad().
1423
+ * Prevents stream controller from loading new segments until `resumeBuffering` is called.
1418
1424
  * This allows for media buffering to be paused without interupting playlist loading.
1419
1425
  */
1420
1426
  pauseBuffering(): void;
@@ -1559,6 +1565,7 @@ declare class Hls implements HlsEventEmitter {
1559
1565
  */
1560
1566
  get playingDate(): Date | null;
1561
1567
  get mainForwardBufferInfo(): BufferInfo | null;
1568
+ get maxBufferLength(): number;
1562
1569
  /**
1563
1570
  * Find and select the best matching audio track, making a level switch when a Group change is necessary.
1564
1571
  * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found.
@@ -1706,6 +1713,7 @@ export declare interface HlsListeners {
1706
1713
  [Events.MEDIA_ATTACHED]: (event: Events.MEDIA_ATTACHED, data: MediaAttachedData) => void;
1707
1714
  [Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING) => void;
1708
1715
  [Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED) => void;
1716
+ [Events.MEDIA_ENDED]: (event: Events.MEDIA_ENDED, data: MediaEndedData) => void;
1709
1717
  [Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;
1710
1718
  [Events.BUFFER_CODECS]: (event: Events.BUFFER_CODECS, data: BufferCodecsData) => void;
1711
1719
  [Events.BUFFER_CREATED]: (event: Events.BUFFER_CREATED, data: BufferCreatedData) => void;
@@ -2257,6 +2265,16 @@ export declare class LoadStats implements LoaderStats {
2257
2265
  buffering: HlsProgressivePerformanceTiming;
2258
2266
  }
2259
2267
 
2268
+ export declare class Logger implements ILogger {
2269
+ trace: ILogFunction;
2270
+ debug: ILogFunction;
2271
+ log: ILogFunction;
2272
+ warn: ILogFunction;
2273
+ info: ILogFunction;
2274
+ error: ILogFunction;
2275
+ constructor(label: string, logger: ILogger);
2276
+ }
2277
+
2260
2278
  export declare type MainPlaylistType = AudioPlaylistType | 'VIDEO';
2261
2279
 
2262
2280
  export declare interface ManifestLoadedData {
@@ -2332,6 +2350,10 @@ export declare type MediaDecodingInfo = {
2332
2350
  error?: Error;
2333
2351
  };
2334
2352
 
2353
+ export declare interface MediaEndedData {
2354
+ stalled: boolean;
2355
+ }
2356
+
2335
2357
  export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;
2336
2358
 
2337
2359
  export declare interface MediaKeySessionContext {
@@ -2401,6 +2423,8 @@ export declare type MP4RemuxerConfig = {
2401
2423
  export declare interface NetworkComponentAPI extends ComponentAPI {
2402
2424
  startLoad(startPosition: number): void;
2403
2425
  stopLoad(): void;
2426
+ pauseBuffering?(): void;
2427
+ resumeBuffering?(): void;
2404
2428
  }
2405
2429
 
2406
2430
  export declare const enum NetworkErrorAction {
@@ -2640,16 +2664,14 @@ declare class StreamController extends BaseStreamController implements NetworkCo
2640
2664
  private altAudio;
2641
2665
  private audioOnly;
2642
2666
  private fragPlaying;
2643
- private onvplaying;
2644
- private onvseeked;
2645
2667
  private fragLastKbps;
2646
2668
  private couldBacktrack;
2647
2669
  private backtrackFragment;
2648
2670
  private audioCodecSwitch;
2649
2671
  private videoBuffer;
2650
2672
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
2651
- private _registerListeners;
2652
- protected _unregisterListeners(): void;
2673
+ protected registerListeners(): void;
2674
+ protected unregisterListeners(): void;
2653
2675
  protected onHandlerDestroying(): void;
2654
2676
  startLoad(startPosition: number): void;
2655
2677
  stopLoad(): void;
@@ -2673,7 +2695,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
2673
2695
  protected onMediaDetaching(): void;
2674
2696
  private onMediaPlaying;
2675
2697
  private onMediaSeeked;
2676
- private onManifestLoading;
2698
+ protected onManifestLoading(): void;
2677
2699
  private onManifestParsed;
2678
2700
  private onLevelLoading;
2679
2701
  private onLevelLoaded;
@@ -2682,7 +2704,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
2682
2704
  private onAudioTrackSwitched;
2683
2705
  private onBufferCreated;
2684
2706
  private onFragBuffered;
2685
- private onError;
2707
+ protected onError(event: Events.ERROR, data: ErrorData): void;
2686
2708
  private checkBuffer;
2687
2709
  private onFragLoadEmergencyAborted;
2688
2710
  private onBufferFlushed;
@@ -2697,6 +2719,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
2697
2719
  private _handleTransmuxComplete;
2698
2720
  private _bufferInitSegment;
2699
2721
  getMainFwdBufferInfo(): BufferInfo | null;
2722
+ get maxBufferLength(): number;
2700
2723
  private backtrack;
2701
2724
  private checkFragmentChanged;
2702
2725
  get nextLevel(): number;
@@ -2739,11 +2762,6 @@ declare class StyledUnicodeChar {
2739
2762
  isEmpty(): boolean;
2740
2763
  }
2741
2764
 
2742
- declare interface SubtitleFragProcessed {
2743
- success: boolean;
2744
- frag: Fragment;
2745
- }
2746
-
2747
2765
  export declare interface SubtitleFragProcessedData {
2748
2766
  success: boolean;
2749
2767
  frag: Fragment;
@@ -2768,22 +2786,21 @@ export declare class SubtitleStreamController extends BaseStreamController imple
2768
2786
  private mainDetails;
2769
2787
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
2770
2788
  protected onHandlerDestroying(): void;
2771
- private _registerListeners;
2772
- private _unregisterListeners;
2789
+ protected registerListeners(): void;
2790
+ protected unregisterListeners(): void;
2773
2791
  startLoad(startPosition: number): void;
2774
- onManifestLoading(): void;
2775
- onMediaDetaching(): void;
2776
- onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;
2777
- onSubtitleFragProcessed(event: Events.SUBTITLE_FRAG_PROCESSED, data: SubtitleFragProcessed): void;
2778
- onBufferFlushing(event: Events.BUFFER_FLUSHING, data: BufferFlushingData): void;
2779
- onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;
2780
- onError(event: Events.ERROR, data: ErrorData): void;
2781
- onSubtitleTracksUpdated(event: Events.SUBTITLE_TRACKS_UPDATED, { subtitleTracks }: SubtitleTracksUpdatedData): void;
2782
- onSubtitleTrackSwitch(event: Events.SUBTITLE_TRACK_SWITCH, data: TrackSwitchedData): void;
2783
- onSubtitleTrackLoaded(event: Events.SUBTITLE_TRACK_LOADED, data: TrackLoadedData): void;
2792
+ protected onManifestLoading(): void;
2793
+ protected onMediaDetaching(): void;
2794
+ private onLevelLoaded;
2795
+ private onSubtitleFragProcessed;
2796
+ private onBufferFlushing;
2797
+ private onFragBuffered;
2798
+ protected onError(event: Events.ERROR, data: ErrorData): void;
2799
+ private onSubtitleTracksUpdated;
2800
+ private onSubtitleTrackSwitch;
2801
+ private onSubtitleTrackLoaded;
2784
2802
  _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;
2785
2803
  doTick(): void;
2786
- protected getMaxBufferLength(mainBufferLength?: number): number;
2787
2804
  protected loadFragment(frag: Fragment, level: Level, targetBufferTime: number): void;
2788
2805
  get mediaBufferTimeRanges(): Bufferable;
2789
2806
  }
@@ -2797,10 +2814,10 @@ export declare class SubtitleTrackController extends BasePlaylistController {
2797
2814
  private currentTrack;
2798
2815
  private selectDefaultTrack;
2799
2816
  private queuedDefaultTrack;
2800
- private asyncPollTrackChange;
2801
2817
  private useTextTrackPolling;
2802
2818
  private subtitlePollingInterval;
2803
2819
  private _subtitleDisplay;
2820
+ private asyncPollTrackChange;
2804
2821
  constructor(hls: Hls);
2805
2822
  destroy(): void;
2806
2823
  get subtitleDisplay(): boolean;
@@ -2885,12 +2902,12 @@ export declare interface SubtitleTrackSwitchData {
2885
2902
  * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further
2886
2903
  * task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
2887
2904
  */
2888
- declare class TaskLoop {
2905
+ declare class TaskLoop extends Logger {
2889
2906
  private readonly _boundTick;
2890
2907
  private _tickTimer;
2891
2908
  private _tickInterval;
2892
2909
  private _tickCallCount;
2893
- constructor();
2910
+ constructor(label: string, logger: ILogger);
2894
2911
  destroy(): void;
2895
2912
  protected onHandlerDestroying(): void;
2896
2913
  protected onHandlerDestroyed(): void;
@@ -3021,10 +3038,6 @@ export declare interface TrackSet {
3021
3038
  audiovideo?: Track;
3022
3039
  }
3023
3040
 
3024
- declare interface TrackSwitchedData {
3025
- id: number;
3026
- }
3027
-
3028
3041
  declare class TransmuxerInterface {
3029
3042
  error: Error | null;
3030
3043
  private hls;