hls.js 1.5.5-0.canary.9995 → 1.5.5
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/README.md +0 -1
- package/dist/hls-demo.js +0 -10
- package/dist/hls-demo.js.map +1 -1
- package/dist/hls.js +1134 -2043
- package/dist/hls.js.d.ts +50 -65
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +852 -1141
- 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 +686 -974
- 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 +847 -1741
- 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 +20 -20
- package/src/config.ts +2 -3
- package/src/controller/abr-controller.ts +20 -21
- package/src/controller/audio-stream-controller.ts +16 -15
- package/src/controller/audio-track-controller.ts +1 -1
- package/src/controller/base-playlist-controller.ts +8 -20
- package/src/controller/base-stream-controller.ts +33 -149
- package/src/controller/buffer-controller.ts +11 -11
- package/src/controller/cap-level-controller.ts +2 -1
- package/src/controller/cmcd-controller.ts +6 -27
- package/src/controller/content-steering-controller.ts +6 -8
- package/src/controller/eme-controller.ts +22 -9
- package/src/controller/error-controller.ts +8 -6
- package/src/controller/fps-controller.ts +3 -2
- package/src/controller/gap-controller.ts +16 -43
- package/src/controller/latency-controller.ts +11 -9
- package/src/controller/level-controller.ts +18 -12
- package/src/controller/stream-controller.ts +32 -25
- package/src/controller/subtitle-stream-controller.ts +14 -13
- package/src/controller/subtitle-track-controller.ts +3 -5
- package/src/controller/timeline-controller.ts +30 -23
- package/src/crypt/aes-crypto.ts +2 -21
- package/src/crypt/decrypter.ts +18 -32
- package/src/crypt/fast-aes-key.ts +5 -24
- package/src/demux/audio/adts.ts +4 -9
- package/src/demux/sample-aes.ts +0 -2
- package/src/demux/transmuxer-interface.ts +12 -4
- package/src/demux/transmuxer-worker.ts +4 -4
- package/src/demux/transmuxer.ts +3 -16
- package/src/demux/tsdemuxer.ts +37 -71
- package/src/demux/video/avc-video-parser.ts +119 -208
- package/src/demux/video/base-video-parser.ts +2 -134
- package/src/demux/video/exp-golomb.ts +208 -0
- package/src/events.ts +0 -7
- package/src/hls.ts +34 -42
- package/src/loader/fragment-loader.ts +2 -9
- package/src/loader/key-loader.ts +0 -2
- package/src/loader/level-key.ts +9 -10
- package/src/loader/playlist-loader.ts +5 -4
- package/src/remux/mp4-generator.ts +1 -196
- package/src/remux/mp4-remuxer.ts +7 -23
- package/src/task-loop.ts +2 -5
- package/src/types/component-api.ts +0 -2
- package/src/types/demuxer.ts +0 -3
- package/src/types/events.ts +0 -4
- package/src/utils/codecs.ts +4 -33
- package/src/utils/logger.ts +24 -54
- package/src/crypt/decrypter-aes-mode.ts +0 -4
- package/src/demux/video/hevc-video-parser.ts +0 -746
- 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
|
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
|
-
|
115
|
-
|
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
|
-
|
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
|
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,25 +248,22 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
|
|
246
248
|
protected startFragRequested: boolean;
|
247
249
|
protected decrypter: Decrypter;
|
248
250
|
protected initPTS: RationalTimestamp[];
|
249
|
-
protected
|
250
|
-
|
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;
|
251
256
|
constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader, logPrefix: string, playlistType: PlaylistLevelType);
|
252
|
-
protected registerListeners(): void;
|
253
|
-
protected unregisterListeners(): void;
|
254
257
|
protected doTick(): void;
|
255
258
|
protected onTickEnd(): void;
|
256
259
|
startLoad(startPosition: number): void;
|
257
260
|
stopLoad(): void;
|
258
|
-
pauseBuffering(): void;
|
259
|
-
resumeBuffering(): void;
|
260
261
|
protected _streamEnded(bufferInfo: BufferInfo, levelDetails: LevelDetails): boolean;
|
261
262
|
protected getLevelDetails(): LevelDetails | undefined;
|
262
263
|
protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
|
263
264
|
protected onMediaDetaching(): void;
|
264
|
-
protected
|
265
|
-
protected
|
266
|
-
protected onMediaSeeking: () => void;
|
267
|
-
protected onMediaEnded: () => void;
|
265
|
+
protected onMediaSeeking(): void;
|
266
|
+
protected onMediaEnded(): void;
|
268
267
|
protected onManifestLoaded(event: Events.MANIFEST_LOADED, data: ManifestLoadedData): void;
|
269
268
|
protected onHandlerDestroying(): void;
|
270
269
|
protected onHandlerDestroyed(): void;
|
@@ -284,7 +283,6 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
|
|
284
283
|
private doFragPartsLoad;
|
285
284
|
private handleFragLoadError;
|
286
285
|
protected _handleTransmuxerFlush(chunkMeta: ChunkMetadata): void;
|
287
|
-
private shouldLoadParts;
|
288
286
|
protected getCurrentContext(chunkMeta: ChunkMetadata): {
|
289
287
|
frag: Fragment;
|
290
288
|
part: Part | null;
|
@@ -354,7 +352,7 @@ export declare interface BufferCodecsData {
|
|
354
352
|
audio?: Track;
|
355
353
|
}
|
356
354
|
|
357
|
-
export declare class BufferController
|
355
|
+
export declare class BufferController implements ComponentAPI {
|
358
356
|
private details;
|
359
357
|
private _objectUrl;
|
360
358
|
private operationQueue;
|
@@ -374,6 +372,9 @@ export declare class BufferController extends Logger implements ComponentAPI {
|
|
374
372
|
tracks: TrackSet;
|
375
373
|
pendingTracks: TrackSet;
|
376
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;
|
377
378
|
constructor(hls: Hls);
|
378
379
|
hasSourceTypes(): boolean;
|
379
380
|
destroy(): void;
|
@@ -600,7 +601,6 @@ export declare class CMCDController implements ComponentAPI {
|
|
600
601
|
* Apply CMCD data to a segment request
|
601
602
|
*/
|
602
603
|
private applyFragmentData;
|
603
|
-
private getNextFrag;
|
604
604
|
/**
|
605
605
|
* The CMCD object type.
|
606
606
|
*/
|
@@ -634,8 +634,9 @@ export declare interface ComponentAPI {
|
|
634
634
|
destroy(): void;
|
635
635
|
}
|
636
636
|
|
637
|
-
export declare class ContentSteeringController
|
637
|
+
export declare class ContentSteeringController implements NetworkComponentAPI {
|
638
638
|
private readonly hls;
|
639
|
+
private log;
|
639
640
|
private loader;
|
640
641
|
private uri;
|
641
642
|
private pathwayId;
|
@@ -725,7 +726,6 @@ declare class Decrypter {
|
|
725
726
|
private currentIV;
|
726
727
|
private currentResult;
|
727
728
|
private useSoftware;
|
728
|
-
private enableSoftwareAES;
|
729
729
|
constructor(config: HlsConfig, { removePKCS7Padding }?: {
|
730
730
|
removePKCS7Padding?: boolean | undefined;
|
731
731
|
});
|
@@ -733,19 +733,14 @@ declare class Decrypter {
|
|
733
733
|
isSync(): boolean;
|
734
734
|
flush(): Uint8Array | null;
|
735
735
|
reset(): void;
|
736
|
-
decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer
|
737
|
-
softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer
|
738
|
-
webCryptoDecrypt(data: Uint8Array, key: ArrayBuffer, iv: 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>;
|
739
739
|
private onWebCryptoError;
|
740
740
|
private getValidChunk;
|
741
741
|
private logOnce;
|
742
742
|
}
|
743
743
|
|
744
|
-
declare const enum DecrypterAesMode {
|
745
|
-
cbc = 0,
|
746
|
-
ctr = 1
|
747
|
-
}
|
748
|
-
|
749
744
|
declare type DRMSystemConfiguration = {
|
750
745
|
licenseUrl: string;
|
751
746
|
serverCertificateUrl?: string;
|
@@ -791,7 +786,7 @@ export declare const enum ElementaryStreamTypes {
|
|
791
786
|
* @class
|
792
787
|
* @constructor
|
793
788
|
*/
|
794
|
-
export declare class EMEController
|
789
|
+
export declare class EMEController implements ComponentAPI {
|
795
790
|
static CDMCleanupPromise: Promise<void> | void;
|
796
791
|
private readonly hls;
|
797
792
|
private readonly config;
|
@@ -802,6 +797,12 @@ export declare class EMEController extends Logger implements ComponentAPI {
|
|
802
797
|
private mediaKeySessions;
|
803
798
|
private keyIdToKeySessionPromise;
|
804
799
|
private setMediaKeysQueue;
|
800
|
+
private onMediaEncrypted;
|
801
|
+
private onWaitingForKey;
|
802
|
+
private debug;
|
803
|
+
private log;
|
804
|
+
private warn;
|
805
|
+
private error;
|
805
806
|
constructor(hls: Hls);
|
806
807
|
destroy(): void;
|
807
808
|
private registerListeners;
|
@@ -822,8 +823,8 @@ export declare class EMEController extends Logger implements ComponentAPI {
|
|
822
823
|
private handleError;
|
823
824
|
private getKeySystemForKeyPromise;
|
824
825
|
private getKeySystemSelectionPromise;
|
825
|
-
private
|
826
|
-
private
|
826
|
+
private _onMediaEncrypted;
|
827
|
+
private _onWaitingForKey;
|
827
828
|
private attemptSetMediaKeys;
|
828
829
|
private generateRequestWithPreferredKeySession;
|
829
830
|
private onKeyStatusChange;
|
@@ -857,10 +858,13 @@ export declare const enum ErrorActionFlags {
|
|
857
858
|
SwitchToSDR = 4
|
858
859
|
}
|
859
860
|
|
860
|
-
export declare class ErrorController
|
861
|
+
export declare class ErrorController implements NetworkComponentAPI {
|
861
862
|
private readonly hls;
|
862
863
|
private playlistError;
|
863
864
|
private penalizedRenditions;
|
865
|
+
private log;
|
866
|
+
private warn;
|
867
|
+
private error;
|
864
868
|
constructor(hls: Hls);
|
865
869
|
private registerListeners;
|
866
870
|
private unregisterListeners;
|
@@ -970,7 +974,6 @@ export declare enum Events {
|
|
970
974
|
MEDIA_ATTACHED = "hlsMediaAttached",
|
971
975
|
MEDIA_DETACHING = "hlsMediaDetaching",
|
972
976
|
MEDIA_DETACHED = "hlsMediaDetached",
|
973
|
-
MEDIA_ENDED = "hlsMediaEnded",
|
974
977
|
BUFFER_RESET = "hlsBufferReset",
|
975
978
|
BUFFER_CODECS = "hlsBufferCodecs",
|
976
979
|
BUFFER_CREATED = "hlsBufferCreated",
|
@@ -1317,12 +1320,9 @@ declare class Hls implements HlsEventEmitter {
|
|
1317
1320
|
* The configuration object provided on player instantiation.
|
1318
1321
|
*/
|
1319
1322
|
readonly userConfig: Partial<HlsConfig>;
|
1320
|
-
/**
|
1321
|
-
* The logger functions used by this player instance, configured on player instantiation.
|
1322
|
-
*/
|
1323
|
-
readonly logger: ILogger;
|
1324
1323
|
private coreComponents;
|
1325
1324
|
private networkControllers;
|
1325
|
+
private started;
|
1326
1326
|
private _emitter;
|
1327
1327
|
private _autoLevelCapping;
|
1328
1328
|
private _maxHdcpLevel;
|
@@ -1409,11 +1409,11 @@ declare class Hls implements HlsEventEmitter {
|
|
1409
1409
|
*/
|
1410
1410
|
stopLoad(): void;
|
1411
1411
|
/**
|
1412
|
-
* Resumes stream controller segment loading
|
1412
|
+
* Resumes stream controller segment loading if previously started.
|
1413
1413
|
*/
|
1414
1414
|
resumeBuffering(): void;
|
1415
1415
|
/**
|
1416
|
-
*
|
1416
|
+
* Stops stream controller segment loading without changing 'started' state like stopLoad().
|
1417
1417
|
* This allows for media buffering to be paused without interupting playlist loading.
|
1418
1418
|
*/
|
1419
1419
|
pauseBuffering(): void;
|
@@ -1705,7 +1705,6 @@ export declare interface HlsListeners {
|
|
1705
1705
|
[Events.MEDIA_ATTACHED]: (event: Events.MEDIA_ATTACHED, data: MediaAttachedData) => void;
|
1706
1706
|
[Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING) => void;
|
1707
1707
|
[Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED) => void;
|
1708
|
-
[Events.MEDIA_ENDED]: (event: Events.MEDIA_ENDED, data: MediaEndedData) => void;
|
1709
1708
|
[Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;
|
1710
1709
|
[Events.BUFFER_CODECS]: (event: Events.BUFFER_CODECS, data: BufferCodecsData) => void;
|
1711
1710
|
[Events.BUFFER_CREATED]: (event: Events.BUFFER_CREATED, data: BufferCreatedData) => void;
|
@@ -2257,16 +2256,6 @@ export declare class LoadStats implements LoaderStats {
|
|
2257
2256
|
buffering: HlsProgressivePerformanceTiming;
|
2258
2257
|
}
|
2259
2258
|
|
2260
|
-
export declare class Logger implements ILogger {
|
2261
|
-
trace: ILogFunction;
|
2262
|
-
debug: ILogFunction;
|
2263
|
-
log: ILogFunction;
|
2264
|
-
warn: ILogFunction;
|
2265
|
-
info: ILogFunction;
|
2266
|
-
error: ILogFunction;
|
2267
|
-
constructor(label: string, logger: ILogger);
|
2268
|
-
}
|
2269
|
-
|
2270
2259
|
export declare type MainPlaylistType = AudioPlaylistType | 'VIDEO';
|
2271
2260
|
|
2272
2261
|
export declare interface ManifestLoadedData {
|
@@ -2342,10 +2331,6 @@ export declare type MediaDecodingInfo = {
|
|
2342
2331
|
error?: Error;
|
2343
2332
|
};
|
2344
2333
|
|
2345
|
-
export declare interface MediaEndedData {
|
2346
|
-
stalled: boolean;
|
2347
|
-
}
|
2348
|
-
|
2349
2334
|
export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;
|
2350
2335
|
|
2351
2336
|
export declare interface MediaKeySessionContext {
|
@@ -2415,8 +2400,6 @@ export declare type MP4RemuxerConfig = {
|
|
2415
2400
|
export declare interface NetworkComponentAPI extends ComponentAPI {
|
2416
2401
|
startLoad(startPosition: number): void;
|
2417
2402
|
stopLoad(): void;
|
2418
|
-
pauseBuffering?(): void;
|
2419
|
-
resumeBuffering?(): void;
|
2420
2403
|
}
|
2421
2404
|
|
2422
2405
|
export declare const enum NetworkErrorAction {
|
@@ -2656,14 +2639,16 @@ declare class StreamController extends BaseStreamController implements NetworkCo
|
|
2656
2639
|
private altAudio;
|
2657
2640
|
private audioOnly;
|
2658
2641
|
private fragPlaying;
|
2642
|
+
private onvplaying;
|
2643
|
+
private onvseeked;
|
2659
2644
|
private fragLastKbps;
|
2660
2645
|
private couldBacktrack;
|
2661
2646
|
private backtrackFragment;
|
2662
2647
|
private audioCodecSwitch;
|
2663
2648
|
private videoBuffer;
|
2664
2649
|
constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
|
2665
|
-
|
2666
|
-
protected
|
2650
|
+
private _registerListeners;
|
2651
|
+
protected _unregisterListeners(): void;
|
2667
2652
|
protected onHandlerDestroying(): void;
|
2668
2653
|
startLoad(startPosition: number): void;
|
2669
2654
|
stopLoad(): void;
|
@@ -2687,7 +2672,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
|
|
2687
2672
|
protected onMediaDetaching(): void;
|
2688
2673
|
private onMediaPlaying;
|
2689
2674
|
private onMediaSeeked;
|
2690
|
-
|
2675
|
+
private onManifestLoading;
|
2691
2676
|
private onManifestParsed;
|
2692
2677
|
private onLevelLoading;
|
2693
2678
|
private onLevelLoaded;
|
@@ -2696,7 +2681,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
|
|
2696
2681
|
private onAudioTrackSwitched;
|
2697
2682
|
private onBufferCreated;
|
2698
2683
|
private onFragBuffered;
|
2699
|
-
|
2684
|
+
private onError;
|
2700
2685
|
private checkBuffer;
|
2701
2686
|
private onFragLoadEmergencyAborted;
|
2702
2687
|
private onBufferFlushed;
|
@@ -2782,8 +2767,8 @@ export declare class SubtitleStreamController extends BaseStreamController imple
|
|
2782
2767
|
private mainDetails;
|
2783
2768
|
constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
|
2784
2769
|
protected onHandlerDestroying(): void;
|
2785
|
-
|
2786
|
-
|
2770
|
+
private _registerListeners;
|
2771
|
+
private _unregisterListeners;
|
2787
2772
|
startLoad(startPosition: number): void;
|
2788
2773
|
onManifestLoading(): void;
|
2789
2774
|
onMediaDetaching(): void;
|
@@ -2811,10 +2796,10 @@ export declare class SubtitleTrackController extends BasePlaylistController {
|
|
2811
2796
|
private currentTrack;
|
2812
2797
|
private selectDefaultTrack;
|
2813
2798
|
private queuedDefaultTrack;
|
2799
|
+
private asyncPollTrackChange;
|
2814
2800
|
private useTextTrackPolling;
|
2815
2801
|
private subtitlePollingInterval;
|
2816
2802
|
private _subtitleDisplay;
|
2817
|
-
private asyncPollTrackChange;
|
2818
2803
|
constructor(hls: Hls);
|
2819
2804
|
destroy(): void;
|
2820
2805
|
get subtitleDisplay(): boolean;
|
@@ -2899,12 +2884,12 @@ export declare interface SubtitleTrackSwitchData {
|
|
2899
2884
|
* we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further
|
2900
2885
|
* task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
|
2901
2886
|
*/
|
2902
|
-
declare class TaskLoop
|
2887
|
+
declare class TaskLoop {
|
2903
2888
|
private readonly _boundTick;
|
2904
2889
|
private _tickTimer;
|
2905
2890
|
private _tickInterval;
|
2906
2891
|
private _tickCallCount;
|
2907
|
-
constructor(
|
2892
|
+
constructor();
|
2908
2893
|
destroy(): void;
|
2909
2894
|
protected onHandlerDestroying(): void;
|
2910
2895
|
protected onHandlerDestroyed(): void;
|