hls.js 1.5.6-0.canary.9999 → 1.5.6
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 +1169 -2069
- package/dist/hls.js.d.ts +51 -65
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +875 -1158
- 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 +709 -993
- 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 +869 -1756
- 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 +40 -31
- 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 +34 -27
- 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/utils/mp4-tools.ts +6 -4
- 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;
|
@@ -44,6 +44,7 @@ export declare class AbrController extends Logger implements AbrComponentAPI {
|
|
44
44
|
get nextAutoLevel(): number;
|
45
45
|
private getAutoLevelKey;
|
46
46
|
private getNextABRAutoLevel;
|
47
|
+
private getStarvationDelay;
|
47
48
|
private getBwEstimate;
|
48
49
|
private findBestLevel;
|
49
50
|
set nextAutoLevel(nextLevel: number);
|
@@ -111,8 +112,8 @@ export declare class AudioStreamController extends BaseStreamController implemen
|
|
111
112
|
private cachedTrackLoadedData;
|
112
113
|
constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
|
113
114
|
protected onHandlerDestroying(): void;
|
114
|
-
|
115
|
-
|
115
|
+
private _registerListeners;
|
116
|
+
private _unregisterListeners;
|
116
117
|
onInitPtsFound(event: Events.INIT_PTS_FOUND, { frag, id, initPTS, timescale }: InitPTSFoundData): void;
|
117
118
|
startLoad(startPosition: number): void;
|
118
119
|
doTick(): void;
|
@@ -132,7 +133,7 @@ export declare class AudioStreamController extends BaseStreamController implemen
|
|
132
133
|
onBufferReset(): void;
|
133
134
|
onBufferCreated(event: Events.BUFFER_CREATED, data: BufferCreatedData): void;
|
134
135
|
onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;
|
135
|
-
|
136
|
+
private onError;
|
136
137
|
private onBufferFlushing;
|
137
138
|
private onBufferFlushed;
|
138
139
|
private _handleTransmuxComplete;
|
@@ -187,11 +188,13 @@ export declare interface BackBufferData {
|
|
187
188
|
bufferEnd: number;
|
188
189
|
}
|
189
190
|
|
190
|
-
export declare class BasePlaylistController
|
191
|
+
export declare class BasePlaylistController implements NetworkComponentAPI {
|
191
192
|
protected hls: Hls;
|
192
193
|
protected timer: number;
|
193
194
|
protected requestScheduled: number;
|
194
195
|
protected canLoad: boolean;
|
196
|
+
protected log: (msg: any) => void;
|
197
|
+
protected warn: (msg: any) => void;
|
195
198
|
constructor(hls: Hls, logPrefix: string);
|
196
199
|
destroy(): void;
|
197
200
|
protected clearTimer(): void;
|
@@ -246,25 +249,22 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
|
|
246
249
|
protected startFragRequested: boolean;
|
247
250
|
protected decrypter: Decrypter;
|
248
251
|
protected initPTS: RationalTimestamp[];
|
249
|
-
protected
|
250
|
-
|
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;
|
251
257
|
constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader, logPrefix: string, playlistType: PlaylistLevelType);
|
252
|
-
protected registerListeners(): void;
|
253
|
-
protected unregisterListeners(): void;
|
254
258
|
protected doTick(): void;
|
255
259
|
protected onTickEnd(): void;
|
256
260
|
startLoad(startPosition: number): void;
|
257
261
|
stopLoad(): void;
|
258
|
-
pauseBuffering(): void;
|
259
|
-
resumeBuffering(): void;
|
260
262
|
protected _streamEnded(bufferInfo: BufferInfo, levelDetails: LevelDetails): boolean;
|
261
263
|
protected getLevelDetails(): LevelDetails | undefined;
|
262
264
|
protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
|
263
265
|
protected onMediaDetaching(): void;
|
264
|
-
protected
|
265
|
-
protected
|
266
|
-
protected onMediaSeeking: () => void;
|
267
|
-
protected onMediaEnded: () => 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,7 +284,6 @@ 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;
|
288
287
|
protected getCurrentContext(chunkMeta: ChunkMetadata): {
|
289
288
|
frag: Fragment;
|
290
289
|
part: Part | null;
|
@@ -354,7 +353,7 @@ export declare interface BufferCodecsData {
|
|
354
353
|
audio?: Track;
|
355
354
|
}
|
356
355
|
|
357
|
-
export declare class BufferController
|
356
|
+
export declare class BufferController implements ComponentAPI {
|
358
357
|
private details;
|
359
358
|
private _objectUrl;
|
360
359
|
private operationQueue;
|
@@ -374,6 +373,9 @@ export declare class BufferController extends Logger implements ComponentAPI {
|
|
374
373
|
tracks: TrackSet;
|
375
374
|
pendingTracks: TrackSet;
|
376
375
|
sourceBuffer: SourceBuffers;
|
376
|
+
protected log: (msg: any) => void;
|
377
|
+
protected warn: (msg: any, obj?: any) => void;
|
378
|
+
protected error: (msg: any, obj?: any) => void;
|
377
379
|
constructor(hls: Hls);
|
378
380
|
hasSourceTypes(): boolean;
|
379
381
|
destroy(): void;
|
@@ -600,7 +602,6 @@ export declare class CMCDController implements ComponentAPI {
|
|
600
602
|
* Apply CMCD data to a segment request
|
601
603
|
*/
|
602
604
|
private applyFragmentData;
|
603
|
-
private getNextFrag;
|
604
605
|
/**
|
605
606
|
* The CMCD object type.
|
606
607
|
*/
|
@@ -634,8 +635,9 @@ export declare interface ComponentAPI {
|
|
634
635
|
destroy(): void;
|
635
636
|
}
|
636
637
|
|
637
|
-
export declare class ContentSteeringController
|
638
|
+
export declare class ContentSteeringController implements NetworkComponentAPI {
|
638
639
|
private readonly hls;
|
640
|
+
private log;
|
639
641
|
private loader;
|
640
642
|
private uri;
|
641
643
|
private pathwayId;
|
@@ -725,7 +727,6 @@ declare class Decrypter {
|
|
725
727
|
private currentIV;
|
726
728
|
private currentResult;
|
727
729
|
private useSoftware;
|
728
|
-
private enableSoftwareAES;
|
729
730
|
constructor(config: HlsConfig, { removePKCS7Padding }?: {
|
730
731
|
removePKCS7Padding?: boolean | undefined;
|
731
732
|
});
|
@@ -733,19 +734,14 @@ declare class Decrypter {
|
|
733
734
|
isSync(): boolean;
|
734
735
|
flush(): Uint8Array | null;
|
735
736
|
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
|
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>;
|
739
740
|
private onWebCryptoError;
|
740
741
|
private getValidChunk;
|
741
742
|
private logOnce;
|
742
743
|
}
|
743
744
|
|
744
|
-
declare const enum DecrypterAesMode {
|
745
|
-
cbc = 0,
|
746
|
-
ctr = 1
|
747
|
-
}
|
748
|
-
|
749
745
|
declare type DRMSystemConfiguration = {
|
750
746
|
licenseUrl: string;
|
751
747
|
serverCertificateUrl?: string;
|
@@ -791,7 +787,7 @@ export declare const enum ElementaryStreamTypes {
|
|
791
787
|
* @class
|
792
788
|
* @constructor
|
793
789
|
*/
|
794
|
-
export declare class EMEController
|
790
|
+
export declare class EMEController implements ComponentAPI {
|
795
791
|
static CDMCleanupPromise: Promise<void> | void;
|
796
792
|
private readonly hls;
|
797
793
|
private readonly config;
|
@@ -802,6 +798,12 @@ export declare class EMEController extends Logger implements ComponentAPI {
|
|
802
798
|
private mediaKeySessions;
|
803
799
|
private keyIdToKeySessionPromise;
|
804
800
|
private setMediaKeysQueue;
|
801
|
+
private onMediaEncrypted;
|
802
|
+
private onWaitingForKey;
|
803
|
+
private debug;
|
804
|
+
private log;
|
805
|
+
private warn;
|
806
|
+
private error;
|
805
807
|
constructor(hls: Hls);
|
806
808
|
destroy(): void;
|
807
809
|
private registerListeners;
|
@@ -822,8 +824,8 @@ export declare class EMEController extends Logger implements ComponentAPI {
|
|
822
824
|
private handleError;
|
823
825
|
private getKeySystemForKeyPromise;
|
824
826
|
private getKeySystemSelectionPromise;
|
825
|
-
private
|
826
|
-
private
|
827
|
+
private _onMediaEncrypted;
|
828
|
+
private _onWaitingForKey;
|
827
829
|
private attemptSetMediaKeys;
|
828
830
|
private generateRequestWithPreferredKeySession;
|
829
831
|
private onKeyStatusChange;
|
@@ -857,10 +859,13 @@ export declare const enum ErrorActionFlags {
|
|
857
859
|
SwitchToSDR = 4
|
858
860
|
}
|
859
861
|
|
860
|
-
export declare class ErrorController
|
862
|
+
export declare class ErrorController implements NetworkComponentAPI {
|
861
863
|
private readonly hls;
|
862
864
|
private playlistError;
|
863
865
|
private penalizedRenditions;
|
866
|
+
private log;
|
867
|
+
private warn;
|
868
|
+
private error;
|
864
869
|
constructor(hls: Hls);
|
865
870
|
private registerListeners;
|
866
871
|
private unregisterListeners;
|
@@ -970,7 +975,6 @@ export declare enum Events {
|
|
970
975
|
MEDIA_ATTACHED = "hlsMediaAttached",
|
971
976
|
MEDIA_DETACHING = "hlsMediaDetaching",
|
972
977
|
MEDIA_DETACHED = "hlsMediaDetached",
|
973
|
-
MEDIA_ENDED = "hlsMediaEnded",
|
974
978
|
BUFFER_RESET = "hlsBufferReset",
|
975
979
|
BUFFER_CODECS = "hlsBufferCodecs",
|
976
980
|
BUFFER_CREATED = "hlsBufferCreated",
|
@@ -1317,12 +1321,9 @@ declare class Hls implements HlsEventEmitter {
|
|
1317
1321
|
* The configuration object provided on player instantiation.
|
1318
1322
|
*/
|
1319
1323
|
readonly userConfig: Partial<HlsConfig>;
|
1320
|
-
/**
|
1321
|
-
* The logger functions used by this player instance, configured on player instantiation.
|
1322
|
-
*/
|
1323
|
-
readonly logger: ILogger;
|
1324
1324
|
private coreComponents;
|
1325
1325
|
private networkControllers;
|
1326
|
+
private started;
|
1326
1327
|
private _emitter;
|
1327
1328
|
private _autoLevelCapping;
|
1328
1329
|
private _maxHdcpLevel;
|
@@ -1409,11 +1410,11 @@ declare class Hls implements HlsEventEmitter {
|
|
1409
1410
|
*/
|
1410
1411
|
stopLoad(): void;
|
1411
1412
|
/**
|
1412
|
-
* Resumes stream controller segment loading
|
1413
|
+
* Resumes stream controller segment loading if previously started.
|
1413
1414
|
*/
|
1414
1415
|
resumeBuffering(): void;
|
1415
1416
|
/**
|
1416
|
-
*
|
1417
|
+
* Stops stream controller segment loading without changing 'started' state like stopLoad().
|
1417
1418
|
* This allows for media buffering to be paused without interupting playlist loading.
|
1418
1419
|
*/
|
1419
1420
|
pauseBuffering(): void;
|
@@ -1705,7 +1706,6 @@ export declare interface HlsListeners {
|
|
1705
1706
|
[Events.MEDIA_ATTACHED]: (event: Events.MEDIA_ATTACHED, data: MediaAttachedData) => void;
|
1706
1707
|
[Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING) => void;
|
1707
1708
|
[Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED) => void;
|
1708
|
-
[Events.MEDIA_ENDED]: (event: Events.MEDIA_ENDED, data: MediaEndedData) => void;
|
1709
1709
|
[Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;
|
1710
1710
|
[Events.BUFFER_CODECS]: (event: Events.BUFFER_CODECS, data: BufferCodecsData) => void;
|
1711
1711
|
[Events.BUFFER_CREATED]: (event: Events.BUFFER_CREATED, data: BufferCreatedData) => void;
|
@@ -2257,16 +2257,6 @@ export declare class LoadStats implements LoaderStats {
|
|
2257
2257
|
buffering: HlsProgressivePerformanceTiming;
|
2258
2258
|
}
|
2259
2259
|
|
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
2260
|
export declare type MainPlaylistType = AudioPlaylistType | 'VIDEO';
|
2271
2261
|
|
2272
2262
|
export declare interface ManifestLoadedData {
|
@@ -2342,10 +2332,6 @@ export declare type MediaDecodingInfo = {
|
|
2342
2332
|
error?: Error;
|
2343
2333
|
};
|
2344
2334
|
|
2345
|
-
export declare interface MediaEndedData {
|
2346
|
-
stalled: boolean;
|
2347
|
-
}
|
2348
|
-
|
2349
2335
|
export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;
|
2350
2336
|
|
2351
2337
|
export declare interface MediaKeySessionContext {
|
@@ -2415,8 +2401,6 @@ export declare type MP4RemuxerConfig = {
|
|
2415
2401
|
export declare interface NetworkComponentAPI extends ComponentAPI {
|
2416
2402
|
startLoad(startPosition: number): void;
|
2417
2403
|
stopLoad(): void;
|
2418
|
-
pauseBuffering?(): void;
|
2419
|
-
resumeBuffering?(): void;
|
2420
2404
|
}
|
2421
2405
|
|
2422
2406
|
export declare const enum NetworkErrorAction {
|
@@ -2656,14 +2640,16 @@ declare class StreamController extends BaseStreamController implements NetworkCo
|
|
2656
2640
|
private altAudio;
|
2657
2641
|
private audioOnly;
|
2658
2642
|
private fragPlaying;
|
2643
|
+
private onvplaying;
|
2644
|
+
private onvseeked;
|
2659
2645
|
private fragLastKbps;
|
2660
2646
|
private couldBacktrack;
|
2661
2647
|
private backtrackFragment;
|
2662
2648
|
private audioCodecSwitch;
|
2663
2649
|
private videoBuffer;
|
2664
2650
|
constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
|
2665
|
-
|
2666
|
-
protected
|
2651
|
+
private _registerListeners;
|
2652
|
+
protected _unregisterListeners(): void;
|
2667
2653
|
protected onHandlerDestroying(): void;
|
2668
2654
|
startLoad(startPosition: number): void;
|
2669
2655
|
stopLoad(): void;
|
@@ -2687,7 +2673,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
|
|
2687
2673
|
protected onMediaDetaching(): void;
|
2688
2674
|
private onMediaPlaying;
|
2689
2675
|
private onMediaSeeked;
|
2690
|
-
|
2676
|
+
private onManifestLoading;
|
2691
2677
|
private onManifestParsed;
|
2692
2678
|
private onLevelLoading;
|
2693
2679
|
private onLevelLoaded;
|
@@ -2696,7 +2682,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
|
|
2696
2682
|
private onAudioTrackSwitched;
|
2697
2683
|
private onBufferCreated;
|
2698
2684
|
private onFragBuffered;
|
2699
|
-
|
2685
|
+
private onError;
|
2700
2686
|
private checkBuffer;
|
2701
2687
|
private onFragLoadEmergencyAborted;
|
2702
2688
|
private onBufferFlushed;
|
@@ -2782,8 +2768,8 @@ export declare class SubtitleStreamController extends BaseStreamController imple
|
|
2782
2768
|
private mainDetails;
|
2783
2769
|
constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
|
2784
2770
|
protected onHandlerDestroying(): void;
|
2785
|
-
|
2786
|
-
|
2771
|
+
private _registerListeners;
|
2772
|
+
private _unregisterListeners;
|
2787
2773
|
startLoad(startPosition: number): void;
|
2788
2774
|
onManifestLoading(): void;
|
2789
2775
|
onMediaDetaching(): void;
|
@@ -2811,10 +2797,10 @@ export declare class SubtitleTrackController extends BasePlaylistController {
|
|
2811
2797
|
private currentTrack;
|
2812
2798
|
private selectDefaultTrack;
|
2813
2799
|
private queuedDefaultTrack;
|
2800
|
+
private asyncPollTrackChange;
|
2814
2801
|
private useTextTrackPolling;
|
2815
2802
|
private subtitlePollingInterval;
|
2816
2803
|
private _subtitleDisplay;
|
2817
|
-
private asyncPollTrackChange;
|
2818
2804
|
constructor(hls: Hls);
|
2819
2805
|
destroy(): void;
|
2820
2806
|
get subtitleDisplay(): boolean;
|
@@ -2899,12 +2885,12 @@ export declare interface SubtitleTrackSwitchData {
|
|
2899
2885
|
* we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further
|
2900
2886
|
* task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
|
2901
2887
|
*/
|
2902
|
-
declare class TaskLoop
|
2888
|
+
declare class TaskLoop {
|
2903
2889
|
private readonly _boundTick;
|
2904
2890
|
private _tickTimer;
|
2905
2891
|
private _tickInterval;
|
2906
2892
|
private _tickCallCount;
|
2907
|
-
constructor(
|
2893
|
+
constructor();
|
2908
2894
|
destroy(): void;
|
2909
2895
|
protected onHandlerDestroying(): void;
|
2910
2896
|
protected onHandlerDestroyed(): void;
|