@zenvor/hls.js 1.0.0

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 (159) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +472 -0
  3. package/dist/hls-demo.js +26995 -0
  4. package/dist/hls-demo.js.map +1 -0
  5. package/dist/hls.d.mts +4204 -0
  6. package/dist/hls.d.ts +4204 -0
  7. package/dist/hls.js +40050 -0
  8. package/dist/hls.js.d.ts +4204 -0
  9. package/dist/hls.js.map +1 -0
  10. package/dist/hls.light.js +27145 -0
  11. package/dist/hls.light.js.map +1 -0
  12. package/dist/hls.light.min.js +2 -0
  13. package/dist/hls.light.min.js.map +1 -0
  14. package/dist/hls.light.mjs +26392 -0
  15. package/dist/hls.light.mjs.map +1 -0
  16. package/dist/hls.min.js +2 -0
  17. package/dist/hls.min.js.map +1 -0
  18. package/dist/hls.mjs +38956 -0
  19. package/dist/hls.mjs.map +1 -0
  20. package/dist/hls.worker.js +2 -0
  21. package/dist/hls.worker.js.map +1 -0
  22. package/package.json +143 -0
  23. package/src/config.ts +794 -0
  24. package/src/controller/abr-controller.ts +1019 -0
  25. package/src/controller/algo-data-controller.ts +794 -0
  26. package/src/controller/audio-stream-controller.ts +1099 -0
  27. package/src/controller/audio-track-controller.ts +454 -0
  28. package/src/controller/base-playlist-controller.ts +438 -0
  29. package/src/controller/base-stream-controller.ts +2526 -0
  30. package/src/controller/buffer-controller.ts +2015 -0
  31. package/src/controller/buffer-operation-queue.ts +159 -0
  32. package/src/controller/cap-level-controller.ts +367 -0
  33. package/src/controller/cmcd-controller.ts +422 -0
  34. package/src/controller/content-steering-controller.ts +622 -0
  35. package/src/controller/eme-controller.ts +1617 -0
  36. package/src/controller/error-controller.ts +627 -0
  37. package/src/controller/fps-controller.ts +146 -0
  38. package/src/controller/fragment-finders.ts +256 -0
  39. package/src/controller/fragment-tracker.ts +567 -0
  40. package/src/controller/gap-controller.ts +719 -0
  41. package/src/controller/id3-track-controller.ts +488 -0
  42. package/src/controller/interstitial-player.ts +302 -0
  43. package/src/controller/interstitials-controller.ts +2895 -0
  44. package/src/controller/interstitials-schedule.ts +698 -0
  45. package/src/controller/latency-controller.ts +294 -0
  46. package/src/controller/level-controller.ts +776 -0
  47. package/src/controller/stream-controller.ts +1597 -0
  48. package/src/controller/subtitle-stream-controller.ts +508 -0
  49. package/src/controller/subtitle-track-controller.ts +617 -0
  50. package/src/controller/timeline-controller.ts +677 -0
  51. package/src/crypt/aes-crypto.ts +36 -0
  52. package/src/crypt/aes-decryptor.ts +339 -0
  53. package/src/crypt/decrypter-aes-mode.ts +4 -0
  54. package/src/crypt/decrypter.ts +225 -0
  55. package/src/crypt/fast-aes-key.ts +39 -0
  56. package/src/define-plugin.d.ts +17 -0
  57. package/src/demux/audio/aacdemuxer.ts +126 -0
  58. package/src/demux/audio/ac3-demuxer.ts +170 -0
  59. package/src/demux/audio/adts.ts +249 -0
  60. package/src/demux/audio/base-audio-demuxer.ts +205 -0
  61. package/src/demux/audio/dolby.ts +21 -0
  62. package/src/demux/audio/mp3demuxer.ts +85 -0
  63. package/src/demux/audio/mpegaudio.ts +177 -0
  64. package/src/demux/chunk-cache.ts +42 -0
  65. package/src/demux/dummy-demuxed-track.ts +13 -0
  66. package/src/demux/inject-worker.ts +75 -0
  67. package/src/demux/mp4demuxer.ts +234 -0
  68. package/src/demux/sample-aes.ts +198 -0
  69. package/src/demux/transmuxer-interface.ts +449 -0
  70. package/src/demux/transmuxer-worker.ts +221 -0
  71. package/src/demux/transmuxer.ts +560 -0
  72. package/src/demux/tsdemuxer.ts +1256 -0
  73. package/src/demux/video/avc-video-parser.ts +401 -0
  74. package/src/demux/video/base-video-parser.ts +198 -0
  75. package/src/demux/video/exp-golomb.ts +153 -0
  76. package/src/demux/video/hevc-video-parser.ts +736 -0
  77. package/src/empty-es.js +5 -0
  78. package/src/empty.js +3 -0
  79. package/src/errors.ts +107 -0
  80. package/src/events.ts +548 -0
  81. package/src/exports-default.ts +3 -0
  82. package/src/exports-named.ts +81 -0
  83. package/src/hls.ts +1613 -0
  84. package/src/is-supported.ts +54 -0
  85. package/src/loader/date-range.ts +207 -0
  86. package/src/loader/fragment-loader.ts +403 -0
  87. package/src/loader/fragment.ts +487 -0
  88. package/src/loader/interstitial-asset-list.ts +162 -0
  89. package/src/loader/interstitial-event.ts +337 -0
  90. package/src/loader/key-loader.ts +439 -0
  91. package/src/loader/level-details.ts +203 -0
  92. package/src/loader/level-key.ts +259 -0
  93. package/src/loader/load-stats.ts +17 -0
  94. package/src/loader/m3u8-parser.ts +1072 -0
  95. package/src/loader/playlist-loader.ts +839 -0
  96. package/src/polyfills/number.ts +15 -0
  97. package/src/remux/aac-helper.ts +81 -0
  98. package/src/remux/mp4-generator.ts +1380 -0
  99. package/src/remux/mp4-remuxer.ts +1261 -0
  100. package/src/remux/passthrough-remuxer.ts +434 -0
  101. package/src/task-loop.ts +130 -0
  102. package/src/types/algo.ts +44 -0
  103. package/src/types/buffer.ts +105 -0
  104. package/src/types/component-api.ts +20 -0
  105. package/src/types/demuxer.ts +208 -0
  106. package/src/types/events.ts +574 -0
  107. package/src/types/fragment-tracker.ts +23 -0
  108. package/src/types/level.ts +268 -0
  109. package/src/types/loader.ts +198 -0
  110. package/src/types/media-playlist.ts +92 -0
  111. package/src/types/network-details.ts +3 -0
  112. package/src/types/remuxer.ts +104 -0
  113. package/src/types/track.ts +12 -0
  114. package/src/types/transmuxer.ts +46 -0
  115. package/src/types/tuples.ts +6 -0
  116. package/src/types/vtt.ts +11 -0
  117. package/src/utils/arrays.ts +22 -0
  118. package/src/utils/attr-list.ts +192 -0
  119. package/src/utils/binary-search.ts +46 -0
  120. package/src/utils/buffer-helper.ts +173 -0
  121. package/src/utils/cea-608-parser.ts +1413 -0
  122. package/src/utils/chunker.ts +41 -0
  123. package/src/utils/codecs.ts +314 -0
  124. package/src/utils/cues.ts +96 -0
  125. package/src/utils/discontinuities.ts +174 -0
  126. package/src/utils/encryption-methods-util.ts +21 -0
  127. package/src/utils/error-helper.ts +95 -0
  128. package/src/utils/event-listener-helper.ts +16 -0
  129. package/src/utils/ewma-bandwidth-estimator.ts +97 -0
  130. package/src/utils/ewma.ts +43 -0
  131. package/src/utils/fetch-loader.ts +331 -0
  132. package/src/utils/global.ts +2 -0
  133. package/src/utils/hash.ts +10 -0
  134. package/src/utils/hdr.ts +67 -0
  135. package/src/utils/hex.ts +32 -0
  136. package/src/utils/imsc1-ttml-parser.ts +261 -0
  137. package/src/utils/keysystem-util.ts +45 -0
  138. package/src/utils/level-helper.ts +629 -0
  139. package/src/utils/logger.ts +120 -0
  140. package/src/utils/media-option-attributes.ts +49 -0
  141. package/src/utils/mediacapabilities-helper.ts +301 -0
  142. package/src/utils/mediakeys-helper.ts +210 -0
  143. package/src/utils/mediasource-helper.ts +37 -0
  144. package/src/utils/mp4-tools.ts +1473 -0
  145. package/src/utils/number.ts +3 -0
  146. package/src/utils/numeric-encoding-utils.ts +26 -0
  147. package/src/utils/output-filter.ts +46 -0
  148. package/src/utils/rendition-helper.ts +505 -0
  149. package/src/utils/safe-json-stringify.ts +22 -0
  150. package/src/utils/texttrack-utils.ts +164 -0
  151. package/src/utils/time-ranges.ts +17 -0
  152. package/src/utils/timescale-conversion.ts +46 -0
  153. package/src/utils/utf8-utils.ts +18 -0
  154. package/src/utils/variable-substitution.ts +105 -0
  155. package/src/utils/vttcue.ts +384 -0
  156. package/src/utils/vttparser.ts +497 -0
  157. package/src/utils/webvtt-parser.ts +166 -0
  158. package/src/utils/xhr-loader.ts +337 -0
  159. package/src/version.ts +1 -0
