hls.js 1.5.12-0.canary.10340 → 1.5.12-0.canary.10343
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.js +431 -288
- package/dist/hls.js.d.ts +49 -16
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +364 -178
- 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 +356 -179
- 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 +422 -288
- 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 +2 -2
- package/src/controller/audio-stream-controller.ts +13 -5
- package/src/controller/base-stream-controller.ts +28 -26
- package/src/controller/fragment-finders.ts +12 -14
- package/src/controller/fragment-tracker.ts +14 -14
- package/src/controller/id3-track-controller.ts +38 -28
- package/src/controller/stream-controller.ts +9 -4
- package/src/controller/subtitle-stream-controller.ts +3 -3
- package/src/demux/transmuxer-interface.ts +4 -4
- package/src/hls.ts +3 -1
- package/src/loader/date-range.ts +71 -5
- package/src/loader/fragment.ts +6 -2
- package/src/loader/level-details.ts +7 -6
- package/src/loader/m3u8-parser.ts +138 -144
- package/src/types/events.ts +2 -5
- package/src/types/fragment-tracker.ts +2 -2
- package/src/utils/attr-list.ts +96 -9
- package/src/utils/level-helper.ts +68 -40
- package/src/utils/variable-substitution.ts +0 -19
package/dist/hls.js.d.ts
CHANGED
@@ -69,7 +69,7 @@ export declare type ABRControllerConfig = {
|
|
69
69
|
|
70
70
|
export declare class AttrList {
|
71
71
|
[key: string]: any;
|
72
|
-
constructor(attrs: string | Record<string, any>);
|
72
|
+
constructor(attrs: string | Record<string, any>, parsed?: Pick<ParsedMultivariantPlaylist | LevelDetails, 'variableList' | 'hasVariableRefs' | 'playlistParsingError'>);
|
73
73
|
get clientAttrs(): string[];
|
74
74
|
decimalInteger(attrName: string): number;
|
75
75
|
hexadecimalInteger(attrName: string): Uint8Array | null;
|
@@ -77,12 +77,17 @@ export declare class AttrList {
|
|
77
77
|
decimalFloatingPoint(attrName: string): number;
|
78
78
|
optionalFloat(attrName: string, defaultValue: number): number;
|
79
79
|
enumeratedString(attrName: string): string | undefined;
|
80
|
+
enumeratedStringList<T extends {
|
81
|
+
[key: string]: boolean;
|
82
|
+
}>(attrName: string, dict: T): {
|
83
|
+
[key in keyof T]: boolean;
|
84
|
+
};
|
80
85
|
bool(attrName: string): boolean;
|
81
86
|
decimalResolution(attrName: string): {
|
82
87
|
width: number;
|
83
88
|
height: number;
|
84
89
|
} | undefined;
|
85
|
-
static parseAttrList(input: string): Record<string,
|
90
|
+
static parseAttrList(input: string, parsed?: Pick<ParsedMultivariantPlaylist | LevelDetails, 'variableList' | 'hasVariableRefs' | 'playlistParsingError'>): Record<string, string>;
|
86
91
|
}
|
87
92
|
|
88
93
|
export declare type AudioPlaylistType = 'AUDIO';
|
@@ -286,7 +291,7 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
|
|
286
291
|
protected _handleTransmuxerFlush(chunkMeta: ChunkMetadata): void;
|
287
292
|
private shouldLoadParts;
|
288
293
|
protected getCurrentContext(chunkMeta: ChunkMetadata): {
|
289
|
-
frag:
|
294
|
+
frag: MediaFragment;
|
290
295
|
part: Part | null;
|
291
296
|
level: Level;
|
292
297
|
} | null;
|
@@ -303,8 +308,8 @@ export declare class BaseStreamController extends TaskLoop implements NetworkCom
|
|
303
308
|
mapToInitFragWhenRequired(frag: Fragment | null): typeof frag;
|
304
309
|
getNextPart(partList: Part[], frag: Fragment, targetBufferTime: number): number;
|
305
310
|
private loadedEndOfParts;
|
306
|
-
protected getInitialLiveFragment(levelDetails: LevelDetails, fragments:
|
307
|
-
protected getFragmentAtPosition(bufferEnd: number, end: number, levelDetails: LevelDetails):
|
311
|
+
protected getInitialLiveFragment(levelDetails: LevelDetails, fragments: MediaFragment[]): MediaFragment | null;
|
312
|
+
protected getFragmentAtPosition(bufferEnd: number, end: number, levelDetails: LevelDetails): MediaFragment | null;
|
308
313
|
protected synchronizeToLiveEdge(levelDetails: LevelDetails): void;
|
309
314
|
protected alignPlaylists(details: LevelDetails, previousDetails: LevelDetails | undefined, switchDetails: LevelDetails | undefined): number;
|
310
315
|
protected waitForCdnTuneIn(details: LevelDetails): boolean | 0;
|
@@ -697,20 +702,32 @@ export declare interface CuesParsedData {
|
|
697
702
|
|
698
703
|
export declare class DateRange {
|
699
704
|
attr: AttrList;
|
705
|
+
tagAnchor: Fragment | null;
|
706
|
+
tagOrder: number;
|
700
707
|
private _startDate;
|
701
708
|
private _endDate?;
|
709
|
+
private _cue?;
|
702
710
|
private _badValueForSameId?;
|
703
|
-
constructor(dateRangeAttr: AttrList, dateRangeWithSameId?: DateRange);
|
711
|
+
constructor(dateRangeAttr: AttrList, dateRangeWithSameId?: DateRange | undefined, tagCount?: number);
|
704
712
|
get id(): string;
|
705
713
|
get class(): string;
|
714
|
+
get cue(): DateRangeCue;
|
715
|
+
get startTime(): number;
|
706
716
|
get startDate(): Date;
|
707
717
|
get endDate(): Date | null;
|
708
718
|
get duration(): number | null;
|
709
719
|
get plannedDuration(): number | null;
|
710
720
|
get endOnNext(): boolean;
|
721
|
+
get isInterstitial(): boolean;
|
711
722
|
get isValid(): boolean;
|
712
723
|
}
|
713
724
|
|
725
|
+
export declare type DateRangeCue = {
|
726
|
+
pre: boolean;
|
727
|
+
post: boolean;
|
728
|
+
once: boolean;
|
729
|
+
};
|
730
|
+
|
714
731
|
declare interface DecryptData {
|
715
732
|
uri: string;
|
716
733
|
method: string;
|
@@ -1256,8 +1273,8 @@ declare class FragmentTracker implements ComponentAPI {
|
|
1256
1273
|
* A buffered Fragment is one whose loading, parsing and appending is done (completed or "partial" meaning aborted).
|
1257
1274
|
* If not found any Fragment, return null
|
1258
1275
|
*/
|
1259
|
-
getBufferedFrag(position: number, levelType: PlaylistLevelType):
|
1260
|
-
getFragAtPos(position: number, levelType: PlaylistLevelType, buffered?: boolean):
|
1276
|
+
getBufferedFrag(position: number, levelType: PlaylistLevelType): MediaFragment | null;
|
1277
|
+
getFragAtPos(position: number, levelType: PlaylistLevelType, buffered?: boolean): MediaFragment | null;
|
1261
1278
|
/**
|
1262
1279
|
* Partial fragments effected by coded frame eviction will be removed
|
1263
1280
|
* The browser will unload parts of the buffer to free up memory for new buffer data
|
@@ -1270,7 +1287,7 @@ declare class FragmentTracker implements ComponentAPI {
|
|
1270
1287
|
*/
|
1271
1288
|
detectPartialFragments(data: FragBufferedData): void;
|
1272
1289
|
private removeParts;
|
1273
|
-
fragBuffered(frag:
|
1290
|
+
fragBuffered(frag: MediaFragment, force?: true): void;
|
1274
1291
|
private getBufferedTimes;
|
1275
1292
|
/**
|
1276
1293
|
* Gets the partial fragment for a certain time
|
@@ -1835,7 +1852,7 @@ export declare interface ILogger {
|
|
1835
1852
|
|
1836
1853
|
export declare interface InitPTSFoundData {
|
1837
1854
|
id: string;
|
1838
|
-
frag:
|
1855
|
+
frag: MediaFragment;
|
1839
1856
|
initPTS: number;
|
1840
1857
|
timescale: number;
|
1841
1858
|
}
|
@@ -1997,10 +2014,11 @@ export declare class LevelDetails {
|
|
1997
2014
|
averagetargetduration?: number;
|
1998
2015
|
endCC: number;
|
1999
2016
|
endSN: number;
|
2000
|
-
fragments:
|
2001
|
-
fragmentHint?:
|
2017
|
+
fragments: MediaFragment[];
|
2018
|
+
fragmentHint?: MediaFragment;
|
2002
2019
|
partList: Part[] | null;
|
2003
2020
|
dateRanges: Record<string, DateRange>;
|
2021
|
+
dateRangeTagCount: number;
|
2004
2022
|
live: boolean;
|
2005
2023
|
ageHeader: number;
|
2006
2024
|
advancedDateTime?: number;
|
@@ -2364,6 +2382,10 @@ export declare interface MediaEndedData {
|
|
2364
2382
|
stalled: boolean;
|
2365
2383
|
}
|
2366
2384
|
|
2385
|
+
export declare interface MediaFragment extends Fragment {
|
2386
|
+
sn: number;
|
2387
|
+
}
|
2388
|
+
|
2367
2389
|
export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;
|
2368
2390
|
|
2369
2391
|
export declare interface MediaKeySessionContext {
|
@@ -2467,6 +2489,17 @@ declare interface PACData {
|
|
2467
2489
|
italics: boolean;
|
2468
2490
|
}
|
2469
2491
|
|
2492
|
+
export declare type ParsedMultivariantPlaylist = {
|
2493
|
+
contentSteering: ContentSteeringOptions | null;
|
2494
|
+
levels: LevelParsed[];
|
2495
|
+
playlistParsingError: Error | null;
|
2496
|
+
sessionData: Record<string, AttrList> | null;
|
2497
|
+
sessionKeys: LevelKey[] | null;
|
2498
|
+
startTimeOffset: number | null;
|
2499
|
+
variableList: VariableMap | null;
|
2500
|
+
hasVariableRefs: boolean;
|
2501
|
+
};
|
2502
|
+
|
2470
2503
|
/**
|
2471
2504
|
* Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}.
|
2472
2505
|
*/
|
@@ -2476,10 +2509,10 @@ export declare class Part extends BaseSegment {
|
|
2476
2509
|
readonly gap: boolean;
|
2477
2510
|
readonly independent: boolean;
|
2478
2511
|
readonly relurl: string;
|
2479
|
-
readonly fragment:
|
2512
|
+
readonly fragment: MediaFragment;
|
2480
2513
|
readonly index: number;
|
2481
2514
|
stats: LoadStats;
|
2482
|
-
constructor(partAttrs: AttrList, frag:
|
2515
|
+
constructor(partAttrs: AttrList, frag: MediaFragment, baseurl: string, index: number, previous?: Part);
|
2483
2516
|
get start(): number;
|
2484
2517
|
get end(): number;
|
2485
2518
|
get loaded(): boolean;
|
@@ -2736,7 +2769,7 @@ declare class StreamController extends BaseStreamController implements NetworkCo
|
|
2736
2769
|
get currentFrag(): Fragment | null;
|
2737
2770
|
get currentProgramDateTime(): Date | null;
|
2738
2771
|
get currentLevel(): number;
|
2739
|
-
get nextBufferedFrag():
|
2772
|
+
get nextBufferedFrag(): MediaFragment | null;
|
2740
2773
|
get forceStartLoad(): boolean;
|
2741
2774
|
}
|
2742
2775
|
|
@@ -3064,7 +3097,7 @@ declare class TransmuxerInterface {
|
|
3064
3097
|
constructor(hls: Hls, id: PlaylistLevelType, onTransmuxComplete: (transmuxResult: TransmuxerResult) => void, onFlush: (chunkMeta: ChunkMetadata) => void);
|
3065
3098
|
resetWorker(): void;
|
3066
3099
|
destroy(): void;
|
3067
|
-
push(data: ArrayBuffer, initSegmentData: Uint8Array | undefined, audioCodec: string | undefined, videoCodec: string | undefined, frag:
|
3100
|
+
push(data: ArrayBuffer, initSegmentData: Uint8Array | undefined, audioCodec: string | undefined, videoCodec: string | undefined, frag: MediaFragment, part: Part | null, duration: number, accurateTimeOffset: boolean, chunkMeta: ChunkMetadata, defaultInitPTS?: RationalTimestamp): void;
|
3068
3101
|
flush(chunkMeta: ChunkMetadata): void;
|
3069
3102
|
private transmuxerError;
|
3070
3103
|
private handleFlushResult;
|