@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,20 @@
1
+ import type EwmaBandWidthEstimator from '../utils/ewma-bandwidth-estimator';
2
+
3
+ export interface ComponentAPI {
4
+ destroy(): void;
5
+ }
6
+
7
+ export interface AbrComponentAPI extends ComponentAPI {
8
+ firstAutoLevel: number;
9
+ forcedAutoLevel: number;
10
+ nextAutoLevel: number;
11
+ readonly bwEstimator?: EwmaBandWidthEstimator;
12
+ resetEstimator(abrEwmaDefaultEstimate: number);
13
+ }
14
+
15
+ export interface NetworkComponentAPI extends ComponentAPI {
16
+ startLoad(startPosition: number, skipSeekToStartPosition?: boolean): void;
17
+ stopLoad(): void;
18
+ pauseBuffering?(): void;
19
+ resumeBuffering?(): void;
20
+ }
@@ -0,0 +1,208 @@
1
+ import type { RationalTimestamp } from '../utils/timescale-conversion';
2
+
3
+ export interface Demuxer {
4
+ demux(
5
+ data: Uint8Array,
6
+ timeOffset: number,
7
+ isSampleAes?: boolean,
8
+ flush?: boolean,
9
+ ): DemuxerResult;
10
+ demuxSampleAes(
11
+ data: Uint8Array,
12
+ keyData: KeyData,
13
+ timeOffset: number,
14
+ ): Promise<DemuxerResult>;
15
+ flush(timeOffset?: number): DemuxerResult | Promise<DemuxerResult>;
16
+ destroy(): void;
17
+ resetInitSegment(
18
+ initSegment: Uint8Array | undefined,
19
+ audioCodec: string | undefined,
20
+ videoCodec: string | undefined,
21
+ trackDuration: number,
22
+ );
23
+ resetTimeStamp(defaultInitPTS?: RationalTimestamp | null): void;
24
+ resetContiguity(): void;
25
+ }
26
+
27
+ export interface DemuxerResult {
28
+ audioTrack: DemuxedAudioTrack;
29
+ videoTrack: DemuxedVideoTrackBase;
30
+ id3Track: DemuxedMetadataTrack;
31
+ textTrack: DemuxedUserdataTrack;
32
+ }
33
+
34
+ export interface DemuxedTrack {
35
+ type: string;
36
+ id: number;
37
+ pid: number;
38
+ inputTimeScale: number;
39
+ sequenceNumber: number;
40
+ samples:
41
+ | AudioSample[]
42
+ | VideoSample[]
43
+ | MetadataSample[]
44
+ | UserdataSample[]
45
+ | Uint8Array;
46
+ timescale?: number;
47
+ container?: string;
48
+ dropped: number;
49
+ duration?: number;
50
+ pesData?: ElementaryStreamData | null;
51
+ codec?: string;
52
+ }
53
+
54
+ export interface PassthroughTrack extends DemuxedTrack {
55
+ sampleDuration: number;
56
+ samples: Uint8Array<ArrayBuffer>;
57
+ timescale: number;
58
+ duration: number;
59
+ codec: string;
60
+ supplemental: string | undefined;
61
+ }
62
+ export interface DemuxedAudioTrack extends DemuxedTrack {
63
+ type: 'audio';
64
+ segmentCodec: 'aac' | 'ac3' | 'mp3';
65
+ config?: number[] | Uint8Array;
66
+ samplerate?: number;
67
+ channelCount?: number;
68
+ manifestCodec?: string;
69
+ parsedCodec?: string;
70
+ samples: AudioSample[];
71
+ }
72
+
73
+ export type DemuxedAAC = DemuxedAudioTrack & {
74
+ segmentCodec: 'aac';
75
+ samples: AACAudioSample[];
76
+ };
77
+
78
+ export type DemuxedAC3 = DemuxedAudioTrack & {
79
+ segmentCodec: 'ac3';
80
+ config: Uint8Array;
81
+ };
82
+
83
+ export interface DemuxedVideoTrackBase extends DemuxedTrack {
84
+ width?: number;
85
+ height?: number;
86
+ pixelRatio?: [number, number];
87
+ audFound?: boolean;
88
+ vps?: Uint8Array[];
89
+ pps?: Uint8Array[];
90
+ sps?: Uint8Array[];
91
+ naluState?: number;
92
+ segmentCodec?: string;
93
+ manifestCodec?: string;
94
+ samples: VideoSample[] | Uint8Array;
95
+ params?: object;
96
+ }
97
+
98
+ export interface DemuxedVideoTrack extends DemuxedVideoTrackBase {
99
+ type: 'video';
100
+ segmentCodec: 'avc' | 'hevc';
101
+ samples: VideoSample[];
102
+ pixelRatio: [number, number];
103
+ width: number;
104
+ height: number;
105
+ }
106
+
107
+ export type DemuxedAVC1 = DemuxedVideoTrack & {
108
+ segmentCodec: 'avc';
109
+ pps: Uint8Array[];
110
+ sps: Uint8Array[];
111
+ };
112
+
113
+ export type DemuxedHEVC = DemuxedVideoTrack & {
114
+ segmentCodec: 'hevc';
115
+ params: {
116
+ general_profile_space: number;
117
+ general_tier_flag: number;
118
+ general_profile_idc: number;
119
+ general_profile_compatibility_flags: number[];
120
+ general_constraint_indicator_flags: number[];
121
+ general_level_idc: number;
122
+ min_spatial_segmentation_idc: number;
123
+ parallelismType: number;
124
+ chroma_format_idc: number;
125
+ bit_depth_luma_minus8: number;
126
+ bit_depth_chroma_minus8: number;
127
+ frame_rate: { fps: string; fixed: boolean };
128
+ temporal_id_nested: number;
129
+ num_temporal_layers: number;
130
+ };
131
+ pps: Uint8Array[];
132
+ sps: Uint8Array[];
133
+ vps: Uint8Array;
134
+ };
135
+
136
+ export interface DemuxedMetadataTrack extends DemuxedTrack {
137
+ samples: MetadataSample[];
138
+ }
139
+
140
+ export interface DemuxedUserdataTrack extends DemuxedTrack {
141
+ samples: UserdataSample[];
142
+ }
143
+
144
+ export enum MetadataSchema {
145
+ audioId3 = 'org.id3',
146
+ dateRange = 'com.apple.quicktime.HLS',
147
+ emsg = 'https://aomedia.org/emsg/ID3',
148
+ misbklv = 'urn:misb:KLV:bin:1910.1',
149
+ }
150
+ export interface MetadataSample {
151
+ pts: number;
152
+ dts: number;
153
+ duration: number;
154
+ len?: number;
155
+ data: Uint8Array;
156
+ type: MetadataSchema;
157
+ }
158
+
159
+ export interface UserdataSample {
160
+ pts: number;
161
+ bytes?: Uint8Array;
162
+ type?: number;
163
+ payloadType?: number;
164
+ uuid?: string;
165
+ userData?: string;
166
+ userDataBytes?: Uint8Array;
167
+ }
168
+
169
+ export interface VideoSample {
170
+ dts: number;
171
+ pts: number;
172
+ key: boolean;
173
+ frame: boolean;
174
+ units: VideoSampleUnit[];
175
+ length: number;
176
+ }
177
+
178
+ export interface VideoSampleUnit {
179
+ data: Uint8Array;
180
+ type: number;
181
+ state?: number;
182
+ }
183
+
184
+ export type AudioSample = {
185
+ unit: Uint8Array;
186
+ pts: number;
187
+ };
188
+
189
+ export type AACAudioSample = {
190
+ unit: Uint8Array<ArrayBuffer>;
191
+ };
192
+
193
+ export type AudioFrame = {
194
+ sample: AudioSample;
195
+ length: number;
196
+ missing: number;
197
+ };
198
+
199
+ export interface ElementaryStreamData {
200
+ data: Uint8Array[];
201
+ size: number;
202
+ }
203
+
204
+ export interface KeyData {
205
+ method: string;
206
+ key: Uint8Array<ArrayBuffer>;
207
+ iv: Uint8Array<ArrayBuffer>;
208
+ }