@@ -0,0 +1,574 @@
1
+ import type {
2
+ AttachMediaSourceData,
3
+ BaseTrackSet,
4
+ BufferCreatedTrackSet,
5
+ MediaOverrides,
6
+ ParsedTrack,
7
+ SourceBufferName,
8
+ SourceBufferTrackSet,
9
+ } from './buffer';
10
+ import type { MetadataSample, UserdataSample } from './demuxer';
11
+ import type {
12
+ HdcpLevel,
13
+ HlsUrlParameters,
14
+ Level,
15
+ LevelAttributes,
16
+ LevelParsed,
17
+ VariableMap,
18
+ } from './level';
19
+ import type {
20
+ Loader,
21
+ LoaderContext,
22
+ LoaderResponse,
23
+ LoaderStats,
24
+ PlaylistLevelType,
25
+ PlaylistLoaderContext,
26
+ } from './loader';
27
+ import type { MediaPlaylist, MediaPlaylistType } from './media-playlist';
28
+ import type { ChunkMetadata } from './transmuxer';
29
+ import type { SteeringManifest } from '../controller/content-steering-controller';
30
+ import type { IErrorAction } from '../controller/error-controller';
31
+ import type { HlsAssetPlayer } from '../controller/interstitial-player';
32
+ import type {
33
+ InterstitialScheduleDurations,
34
+ InterstitialScheduleItem,
35
+ } from '../controller/interstitials-schedule';
36
+ import type { ErrorDetails, ErrorTypes } from '../errors';
37
+ import type { HlsListeners } from '../events';
38
+ import type { AlgoChunk } from './algo';
39
+ import type { NullableNetworkDetails } from './network-details';
40
+ import type { Fragment, MediaFragment, Part } from '../loader/fragment';
41
+ import type {
42
+ AssetListJSON,
43
+ InterstitialAssetItem,
44
+ InterstitialEvent,
45
+ InterstitialEventWithAssetList,
46
+ } from '../loader/interstitial-event';
47
+ import type { KeyLoaderInfo } from '../loader/key-loader';
48
+ import type { LevelDetails } from '../loader/level-details';
49
+ import type { LevelKey } from '../loader/level-key';
50
+ import type { LoadStats } from '../loader/load-stats';
51
+ import type { AttrList } from '../utils/attr-list';
52
+ import type { BufferInfo } from '../utils/buffer-helper';
53
+
54
+ export interface MediaAttachingData {
55
+ media: HTMLMediaElement;
56
+ mediaSource?: MediaSource | null;
57
+ tracks?: SourceBufferTrackSet;
58
+ overrides?: MediaOverrides;
59
+ }
60
+
61
+ export interface MediaAttachedData {
62
+ media: HTMLMediaElement;
63
+ mediaSource?: MediaSource;
64
+ }
65
+
66
+ export interface MediaDetachingData {
67
+ transferMedia?: AttachMediaSourceData | null;
68
+ }
69
+
70
+ export interface MediaDetachedData {
71
+ transferMedia?: AttachMediaSourceData | null;
72
+ }
73
+
74
+ export interface MediaEndedData {
75
+ stalled: boolean;
76
+ }
77
+
78
+ export interface BufferCodecsData {
79
+ video?: ParsedTrack;
80
+ audio?: ParsedTrack;
81
+ audiovideo?: ParsedTrack;
82
+ tracks?: BaseTrackSet;
83
+ }
84
+
85
+ export interface BufferCreatedData {
86
+ tracks: BufferCreatedTrackSet;
87
+ }
88
+
89
+ export interface BufferAppendingData {
90
+ type: SourceBufferName;
91
+ frag: Fragment;
92
+ part: Part | null;
93
+ chunkMeta: ChunkMetadata;
94
+ offset?: number | undefined;
95
+ parent: PlaylistLevelType;
96
+ data: Uint8Array<ArrayBuffer>;
97
+ }
98
+
99
+ export interface BufferAppendedData {
100
+ type: SourceBufferName;
101
+ frag: Fragment;
102
+ part: Part | null;
103
+ chunkMeta: ChunkMetadata;
104
+ parent: PlaylistLevelType;
105
+ timeRanges: Partial<Record<SourceBufferName, TimeRanges>>;
106
+ }
107
+
108
+ export interface BufferEOSData {
109
+ type?: SourceBufferName;
110
+ }
111
+
112
+ export interface BufferFlushingData {
113
+ startOffset: number;
114
+ endOffset: number;
115
+ endOffsetSubtitles?: number;
116
+ type: SourceBufferName | null;
117
+ }
118
+
119
+ export interface BufferFlushedData {
120
+ type: SourceBufferName;
121
+ }
122
+
123
+ export interface ManifestLoadingData {
124
+ url: string;
125
+ }
126
+
127
+ export type ContentSteeringOptions = {
128
+ uri: string;
129
+ pathwayId: string;
130
+ };
131
+
132
+ export interface ManifestLoadedData {
133
+ audioTracks: MediaPlaylist[];
134
+ captions?: MediaPlaylist[];
135
+ contentSteering: ContentSteeringOptions | null;
136
+ levels: LevelParsed[];
137
+ networkDetails: NullableNetworkDetails;
138
+ sessionData: Record<string, AttrList> | null;
139
+ sessionKeys: LevelKey[] | null;
140
+ startTimeOffset: number | null;
141
+ stats: LoaderStats;
142
+ subtitles?: MediaPlaylist[];
143
+ url: string;
144
+ variableList: VariableMap | null;
145
+ }
146
+
147
+ export interface ManifestParsedData {
148
+ levels: Level[];
149
+ audioTracks: MediaPlaylist[];
150
+ subtitleTracks: MediaPlaylist[];
151
+ sessionData: Record<string, AttrList> | null;
152
+ sessionKeys: LevelKey[] | null;
153
+ firstLevel: number;
154
+ stats: LoaderStats;
155
+ audio: boolean;
156
+ video: boolean;
157
+ altAudio: boolean;
158
+ }
159
+
160
+ export interface LevelSwitchingData {
161
+ level: number;
162
+ attrs: LevelAttributes;
163
+ details: LevelDetails | undefined;
164
+ bitrate: number;
165
+ averageBitrate: number;
166
+ maxBitrate: number;
167
+ realBitrate: number;
168
+ width: number;
169
+ height: number;
170
+ codecSet: string;
171
+ audioCodec: string | undefined;
172
+ videoCodec: string | undefined;
173
+ audioGroups: (string | undefined)[] | undefined;
174
+ subtitleGroups: (string | undefined)[] | undefined;
175
+ loaded: { bytes: number; duration: number } | undefined;
176
+ loadError: number;
177
+ fragmentError: number;
178
+ name: string | undefined;
179
+ id: number;
180
+ uri: string;
181
+ // Deprecated (retained for backwards compatibility)
182
+ url: string[];
183
+ urlId: 0;
184
+ audioGroupIds: (string | undefined)[] | undefined;
185
+ textGroupIds: (string | undefined)[] | undefined;
186
+ }
187
+
188
+ export interface LevelSwitchedData {
189
+ level: number;
190
+ }
191
+
192
+ export interface TrackLoadingData {
193
+ id: number;
194
+ groupId: string;
195
+ track: MediaPlaylist;
196
+ url: string;
197
+ deliveryDirectives: HlsUrlParameters | null;
198
+ }
199
+
200
+ export interface LevelLoadingData {
201
+ id: number;
202
+ level: number;
203
+ levelInfo: Level;
204
+ pathwayId: string | undefined;
205
+ url: string;
206
+ deliveryDirectives: HlsUrlParameters | null;
207
+ }
208
+
209
+ export interface TrackLoadedData {
210
+ details: LevelDetails;
211
+ id: number;
212
+ groupId: string;
213
+ networkDetails: NullableNetworkDetails;
214
+ stats: LoaderStats;
215
+ deliveryDirectives: HlsUrlParameters | null;
216
+ track: MediaPlaylist;
217
+ context?: PlaylistLoaderContext;
218
+ }
219
+
220
+ export interface LevelLoadedData {
221
+ details: LevelDetails;
222
+ id: number;
223
+ level: number;
224
+ levelInfo: Level;
225
+ networkDetails: NullableNetworkDetails;
226
+ stats: LoaderStats;
227
+ deliveryDirectives: HlsUrlParameters | null;
228
+ withoutMultiVariant?: boolean;
229
+ context?: PlaylistLoaderContext;
230
+ }
231
+
232
+ export interface LevelUpdatedData {
233
+ details: LevelDetails;
234
+ level: number;
235
+ }
236
+
237
+ export interface AudioTrackUpdatedData {
238
+ details: LevelDetails;
239
+ id: number;
240
+ groupId: string;
241
+ }
242
+
243
+ export interface SubtitleTrackUpdatedData {
244
+ details: LevelDetails;
245
+ id: number;
246
+ groupId: string;
247
+ }
248
+
249
+ export interface LevelPTSUpdatedData {
250
+ details: LevelDetails;
251
+ level: Level;
252
+ drift: number;
253
+ type: string;
254
+ frag: Fragment;
255
+ start: number;
256
+ end: number;
257
+ }
258
+
259
+ export interface AudioTrackSwitchingData extends MediaPlaylist {
260
+ flushImmediate?: boolean;
261
+ }
262
+
263
+ export interface AudioTrackSwitchedData extends MediaPlaylist {}
264
+
265
+ export interface AudioTrackLoadedData extends TrackLoadedData {}
266
+
267
+ export interface AudioTracksUpdatedData {
268
+ audioTracks: MediaPlaylist[];
269
+ }
270
+
271
+ export interface SubtitleTracksUpdatedData {
272
+ subtitleTracks: MediaPlaylist[];
273
+ }
274
+
275
+ export interface SubtitleTrackSwitchData {
276
+ id: number;
277
+ name?: string;
278
+ groupId?: string;
279
+ type?: MediaPlaylistType | 'main';
280
+ url?: string;
281
+ }
282
+
283
+ export interface SubtitleTrackLoadedData extends TrackLoadedData {}
284
+
285
+ export interface TrackSwitchedData {
286
+ id: number;
287
+ }
288
+
289
+ export interface SubtitleFragProcessed {
290
+ success: boolean;
291
+ frag: Fragment;
292
+ part: Part | null;
293
+ }
294
+
295
+ export interface FragChangedData {
296
+ frag: Fragment;
297
+ }
298
+
299
+ export interface AlgoDataLoadingData {
300
+ frag: Fragment;
301
+ url: string;
302
+ }
303
+
304
+ export interface AlgoDataLoadedData {
305
+ frag: Fragment;
306
+ url: string;
307
+ chunk: AlgoChunk;
308
+ networkDetails: NullableNetworkDetails;
309
+ stats: LoaderStats;
310
+ }
311
+
312
+ export interface AlgoDataErrorData {
313
+ frag: Fragment;
314
+ url: string;
315
+ error: Error;
316
+ reason: string;
317
+ networkDetails?: NullableNetworkDetails;
318
+ stats?: LoaderStats;
319
+ }
320
+
321
+ export interface FPSDropData {
322
+ currentDropped: number;
323
+ currentDecoded: number;
324
+ totalDroppedFrames: number;
325
+ }
326
+
327
+ export interface FPSDropLevelCappingData {
328
+ droppedLevel: number;
329
+ level: number;
330
+ }
331
+
332
+ export interface MaxAutoLevelUpdatedData {
333
+ autoLevelCapping: number;
334
+ levels: Level[] | null;
335
+ maxAutoLevel: number;
336
+ minAutoLevel: number;
337
+ maxHdcpLevel: HdcpLevel;
338
+ }
339
+
340
+ export interface ErrorData {
341
+ type: ErrorTypes;
342
+ details: ErrorDetails;
343
+ error: Error;
344
+ fatal: boolean;
345
+ errorAction?: IErrorAction;
346
+ buffer?: number;
347
+ bufferInfo?: BufferInfo;
348
+ bytes?: number;
349
+ chunkMeta?: ChunkMetadata;
350
+ context?: PlaylistLoaderContext;
351
+ decryptdata?: LevelKey;
352
+ event?: keyof HlsListeners | 'demuxerWorker';
353
+ frag?: Fragment;
354
+ part?: Part | null;
355
+ level?: number | undefined;
356
+ levelRetry?: boolean;
357
+ loader?: Loader<LoaderContext>;
358
+ networkDetails?: NullableNetworkDetails;
359
+ stalled?: { start: number };
360
+ stats?: LoaderStats;
361
+ mimeType?: string;
362
+ reason?: string;
363
+ response?: LoaderResponse;
364
+ url?: string;
365
+ parent?: PlaylistLevelType;
366
+ sourceBufferName?: SourceBufferName;
367
+ interstitial?: InterstitialEvent;
368
+ /**
369
+ * @deprecated Use ErrorData.error
370
+ */
371
+ err?: {
372
+ // comes from transmuxer interface
373
+ message: string;
374
+ };
375
+ }
376
+
377
+ export interface SubtitleFragProcessedData {
378
+ success: boolean;
379
+ frag: Fragment;
380
+ part: Part | null;
381
+ error?: Error;
382
+ }
383
+
384
+ export interface CuesParsedData {
385
+ type: 'captions' | 'subtitles';
386
+ cues: any;
387
+ track: string;
388
+ }
389
+
390
+ export interface NonNativeTextTrack {
391
+ _id?: string;
392
+ label: any;
393
+ kind: string;
394
+ default: boolean;
395
+ closedCaptions?: MediaPlaylist;
396
+ subtitleTrack?: MediaPlaylist;
397
+ }
398
+
399
+ export interface NonNativeTextTracksData {
400
+ tracks: Array<NonNativeTextTrack>;
401
+ }
402
+
403
+ export interface InitPTSFoundData {
404
+ id: PlaylistLevelType;
405
+ frag: MediaFragment;
406
+ initPTS: number;
407
+ timescale: number;
408
+ trackId: number;
409
+ }
410
+
411
+ export interface FragLoadingData {
412
+ frag: Fragment;
413
+ part?: Part;
414
+ targetBufferTime: number | null;
415
+ }
416
+
417
+ export interface FragLoadEmergencyAbortedData {
418
+ frag: Fragment;
419
+ part: Part | null;
420
+ stats: LoaderStats;
421
+ }
422
+
423
+ export interface FragLoadedData {
424
+ frag: Fragment;
425
+ part: Part | null;
426
+ payload: ArrayBuffer;
427
+ networkDetails: NullableNetworkDetails;
428
+ }
429
+
430
+ export interface PartsLoadedData {
431
+ frag: Fragment;
432
+ part: Part | null;
433
+ partsLoaded?: FragLoadedData[];
434
+ }
435
+
436
+ export interface FragDecryptedData {
437
+ frag: Fragment;
438
+ payload: ArrayBuffer;
439
+ stats: {
440
+ tstart: number;
441
+ tdecrypt: number;
442
+ };
443
+ }
444
+
445
+ export interface FragParsingInitSegmentData {}
446
+
447
+ export interface FragParsingUserdataData {
448
+ id: string;
449
+ frag: Fragment;
450
+ details: LevelDetails;
451
+ samples: UserdataSample[];
452
+ }
453
+
454
+ export interface FragParsingMetadataData {
455
+ id: string;
456
+ frag: Fragment;
457
+ details: LevelDetails;
458
+ samples: MetadataSample[];
459
+ }
460
+
461
+ export interface FragParsedData {
462
+ frag: Fragment;
463
+ part: Part | null;
464
+ }
465
+
466
+ export interface FragBufferedData {
467
+ stats: LoadStats;
468
+ frag: Fragment;
469
+ part: Part | null;
470
+ id: string;
471
+ }
472
+
473
+ export interface LevelsUpdatedData {
474
+ levels: Array<Level>;
475
+ }
476
+
477
+ export interface KeyLoadingData {
478
+ frag: Fragment;
479
+ }
480
+
481
+ export interface KeyLoadedData {
482
+ frag: Fragment;
483
+ keyInfo: KeyLoaderInfo;
484
+ }
485
+
486
+ export interface BackBufferData {
487
+ bufferEnd: number;
488
+ }
489
+
490
+ /**
491
+ * @deprecated Use BackBufferData
492
+ */
493
+ export interface LiveBackBufferData extends BackBufferData {}
494
+
495
+ export interface SteeringManifestLoadedData {
496
+ steeringManifest: SteeringManifest;
497
+ url: string;
498
+ }
499
+
500
+ export interface AssetListLoadingData {
501
+ event: InterstitialEventWithAssetList;
502
+ }
503
+
504
+ export interface AssetListLoadedData {
505
+ event: InterstitialEventWithAssetList;
506
+ assetListResponse: AssetListJSON;
507
+ networkDetails: NullableNetworkDetails;
508
+ }
509
+
510
+ export interface InterstitialsUpdatedData {
511
+ events: InterstitialEvent[];
512
+ schedule: InterstitialScheduleItem[];
513
+ durations: InterstitialScheduleDurations;
514
+ removedIds: string[];
515
+ }
516
+
517
+ export interface InterstitialsBufferedToBoundaryData {
518
+ events: InterstitialEvent[];
519
+ schedule: InterstitialScheduleItem[];
520
+ bufferingIndex: number;
521
+ playingIndex: number;
522
+ }
523
+
524
+ export interface InterstitialAssetPlayerCreatedData {
525
+ asset: InterstitialAssetItem;
526
+ assetListIndex: number;
527
+ assetListResponse?: AssetListJSON;
528
+ event: InterstitialEvent;
529
+ player: HlsAssetPlayer;
530
+ }
531
+
532
+ export interface InterstitialStartedData {
533
+ event: InterstitialEvent;
534
+ schedule: InterstitialScheduleItem[];
535
+ scheduleIndex: number;
536
+ }
537
+
538
+ export interface InterstitialEndedData {
539
+ event: InterstitialEvent;
540
+ schedule: InterstitialScheduleItem[];
541
+ scheduleIndex: number;
542
+ }
543
+
544
+ export interface InterstitialAssetStartedData {
545
+ asset: InterstitialAssetItem;
546
+ assetListIndex: number;
547
+ event: InterstitialEvent;
548
+ schedule: InterstitialScheduleItem[];
549
+ scheduleIndex: number;
550
+ player: HlsAssetPlayer;
551
+ }
552
+
553
+ export interface InterstitialAssetEndedData {
554
+ asset: InterstitialAssetItem;
555
+ assetListIndex: number;
556
+ event: InterstitialEvent;
557
+ schedule: InterstitialScheduleItem[];
558
+ scheduleIndex: number;
559
+ player: HlsAssetPlayer;
560
+ }
561
+
562
+ export type InterstitialAssetErrorData = {
563
+ asset: InterstitialAssetItem | null;
564
+ assetListIndex: number;
565
+ event: InterstitialEvent | null;
566
+ schedule: InterstitialScheduleItem[] | null;
567
+ scheduleIndex: number;
568
+ player: HlsAssetPlayer | null;
569
+ } & ErrorData;
570
+
571
+ export interface InterstitialsPrimaryResumed {
572
+ schedule: InterstitialScheduleItem[];
573
+ scheduleIndex: number;
574
+ }
@@ -0,0 +1,23 @@
1
+ import type { SourceBufferName } from './buffer';
2
+ import type { FragLoadedData } from './events';
3
+ import type { MediaFragment } from '../loader/fragment';
4
+
5
+ export interface FragmentEntity {
6
+ body: MediaFragment;
7
+ // appendedPTS is the latest buffered presentation time within the fragment's time range.
8
+ // It is used to determine: which fragment is appended at any given position, and hls.currentLevel.
9
+ appendedPTS: number | null;
10
+ loaded: FragLoadedData | null;
11
+ buffered: boolean;
12
+ range: { [key in SourceBufferName]: FragmentBufferedRange };
13
+ }
14
+
15
+ export interface FragmentTimeRange {
16
+ startPTS: number;
17
+ endPTS: number;
18
+ }
19
+
20
+ export interface FragmentBufferedRange {
21
+ time: Array<FragmentTimeRange>;
22
+ partial: boolean;
23
+ }