hls.js 1.5.2-0.canary.9934 → 1.5.3

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 (60) hide show
  1. package/dist/hls-demo.js +0 -5
  2. package/dist/hls-demo.js.map +1 -1
  3. package/dist/hls.js +757 -883
  4. package/dist/hls.js.d.ts +47 -56
  5. package/dist/hls.js.map +1 -1
  6. package/dist/hls.light.js +477 -600
  7. package/dist/hls.light.js.map +1 -1
  8. package/dist/hls.light.min.js +1 -1
  9. package/dist/hls.light.min.js.map +1 -1
  10. package/dist/hls.light.mjs +335 -446
  11. package/dist/hls.light.mjs.map +1 -1
  12. package/dist/hls.min.js +1 -1
  13. package/dist/hls.min.js.map +1 -1
  14. package/dist/hls.mjs +572 -681
  15. package/dist/hls.mjs.map +1 -1
  16. package/dist/hls.worker.js +1 -1
  17. package/dist/hls.worker.js.map +1 -1
  18. package/package.json +11 -11
  19. package/src/config.ts +2 -3
  20. package/src/controller/abr-controller.ts +22 -22
  21. package/src/controller/audio-stream-controller.ts +14 -11
  22. package/src/controller/audio-track-controller.ts +1 -1
  23. package/src/controller/base-playlist-controller.ts +7 -7
  24. package/src/controller/base-stream-controller.ts +29 -47
  25. package/src/controller/buffer-controller.ts +11 -10
  26. package/src/controller/cap-level-controller.ts +2 -1
  27. package/src/controller/cmcd-controller.ts +3 -25
  28. package/src/controller/content-steering-controller.ts +6 -8
  29. package/src/controller/eme-controller.ts +22 -9
  30. package/src/controller/error-controller.ts +8 -6
  31. package/src/controller/fps-controller.ts +3 -2
  32. package/src/controller/gap-controller.ts +16 -43
  33. package/src/controller/latency-controller.ts +11 -9
  34. package/src/controller/level-controller.ts +17 -5
  35. package/src/controller/stream-controller.ts +31 -24
  36. package/src/controller/subtitle-stream-controller.ts +14 -13
  37. package/src/controller/subtitle-track-controller.ts +3 -5
  38. package/src/controller/timeline-controller.ts +30 -23
  39. package/src/crypt/aes-crypto.ts +2 -21
  40. package/src/crypt/decrypter.ts +18 -32
  41. package/src/crypt/fast-aes-key.ts +5 -24
  42. package/src/demux/audio/adts.ts +4 -9
  43. package/src/demux/sample-aes.ts +0 -2
  44. package/src/demux/transmuxer-interface.ts +12 -4
  45. package/src/demux/transmuxer-worker.ts +4 -4
  46. package/src/demux/transmuxer.ts +3 -16
  47. package/src/demux/tsdemuxer.ts +17 -12
  48. package/src/events.ts +0 -7
  49. package/src/hls.ts +20 -33
  50. package/src/loader/fragment-loader.ts +2 -9
  51. package/src/loader/key-loader.ts +0 -2
  52. package/src/loader/level-key.ts +9 -10
  53. package/src/remux/mp4-remuxer.ts +4 -20
  54. package/src/task-loop.ts +2 -5
  55. package/src/types/demuxer.ts +0 -1
  56. package/src/types/events.ts +0 -4
  57. package/src/utils/codecs.ts +4 -33
  58. package/src/utils/logger.ts +24 -53
  59. package/src/crypt/decrypter-aes-mode.ts +0 -4
  60. package/src/utils/encryption-methods-util.ts +0 -21
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 extends Logger implements AbrComponentAPI {
9
+ export declare class AbrController implements AbrComponentAPI {
10
10
  protected hls: Hls;
11
11
  private lastLevelLoadSec;
12
12
  private lastLoadedFragLevel;
@@ -111,8 +111,8 @@ export declare class AudioStreamController extends BaseStreamController implemen
111
111
  private cachedTrackLoadedData;
112
112
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
113
113
  protected onHandlerDestroying(): void;
114
- protected registerListeners(): void;
115
- protected unregisterListeners(): void;
114
+ private _registerListeners;
115
+ private _unregisterListeners;
116
116
  onInitPtsFound(event: Events.INIT_PTS_FOUND, { frag, id, initPTS, timescale }: InitPTSFoundData): void;
117
117
  startLoad(startPosition: number): void;
118
118
  doTick(): void;
@@ -132,7 +132,7 @@ export declare class AudioStreamController extends BaseStreamController implemen
132
132
  onBufferReset(): void;
133
133
  onBufferCreated(event: Events.BUFFER_CREATED, data: BufferCreatedData): void;
134
134
  onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;
135
- protected onError(event: Events.ERROR, data: ErrorData): void;
135
+ private onError;
136
136
  private onBufferFlushing;
137
137
  private onBufferFlushed;
138
138
  private _handleTransmuxComplete;
@@ -187,11 +187,13 @@ export declare interface BackBufferData {
187
187
  bufferEnd: number;
188
188
  }
189
189
 
190
- export declare class BasePlaylistController extends Logger implements NetworkComponentAPI {
190
+ export declare class BasePlaylistController implements NetworkComponentAPI {
191
191
  protected hls: Hls;
192
192
  protected timer: number;
193
193
  protected requestScheduled: number;
194
194
  protected canLoad: boolean;
195
+ protected log: (msg: any) => void;
196
+ protected warn: (msg: any) => void;
195
197
  constructor(hls: Hls, logPrefix: string);
196
198
  destroy(): void;
197
199
  protected clearTimer(): void;
@@ -246,9 +248,12 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
246
248
  protected startFragRequested: boolean;
247
249
  protected decrypter: Decrypter;
248
250
  protected initPTS: RationalTimestamp[];
251
+ protected onvseeking: EventListener | null;
252
+ protected onvended: EventListener | null;
253
+ private readonly logPrefix;
254
+ protected log: (msg: any) => void;
255
+ protected warn: (msg: any) => void;
249
256
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader, logPrefix: string, playlistType: PlaylistLevelType);
250
- protected registerListeners(): void;
251
- protected unregisterListeners(): void;
252
257
  protected doTick(): void;
253
258
  protected onTickEnd(): void;
254
259
  startLoad(startPosition: number): void;
@@ -257,10 +262,8 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
257
262
  protected getLevelDetails(): LevelDetails | undefined;
258
263
  protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
259
264
  protected onMediaDetaching(): void;
260
- protected onManifestLoading(): void;
261
- protected onError(event: Events.ERROR, data: ErrorData): void;
262
- protected onMediaSeeking: () => void;
263
- protected onMediaEnded: () => void;
265
+ protected onMediaSeeking(): void;
266
+ protected onMediaEnded(): void;
264
267
  protected onManifestLoaded(event: Events.MANIFEST_LOADED, data: ManifestLoadedData): void;
265
268
  protected onHandlerDestroying(): void;
266
269
  protected onHandlerDestroyed(): void;
@@ -349,7 +352,7 @@ export declare interface BufferCodecsData {
349
352
  audio?: Track;
350
353
  }
351
354
 
352
- export declare class BufferController extends Logger implements ComponentAPI {
355
+ export declare class BufferController implements ComponentAPI {
353
356
  private details;
354
357
  private _objectUrl;
355
358
  private operationQueue;
@@ -369,6 +372,9 @@ export declare class BufferController extends Logger implements ComponentAPI {
369
372
  tracks: TrackSet;
370
373
  pendingTracks: TrackSet;
371
374
  sourceBuffer: SourceBuffers;
375
+ protected log: (msg: any) => void;
376
+ protected warn: (msg: any, obj?: any) => void;
377
+ protected error: (msg: any, obj?: any) => void;
372
378
  constructor(hls: Hls);
373
379
  hasSourceTypes(): boolean;
374
380
  destroy(): void;
@@ -595,7 +601,6 @@ export declare class CMCDController implements ComponentAPI {
595
601
  * Apply CMCD data to a segment request
596
602
  */
597
603
  private applyFragmentData;
598
- private getNextFrag;
599
604
  /**
600
605
  * The CMCD object type.
601
606
  */
@@ -629,8 +634,9 @@ export declare interface ComponentAPI {
629
634
  destroy(): void;
630
635
  }
631
636
 
632
- export declare class ContentSteeringController extends Logger implements NetworkComponentAPI {
637
+ export declare class ContentSteeringController implements NetworkComponentAPI {
633
638
  private readonly hls;
639
+ private log;
634
640
  private loader;
635
641
  private uri;
636
642
  private pathwayId;
@@ -720,7 +726,6 @@ declare class Decrypter {
720
726
  private currentIV;
721
727
  private currentResult;
722
728
  private useSoftware;
723
- private enableSoftwareAES;
724
729
  constructor(config: HlsConfig, { removePKCS7Padding }?: {
725
730
  removePKCS7Padding?: boolean | undefined;
726
731
  });
@@ -728,19 +733,14 @@ declare class Decrypter {
728
733
  isSync(): boolean;
729
734
  flush(): Uint8Array | null;
730
735
  reset(): void;
731
- decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): Promise<ArrayBuffer>;
732
- softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): ArrayBuffer | null;
733
- webCryptoDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): Promise<ArrayBuffer>;
736
+ decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer): Promise<ArrayBuffer>;
737
+ softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): ArrayBuffer | null;
738
+ webCryptoDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): Promise<ArrayBuffer>;
734
739
  private onWebCryptoError;
735
740
  private getValidChunk;
736
741
  private logOnce;
737
742
  }
738
743
 
739
- declare const enum DecrypterAesMode {
740
- cbc = 0,
741
- ctr = 1
742
- }
743
-
744
744
  declare type DRMSystemConfiguration = {
745
745
  licenseUrl: string;
746
746
  serverCertificateUrl?: string;
@@ -786,7 +786,7 @@ export declare const enum ElementaryStreamTypes {
786
786
  * @class
787
787
  * @constructor
788
788
  */
789
- export declare class EMEController extends Logger implements ComponentAPI {
789
+ export declare class EMEController implements ComponentAPI {
790
790
  static CDMCleanupPromise: Promise<void> | void;
791
791
  private readonly hls;
792
792
  private readonly config;
@@ -797,6 +797,12 @@ export declare class EMEController extends Logger implements ComponentAPI {
797
797
  private mediaKeySessions;
798
798
  private keyIdToKeySessionPromise;
799
799
  private setMediaKeysQueue;
800
+ private onMediaEncrypted;
801
+ private onWaitingForKey;
802
+ private debug;
803
+ private log;
804
+ private warn;
805
+ private error;
800
806
  constructor(hls: Hls);
801
807
  destroy(): void;
802
808
  private registerListeners;
@@ -817,8 +823,8 @@ export declare class EMEController extends Logger implements ComponentAPI {
817
823
  private handleError;
818
824
  private getKeySystemForKeyPromise;
819
825
  private getKeySystemSelectionPromise;
820
- private onMediaEncrypted;
821
- private onWaitingForKey;
826
+ private _onMediaEncrypted;
827
+ private _onWaitingForKey;
822
828
  private attemptSetMediaKeys;
823
829
  private generateRequestWithPreferredKeySession;
824
830
  private onKeyStatusChange;
@@ -852,10 +858,13 @@ export declare const enum ErrorActionFlags {
852
858
  SwitchToSDR = 4
853
859
  }
854
860
 
855
- export declare class ErrorController extends Logger implements NetworkComponentAPI {
861
+ export declare class ErrorController implements NetworkComponentAPI {
856
862
  private readonly hls;
857
863
  private playlistError;
858
864
  private penalizedRenditions;
865
+ private log;
866
+ private warn;
867
+ private error;
859
868
  constructor(hls: Hls);
860
869
  private registerListeners;
861
870
  private unregisterListeners;
@@ -965,7 +974,6 @@ export declare enum Events {
965
974
  MEDIA_ATTACHED = "hlsMediaAttached",
966
975
  MEDIA_DETACHING = "hlsMediaDetaching",
967
976
  MEDIA_DETACHED = "hlsMediaDetached",
968
- MEDIA_ENDED = "hlsMediaEnded",
969
977
  BUFFER_RESET = "hlsBufferReset",
970
978
  BUFFER_CODECS = "hlsBufferCodecs",
971
979
  BUFFER_CREATED = "hlsBufferCreated",
@@ -1312,10 +1320,6 @@ declare class Hls implements HlsEventEmitter {
1312
1320
  * The configuration object provided on player instantiation.
1313
1321
  */
1314
1322
  readonly userConfig: Partial<HlsConfig>;
1315
- /**
1316
- * The logger functions used by this player instance, configured on player instantiation.
1317
- */
1318
- readonly logger: ILogger;
1319
1323
  private coreComponents;
1320
1324
  private networkControllers;
1321
1325
  private started;
@@ -1701,7 +1705,6 @@ export declare interface HlsListeners {
1701
1705
  [Events.MEDIA_ATTACHED]: (event: Events.MEDIA_ATTACHED, data: MediaAttachedData) => void;
1702
1706
  [Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING) => void;
1703
1707
  [Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED) => void;
1704
- [Events.MEDIA_ENDED]: (event: Events.MEDIA_ENDED, data: MediaEndedData) => void;
1705
1708
  [Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;
1706
1709
  [Events.BUFFER_CODECS]: (event: Events.BUFFER_CODECS, data: BufferCodecsData) => void;
1707
1710
  [Events.BUFFER_CREATED]: (event: Events.BUFFER_CREATED, data: BufferCreatedData) => void;
@@ -2253,16 +2256,6 @@ export declare class LoadStats implements LoaderStats {
2253
2256
  buffering: HlsProgressivePerformanceTiming;
2254
2257
  }
2255
2258
 
2256
- export declare class Logger implements ILogger {
2257
- trace: ILogFunction;
2258
- debug: ILogFunction;
2259
- log: ILogFunction;
2260
- warn: ILogFunction;
2261
- info: ILogFunction;
2262
- error: ILogFunction;
2263
- constructor(label: string, logger: ILogger);
2264
- }
2265
-
2266
2259
  export declare type MainPlaylistType = AudioPlaylistType | 'VIDEO';
2267
2260
 
2268
2261
  export declare interface ManifestLoadedData {
@@ -2338,10 +2331,6 @@ export declare type MediaDecodingInfo = {
2338
2331
  error?: Error;
2339
2332
  };
2340
2333
 
2341
- export declare interface MediaEndedData {
2342
- stalled: boolean;
2343
- }
2344
-
2345
2334
  export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;
2346
2335
 
2347
2336
  export declare interface MediaKeySessionContext {
@@ -2650,14 +2639,16 @@ declare class StreamController extends BaseStreamController implements NetworkCo
2650
2639
  private altAudio;
2651
2640
  private audioOnly;
2652
2641
  private fragPlaying;
2642
+ private onvplaying;
2643
+ private onvseeked;
2653
2644
  private fragLastKbps;
2654
2645
  private couldBacktrack;
2655
2646
  private backtrackFragment;
2656
2647
  private audioCodecSwitch;
2657
2648
  private videoBuffer;
2658
2649
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
2659
- protected registerListeners(): void;
2660
- protected unregisterListeners(): void;
2650
+ private _registerListeners;
2651
+ protected _unregisterListeners(): void;
2661
2652
  protected onHandlerDestroying(): void;
2662
2653
  startLoad(startPosition: number): void;
2663
2654
  stopLoad(): void;
@@ -2681,7 +2672,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
2681
2672
  protected onMediaDetaching(): void;
2682
2673
  private onMediaPlaying;
2683
2674
  private onMediaSeeked;
2684
- protected onManifestLoading(): void;
2675
+ private onManifestLoading;
2685
2676
  private onManifestParsed;
2686
2677
  private onLevelLoading;
2687
2678
  private onLevelLoaded;
@@ -2690,7 +2681,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
2690
2681
  private onAudioTrackSwitched;
2691
2682
  private onBufferCreated;
2692
2683
  private onFragBuffered;
2693
- protected onError(event: Events.ERROR, data: ErrorData): void;
2684
+ private onError;
2694
2685
  private checkBuffer;
2695
2686
  private onFragLoadEmergencyAborted;
2696
2687
  private onBufferFlushed;
@@ -2776,8 +2767,8 @@ export declare class SubtitleStreamController extends BaseStreamController imple
2776
2767
  private mainDetails;
2777
2768
  constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
2778
2769
  protected onHandlerDestroying(): void;
2779
- protected registerListeners(): void;
2780
- protected unregisterListeners(): void;
2770
+ private _registerListeners;
2771
+ private _unregisterListeners;
2781
2772
  startLoad(startPosition: number): void;
2782
2773
  onManifestLoading(): void;
2783
2774
  onMediaDetaching(): void;
@@ -2805,10 +2796,10 @@ export declare class SubtitleTrackController extends BasePlaylistController {
2805
2796
  private currentTrack;
2806
2797
  private selectDefaultTrack;
2807
2798
  private queuedDefaultTrack;
2799
+ private asyncPollTrackChange;
2808
2800
  private useTextTrackPolling;
2809
2801
  private subtitlePollingInterval;
2810
2802
  private _subtitleDisplay;
2811
- private asyncPollTrackChange;
2812
2803
  constructor(hls: Hls);
2813
2804
  destroy(): void;
2814
2805
  get subtitleDisplay(): boolean;
@@ -2893,12 +2884,12 @@ export declare interface SubtitleTrackSwitchData {
2893
2884
  * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further
2894
2885
  * task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
2895
2886
  */
2896
- declare class TaskLoop extends Logger {
2887
+ declare class TaskLoop {
2897
2888
  private readonly _boundTick;
2898
2889
  private _tickTimer;
2899
2890
  private _tickInterval;
2900
2891
  private _tickCallCount;
2901
- constructor(label: string, logger: ILogger);
2892
+ constructor();
2902
2893
  destroy(): void;
2903
2894
  protected onHandlerDestroying(): void;
2904
2895
  protected onHandlerDestroyed(): void;