@remotion/media-parser 4.0.270 → 4.0.271

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 (332) hide show
  1. package/dist/aac-codecprivate.js +6 -13
  2. package/dist/add-avc-profile-to-track.js +5 -9
  3. package/dist/buffer-iterator.js +8 -13
  4. package/dist/combine-uint8-arrays.js +1 -5
  5. package/dist/containers/aac/parse-aac.js +9 -13
  6. package/dist/containers/aac/types.js +1 -2
  7. package/dist/containers/avc/codec-string.js +1 -5
  8. package/dist/containers/avc/color.js +3 -9
  9. package/dist/containers/avc/create-sps-pps-data.js +5 -9
  10. package/dist/containers/avc/interpret-sps.js +7 -13
  11. package/dist/containers/avc/key.js +1 -5
  12. package/dist/containers/avc/parse-avc.js +3 -7
  13. package/dist/containers/avc/sps-and-pps.js +1 -5
  14. package/dist/containers/flac/get-block-size.js +1 -5
  15. package/dist/containers/flac/get-channel-count.js +1 -5
  16. package/dist/containers/flac/get-duration-from-flac.js +1 -5
  17. package/dist/containers/flac/get-metadata-from-flac.js +1 -5
  18. package/dist/containers/flac/get-sample-rate.js +1 -5
  19. package/dist/containers/flac/parse-flac-frame.js +14 -19
  20. package/dist/containers/flac/parse-flac.js +15 -19
  21. package/dist/containers/flac/parse-header.js +1 -5
  22. package/dist/containers/flac/parse-metadata.js +1 -5
  23. package/dist/containers/flac/parse-streaminfo.js +3 -7
  24. package/dist/containers/flac/parse-unknown-block.js +1 -5
  25. package/dist/containers/flac/types.d.ts +2 -2
  26. package/dist/containers/flac/types.js +1 -2
  27. package/dist/containers/iso-base-media/base-media-box.js +1 -2
  28. package/dist/containers/iso-base-media/base-type.js +1 -2
  29. package/dist/containers/iso-base-media/esds/decoder-specific-config.js +1 -5
  30. package/dist/containers/iso-base-media/esds/esds-descriptors.js +5 -10
  31. package/dist/containers/iso-base-media/esds/esds.js +3 -7
  32. package/dist/containers/iso-base-media/ftyp.js +1 -5
  33. package/dist/containers/iso-base-media/get-actual-number-of-channels.js +4 -8
  34. package/dist/containers/iso-base-media/get-children.js +3 -7
  35. package/dist/containers/iso-base-media/get-keyframes.js +7 -11
  36. package/dist/containers/iso-base-media/get-moov-atom.js +21 -15
  37. package/dist/containers/iso-base-media/get-sample-positions-from-track.js +20 -24
  38. package/dist/containers/iso-base-media/get-video-codec-from-iso-track.d.ts +1 -1
  39. package/dist/containers/iso-base-media/get-video-codec-from-iso-track.js +3 -7
  40. package/dist/containers/iso-base-media/make-track.js +30 -34
  41. package/dist/containers/iso-base-media/mdat/mdat.js +16 -20
  42. package/dist/containers/iso-base-media/mdhd.js +1 -5
  43. package/dist/containers/iso-base-media/meta/hdlr.js +1 -5
  44. package/dist/containers/iso-base-media/meta/ilst.js +1 -5
  45. package/dist/containers/iso-base-media/moov/moov.js +3 -7
  46. package/dist/containers/iso-base-media/mvhd.js +7 -11
  47. package/dist/containers/iso-base-media/parse-boxes.js +5 -9
  48. package/dist/containers/iso-base-media/parse-icc-profile.js +4 -8
  49. package/dist/containers/iso-base-media/process-box.js +63 -67
  50. package/dist/containers/iso-base-media/stsd/av1c.js +1 -5
  51. package/dist/containers/iso-base-media/stsd/avcc.js +1 -5
  52. package/dist/containers/iso-base-media/stsd/colr.js +3 -7
  53. package/dist/containers/iso-base-media/stsd/ctts.js +1 -5
  54. package/dist/containers/iso-base-media/stsd/hvcc.js +3 -7
  55. package/dist/containers/iso-base-media/stsd/keys.js +1 -5
  56. package/dist/containers/iso-base-media/stsd/mebx.js +3 -7
  57. package/dist/containers/iso-base-media/stsd/pasp.js +1 -5
  58. package/dist/containers/iso-base-media/stsd/samples.js +8 -13
  59. package/dist/containers/iso-base-media/stsd/stco.js +1 -5
  60. package/dist/containers/iso-base-media/stsd/stsc.js +1 -5
  61. package/dist/containers/iso-base-media/stsd/stsd.js +3 -7
  62. package/dist/containers/iso-base-media/stsd/stss.js +1 -5
  63. package/dist/containers/iso-base-media/stsd/stsz.js +1 -5
  64. package/dist/containers/iso-base-media/stsd/stts.js +1 -5
  65. package/dist/containers/iso-base-media/tfdt.js +1 -5
  66. package/dist/containers/iso-base-media/tfhd.js +1 -5
  67. package/dist/containers/iso-base-media/tkhd.js +4 -8
  68. package/dist/containers/iso-base-media/to-date.js +1 -5
  69. package/dist/containers/iso-base-media/trak/trak.js +3 -7
  70. package/dist/containers/iso-base-media/traversal.d.ts +3 -2
  71. package/dist/containers/iso-base-media/traversal.js +42 -57
  72. package/dist/containers/iso-base-media/trun.js +2 -6
  73. package/dist/containers/iso-base-media/void-box.js +1 -2
  74. package/dist/containers/m3u/after-manifest-fetch.d.ts +5 -3
  75. package/dist/containers/m3u/after-manifest-fetch.js +13 -17
  76. package/dist/containers/m3u/fetch-m3u8-stream.d.ts +5 -1
  77. package/dist/containers/m3u/fetch-m3u8-stream.js +4 -12
  78. package/dist/containers/m3u/get-chunks.d.ts +1 -0
  79. package/dist/containers/m3u/get-chunks.js +6 -6
  80. package/dist/containers/m3u/get-duration-from-m3u.js +4 -8
  81. package/dist/containers/m3u/get-playlist.js +6 -12
  82. package/dist/containers/m3u/get-streams.d.ts +11 -5
  83. package/dist/containers/m3u/get-streams.js +5 -15
  84. package/dist/containers/m3u/iterate-over-segment-files.d.ts +19 -0
  85. package/dist/containers/m3u/iterate-over-segment-files.js +106 -0
  86. package/dist/containers/m3u/parse-directive.js +10 -10
  87. package/dist/containers/m3u/parse-m3u-manifest.js +3 -7
  88. package/dist/containers/m3u/parse-m3u-media-directive.d.ts +1 -0
  89. package/dist/containers/m3u/parse-m3u-media-directive.js +7 -7
  90. package/dist/containers/m3u/parse-m3u.js +13 -13
  91. package/dist/containers/m3u/parse-m3u8-text.js +3 -7
  92. package/dist/containers/m3u/parse-stream-inf.js +2 -7
  93. package/dist/containers/m3u/return-packets.d.ts +1 -1
  94. package/dist/containers/m3u/return-packets.js +14 -5
  95. package/dist/containers/m3u/run-over-m3u.js +10 -13
  96. package/dist/containers/m3u/sample-sorter.js +4 -8
  97. package/dist/containers/m3u/select-stream.d.ts +3 -2
  98. package/dist/containers/m3u/select-stream.js +9 -13
  99. package/dist/containers/m3u/types.d.ts +1 -1
  100. package/dist/containers/m3u/types.js +1 -2
  101. package/dist/containers/mp3/get-duration.js +5 -9
  102. package/dist/containers/mp3/get-frame-length.js +2 -7
  103. package/dist/containers/mp3/get-metadata-from-mp3.d.ts +2 -2
  104. package/dist/containers/mp3/get-metadata-from-mp3.js +1 -5
  105. package/dist/containers/mp3/id3-v1.js +1 -5
  106. package/dist/containers/mp3/id3.js +1 -5
  107. package/dist/containers/mp3/parse-mp3.js +7 -11
  108. package/dist/containers/mp3/parse-mpeg-header.js +10 -14
  109. package/dist/containers/mp3/samples-per-mpeg-file.js +1 -5
  110. package/dist/containers/riff/expect-riff-box.js +11 -15
  111. package/dist/containers/riff/get-duration.js +7 -12
  112. package/dist/containers/riff/get-tracks-from-avi.js +20 -28
  113. package/dist/containers/riff/is-movi.js +1 -5
  114. package/dist/containers/riff/parse-avih.js +1 -5
  115. package/dist/containers/riff/parse-isft.js +1 -5
  116. package/dist/containers/riff/parse-list-box.js +3 -7
  117. package/dist/containers/riff/parse-movi.js +13 -18
  118. package/dist/containers/riff/parse-riff-body.js +9 -13
  119. package/dist/containers/riff/parse-riff-box.js +9 -13
  120. package/dist/containers/riff/parse-riff-header.js +1 -5
  121. package/dist/containers/riff/parse-riff.js +5 -9
  122. package/dist/containers/riff/parse-strf.js +1 -5
  123. package/dist/containers/riff/parse-strh.js +3 -7
  124. package/dist/containers/riff/parse-video-section.js +7 -11
  125. package/dist/containers/riff/riff-box.js +1 -2
  126. package/dist/containers/riff/timescale.js +1 -4
  127. package/dist/containers/riff/traversal.js +7 -15
  128. package/dist/containers/transport-stream/adts-header.js +6 -10
  129. package/dist/containers/transport-stream/boxes.js +1 -2
  130. package/dist/containers/transport-stream/discard-rest-of-packet.js +2 -7
  131. package/dist/containers/transport-stream/find-separator.js +1 -4
  132. package/dist/containers/transport-stream/get-tracks.js +7 -12
  133. package/dist/containers/transport-stream/handle-aac-packet.js +12 -16
  134. package/dist/containers/transport-stream/handle-avc-packet.js +22 -26
  135. package/dist/containers/transport-stream/next-pes-header-store.js +1 -5
  136. package/dist/containers/transport-stream/parse-packet.js +13 -17
  137. package/dist/containers/transport-stream/parse-pat.js +5 -10
  138. package/dist/containers/transport-stream/parse-pes.js +1 -5
  139. package/dist/containers/transport-stream/parse-pmt.js +3 -7
  140. package/dist/containers/transport-stream/parse-stream-packet.js +13 -17
  141. package/dist/containers/transport-stream/parse-transport-stream.js +5 -9
  142. package/dist/containers/transport-stream/process-stream-buffers.js +10 -15
  143. package/dist/containers/transport-stream/traversal.js +4 -10
  144. package/dist/containers/wav/get-duration-from-wav.js +3 -8
  145. package/dist/containers/wav/get-metadata-from-wav.d.ts +2 -2
  146. package/dist/containers/wav/get-metadata-from-wav.js +1 -5
  147. package/dist/containers/wav/parse-data.js +5 -9
  148. package/dist/containers/wav/parse-fmt.js +3 -7
  149. package/dist/containers/wav/parse-header.js +1 -5
  150. package/dist/containers/wav/parse-id3.js +1 -5
  151. package/dist/containers/wav/parse-list.js +1 -5
  152. package/dist/containers/wav/parse-video-section.js +3 -7
  153. package/dist/containers/wav/parse-wav.js +15 -19
  154. package/dist/containers/wav/types.d.ts +2 -2
  155. package/dist/containers/wav/types.js +1 -2
  156. package/dist/containers/webm/allowed-partial-segments.js +1 -4
  157. package/dist/containers/webm/av1-codec-private.js +3 -7
  158. package/dist/containers/webm/color.js +6 -10
  159. package/dist/containers/webm/description.js +6 -10
  160. package/dist/containers/webm/get-ready-tracks.js +13 -18
  161. package/dist/containers/webm/get-sample-from-block.js +12 -16
  162. package/dist/containers/webm/make-track.js +43 -48
  163. package/dist/containers/webm/parse-ebml.js +14 -19
  164. package/dist/containers/webm/parse-webm-header.js +3 -7
  165. package/dist/containers/webm/segments/all-segments.js +168 -173
  166. package/dist/containers/webm/segments/block-simple-block-flags.js +4 -8
  167. package/dist/containers/webm/segments/track-entry.js +1 -5
  168. package/dist/containers/webm/segments.js +9 -13
  169. package/dist/containers/webm/traversal.js +37 -67
  170. package/dist/convert-audio-or-video-sample.js +1 -5
  171. package/dist/download-and-parse-media.js +44 -47
  172. package/dist/emit-available-info.js +38 -38
  173. package/dist/emitter.js +1 -5
  174. package/dist/errors.d.ts +2 -17
  175. package/dist/errors.js +10 -30
  176. package/dist/esm/fetch.mjs +93 -67
  177. package/dist/esm/index.mjs +679 -175
  178. package/dist/esm/node.mjs +59 -36
  179. package/dist/esm/universal.mjs +323 -0
  180. package/dist/esm/web-file.mjs +55 -43
  181. package/dist/esm/web.mjs +257 -0
  182. package/dist/esm/worker-server-entry.mjs +13056 -0
  183. package/dist/esm/worker-server.mjs +12914 -0
  184. package/dist/esm/worker-web-entry.mjs +12969 -0
  185. package/dist/esm/worker.mjs +439 -0
  186. package/dist/fetch.js +1 -17
  187. package/dist/file-types/bmp.js +3 -7
  188. package/dist/file-types/detect-file-type.js +24 -38
  189. package/dist/file-types/index.js +22 -26
  190. package/dist/file-types/jpeg.js +4 -9
  191. package/dist/file-types/pdf.js +3 -7
  192. package/dist/file-types/png.js +4 -9
  193. package/dist/file-types/webp.js +3 -7
  194. package/dist/forward-controller.js +1 -5
  195. package/dist/get-audio-codec.js +25 -38
  196. package/dist/get-container.d.ts +3 -3
  197. package/dist/get-container.js +5 -10
  198. package/dist/get-dimensions.js +8 -13
  199. package/dist/get-duration.js +27 -34
  200. package/dist/get-fields-from-callbacks.js +1 -5
  201. package/dist/get-fps.js +24 -34
  202. package/dist/get-is-hdr.js +5 -10
  203. package/dist/get-keyframes.js +6 -11
  204. package/dist/get-location.js +4 -9
  205. package/dist/get-number-of-audio-channels.js +2 -7
  206. package/dist/get-sample-aspect-ratio.js +17 -30
  207. package/dist/get-sample-positions-from-lpcm.js +5 -9
  208. package/dist/get-sample-positions.js +1 -5
  209. package/dist/get-sample-rate.js +2 -7
  210. package/dist/get-tracks.d.ts +5 -0
  211. package/dist/get-tracks.js +37 -44
  212. package/dist/get-video-codec.js +26 -34
  213. package/dist/has-all-info.js +33 -38
  214. package/dist/index.d.ts +15 -11
  215. package/dist/index.js +34 -48
  216. package/dist/init-video.d.ts +1 -1
  217. package/dist/init-video.js +47 -20
  218. package/dist/internal-parse-media.js +36 -40
  219. package/dist/is-audio-structure.d.ts +2 -2
  220. package/dist/is-audio-structure.js +1 -5
  221. package/dist/log.js +8 -12
  222. package/dist/make-hvc1-codec-strings.js +1 -5
  223. package/dist/media-parser-controller.js +7 -11
  224. package/dist/metadata/get-metadata.d.ts +4 -4
  225. package/dist/metadata/get-metadata.js +17 -22
  226. package/dist/metadata/metadata-from-iso.d.ts +3 -3
  227. package/dist/metadata/metadata-from-iso.js +12 -17
  228. package/dist/metadata/metadata-from-matroska.d.ts +2 -2
  229. package/dist/metadata/metadata-from-matroska.js +3 -7
  230. package/dist/metadata/metadata-from-riff.d.ts +2 -2
  231. package/dist/metadata/metadata-from-riff.js +3 -7
  232. package/dist/node-writer.js +1 -17
  233. package/dist/node.js +1 -17
  234. package/dist/options.d.ts +30 -24
  235. package/dist/options.js +1 -2
  236. package/dist/parse-media-on-browser-worker.d.ts +2 -0
  237. package/dist/parse-media-on-browser-worker.js +4 -0
  238. package/dist/parse-media-on-server-worker.d.ts +2 -0
  239. package/dist/parse-media-on-server-worker.js +4 -0
  240. package/dist/parse-media-on-web-worker.d.ts +2 -0
  241. package/dist/parse-media-on-web-worker.js +4 -0
  242. package/dist/parse-media-on-worker-entry.d.ts +2 -0
  243. package/dist/parse-media-on-worker-entry.js +269 -0
  244. package/dist/parse-media-on-worker.d.ts +2 -0
  245. package/dist/parse-media-on-worker.js +4 -0
  246. package/dist/parse-media.js +10 -13
  247. package/dist/parse-result.d.ts +3 -3
  248. package/dist/parse-result.js +1 -2
  249. package/dist/pause-signal.js +1 -5
  250. package/dist/perform-seek.js +6 -10
  251. package/dist/readers/fetch/get-body-and-reader.js +1 -5
  252. package/dist/readers/fetch/resolve-url.d.ts +1 -1
  253. package/dist/readers/fetch/resolve-url.js +1 -5
  254. package/dist/readers/from-fetch.d.ts +4 -1
  255. package/dist/readers/from-fetch.js +109 -94
  256. package/dist/readers/from-node.d.ts +4 -1
  257. package/dist/readers/from-node.js +58 -41
  258. package/dist/readers/from-web-file.d.ts +4 -1
  259. package/dist/readers/from-web-file.js +55 -49
  260. package/dist/readers/reader.d.ts +5 -1
  261. package/dist/readers/reader.js +1 -2
  262. package/dist/readers/universal.d.ts +2 -0
  263. package/dist/readers/universal.js +35 -0
  264. package/dist/readers/web.d.ts +2 -0
  265. package/dist/readers/web.js +22 -0
  266. package/dist/register-track.js +9 -15
  267. package/dist/remotion-license-acknowledge.js +4 -8
  268. package/dist/run-parse-iteration.js +26 -25
  269. package/dist/samples-from-moof.js +8 -12
  270. package/dist/skip.js +1 -5
  271. package/dist/state/aac-state.js +1 -5
  272. package/dist/state/can-skip-tracks.d.ts +2 -2
  273. package/dist/state/can-skip-tracks.js +3 -8
  274. package/dist/state/emitted-fields.js +1 -5
  275. package/dist/state/flac-state.js +1 -5
  276. package/dist/state/has-tracks-section.js +3 -7
  277. package/dist/state/images.js +1 -5
  278. package/dist/state/iso-base-media/cached-sample-positions.js +8 -13
  279. package/dist/state/iso-base-media/iso-state.js +5 -9
  280. package/dist/state/iso-base-media/moov-box.js +1 -5
  281. package/dist/state/keyframes.js +1 -5
  282. package/dist/state/last-eventloop-break.js +3 -7
  283. package/dist/state/m3u-state.d.ts +3 -0
  284. package/dist/state/m3u-state.js +16 -11
  285. package/dist/state/may-skip-video-data.js +3 -7
  286. package/dist/state/mp3.js +1 -5
  287. package/dist/state/need-samples-for-fields.js +1 -5
  288. package/dist/state/parser-state.d.ts +12 -10
  289. package/dist/state/parser-state.js +36 -41
  290. package/dist/state/riff.js +1 -5
  291. package/dist/state/sample-callbacks.js +8 -12
  292. package/dist/state/slow-duration-fps.js +1 -5
  293. package/dist/state/structure.d.ts +4 -4
  294. package/dist/state/structure.js +1 -5
  295. package/dist/state/transport-stream.js +3 -7
  296. package/dist/state/video-section.js +1 -5
  297. package/dist/state/webm.js +5 -9
  298. package/dist/throttled-progress.js +1 -5
  299. package/dist/truthy.js +1 -4
  300. package/dist/universal.d.ts +1 -0
  301. package/dist/universal.js +1 -0
  302. package/dist/version.d.ts +1 -1
  303. package/dist/version.js +1 -4
  304. package/dist/web-file.js +1 -17
  305. package/dist/web.d.ts +1 -0
  306. package/dist/web.js +1 -0
  307. package/dist/webcodec-sample-types.d.ts +6 -4
  308. package/dist/webcodec-sample-types.js +1 -2
  309. package/dist/worker/forward-controller.d.ts +3 -0
  310. package/dist/worker/forward-controller.js +20 -0
  311. package/dist/worker/serialize-error.d.ts +4 -0
  312. package/dist/worker/serialize-error.js +95 -0
  313. package/dist/worker/worker-types.d.ts +243 -0
  314. package/dist/worker/worker-types.js +1 -0
  315. package/dist/worker-bun-entry.d.ts +1 -0
  316. package/dist/worker-bun-entry.js +5 -0
  317. package/dist/worker-entry.d.ts +1 -0
  318. package/dist/worker-entry.js +5 -0
  319. package/dist/worker-server-entry.d.ts +1 -0
  320. package/dist/worker-server-entry.js +5 -0
  321. package/dist/worker-server.d.ts +2 -0
  322. package/dist/worker-server.js +381 -0
  323. package/dist/worker-web-entry.d.ts +1 -0
  324. package/dist/worker-web-entry.js +5 -0
  325. package/dist/worker.d.ts +2 -0
  326. package/dist/worker.js +267 -0
  327. package/dist/writers/node.js +16 -23
  328. package/dist/writers/writer.js +1 -2
  329. package/package.json +40 -21
  330. package/fetch.js +0 -2
  331. package/test.json +0 -663
  332. package/web-file.js +0 -2
@@ -1,53 +1,54 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runParseIteration = void 0;
4
- const parse_aac_1 = require("./containers/aac/parse-aac");
5
- const parse_flac_1 = require("./containers/flac/parse-flac");
6
- const parse_boxes_1 = require("./containers/iso-base-media/parse-boxes");
7
- const parse_m3u_1 = require("./containers/m3u/parse-m3u");
8
- const parse_mp3_1 = require("./containers/mp3/parse-mp3");
9
- const parse_riff_1 = require("./containers/riff/parse-riff");
10
- const parse_transport_stream_1 = require("./containers/transport-stream/parse-transport-stream");
11
- const parse_wav_1 = require("./containers/wav/parse-wav");
12
- const parse_webm_header_1 = require("./containers/webm/parse-webm-header");
13
- const init_video_1 = require("./init-video");
14
- const runParseIteration = async ({ state, mimeType, contentLength, name, }) => {
1
+ import { parseAac } from './containers/aac/parse-aac';
2
+ import { parseFlac } from './containers/flac/parse-flac';
3
+ import { parseIsoBaseMedia } from './containers/iso-base-media/parse-boxes';
4
+ import { parseM3u } from './containers/m3u/parse-m3u';
5
+ import { parseMp3 } from './containers/mp3/parse-mp3';
6
+ import { parseRiff } from './containers/riff/parse-riff';
7
+ import { parseTransportStream } from './containers/transport-stream/parse-transport-stream';
8
+ import { parseWav } from './containers/wav/parse-wav';
9
+ import { parseWebm } from './containers/webm/parse-webm-header';
10
+ import { initVideo } from './init-video';
11
+ export const runParseIteration = async ({ state, mimeType, contentLength, name, }) => {
15
12
  const structure = state.getStructureOrNull();
16
13
  // m3u8 is busy parsing the chunks once the manifest has been read
17
14
  if (structure && structure.type === 'm3u') {
18
- return (0, parse_m3u_1.parseM3u)({ state });
15
+ return parseM3u({ state });
19
16
  }
20
17
  if (state.iterator.bytesRemaining() === 0) {
21
18
  return Promise.reject(new Error('no bytes'));
22
19
  }
23
20
  if (structure === null) {
24
- await (0, init_video_1.initVideo)({ state, mimeType, name, contentLength });
21
+ await initVideo({
22
+ state,
23
+ mimeType,
24
+ name,
25
+ contentLength,
26
+ });
25
27
  return null;
26
28
  }
27
29
  if (structure.type === 'riff') {
28
- return (0, parse_riff_1.parseRiff)(state);
30
+ return parseRiff(state);
29
31
  }
30
32
  if (structure.type === 'mp3') {
31
- return (0, parse_mp3_1.parseMp3)(state);
33
+ return parseMp3(state);
32
34
  }
33
35
  if (structure.type === 'iso-base-media') {
34
- return (0, parse_boxes_1.parseIsoBaseMedia)(state);
36
+ return parseIsoBaseMedia(state);
35
37
  }
36
38
  if (structure.type === 'matroska') {
37
- return (0, parse_webm_header_1.parseWebm)(state);
39
+ return parseWebm(state);
38
40
  }
39
41
  if (structure.type === 'transport-stream') {
40
- return (0, parse_transport_stream_1.parseTransportStream)(state);
42
+ return parseTransportStream(state);
41
43
  }
42
44
  if (structure.type === 'wav') {
43
- return (0, parse_wav_1.parseWav)(state);
45
+ return parseWav(state);
44
46
  }
45
47
  if (structure.type === 'aac') {
46
- return (0, parse_aac_1.parseAac)(state);
48
+ return parseAac(state);
47
49
  }
48
50
  if (structure.type === 'flac') {
49
- return (0, parse_flac_1.parseFlac)({ state, iterator: state.iterator });
51
+ return parseFlac({ state, iterator: state.iterator });
50
52
  }
51
53
  return Promise.reject(new Error('Unknown video format ' + structure));
52
54
  };
53
- exports.runParseIteration = runParseIteration;
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSamplesFromMoof = void 0;
4
- const traversal_1 = require("./containers/iso-base-media/traversal");
1
+ import { getTfdtBox, getTfhdBox, getTrunBoxes, } from './containers/iso-base-media/traversal';
5
2
  const getSamplesFromTraf = (trafSegment, moofOffset) => {
6
- var _a, _b, _c, _d, _e, _f;
3
+ var _a, _b, _c, _d, _e, _f, _g;
7
4
  if (trafSegment.type !== 'regular-box' || trafSegment.boxType !== 'traf') {
8
5
  throw new Error('Expected traf-box');
9
6
  }
10
- const tfhdBox = (0, traversal_1.getTfhdBox)(trafSegment);
7
+ const tfhdBox = getTfhdBox(trafSegment);
11
8
  const defaultSampleDuration = (_a = tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleDuration) !== null && _a !== void 0 ? _a : null;
12
9
  const defaultSampleSize = (_b = tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleSize) !== null && _b !== void 0 ? _b : null;
13
10
  const defaultSampleFlags = (_c = tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleFlags) !== null && _c !== void 0 ? _c : null;
14
- const tfdtBox = (0, traversal_1.getTfdtBox)(trafSegment);
15
- const trunBoxes = (0, traversal_1.getTrunBoxes)(trafSegment);
11
+ const tfdtBox = getTfdtBox(trafSegment);
12
+ const trunBoxes = getTrunBoxes(trafSegment);
16
13
  let time = 0;
17
14
  let offset = 0;
18
15
  let dataOffset = 0;
@@ -47,7 +44,7 @@ const getSamplesFromTraf = (trafSegment, moofOffset) => {
47
44
  const samplePosition = {
48
45
  offset: offset + (moofOffset !== null && moofOffset !== void 0 ? moofOffset : 0) + (dataOffset !== null && dataOffset !== void 0 ? dataOffset : 0),
49
46
  dts,
50
- cts: dts,
47
+ cts: dts + ((_g = sample.sampleCompositionTimeOffset) !== null && _g !== void 0 ? _g : 0),
51
48
  duration,
52
49
  isKeyframe: keyframe,
53
50
  size,
@@ -60,17 +57,16 @@ const getSamplesFromTraf = (trafSegment, moofOffset) => {
60
57
  }
61
58
  return samples;
62
59
  };
63
- const getSamplesFromMoof = ({ moofBox, trackId, }) => {
60
+ export const getSamplesFromMoof = ({ moofBox, trackId, }) => {
64
61
  if (moofBox.type !== 'regular-box') {
65
62
  throw new Error('Expected moof-box');
66
63
  }
67
64
  const trafs = moofBox.children.filter((c) => c.type === 'regular-box' && c.boxType === 'traf');
68
65
  const mapped = trafs.map((traf) => {
69
- const tfhdBox = (0, traversal_1.getTfhdBox)(traf);
66
+ const tfhdBox = getTfhdBox(traf);
70
67
  return (tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.trackId) === trackId
71
68
  ? getSamplesFromTraf(traf, moofBox.offset)
72
69
  : [];
73
70
  });
74
71
  return mapped.flat(1);
75
72
  };
76
- exports.getSamplesFromMoof = getSamplesFromMoof;
package/dist/skip.js CHANGED
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeSkip = void 0;
4
- const makeSkip = (skipTo) => ({
1
+ export const makeSkip = (skipTo) => ({
5
2
  action: 'skip',
6
3
  skipTo,
7
4
  });
8
- exports.makeSkip = makeSkip;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.aacState = void 0;
4
- const aacState = () => {
1
+ export const aacState = () => {
5
2
  const samples = [];
6
3
  return {
7
4
  addSample: ({ offset, size }) => {
@@ -14,4 +11,3 @@ const aacState = () => {
14
11
  getSamples: () => samples,
15
12
  };
16
13
  };
17
- exports.aacState = aacState;
@@ -1,9 +1,9 @@
1
1
  import type { Options, ParseMediaFields } from '../options';
2
- import type { Structure } from '../parse-result';
2
+ import type { MediaParserStructureUnstable } from '../parse-result';
3
3
  import type { StructureState } from './structure';
4
4
  export declare const needsTracksForField: ({ field, structure, }: {
5
5
  field: keyof Options<ParseMediaFields>;
6
- structure: Structure;
6
+ structure: MediaParserStructureUnstable;
7
7
  }) => boolean;
8
8
  export declare const makeCanSkipTracksState: ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }: {
9
9
  hasAudioTrackHandlers: boolean;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeCanSkipTracksState = exports.needsTracksForField = void 0;
4
- const needsTracksForField = ({ field, structure, }) => {
1
+ export const needsTracksForField = ({ field, structure, }) => {
5
2
  if (field === 'dimensions') {
6
3
  if (structure.type === 'riff') {
7
4
  return false;
@@ -41,8 +38,7 @@ const needsTracksForField = ({ field, structure, }) => {
41
38
  }
42
39
  throw new Error(`field not implemeted ${field}`);
43
40
  };
44
- exports.needsTracksForField = needsTracksForField;
45
- const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }) => {
41
+ export const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }) => {
46
42
  return {
47
43
  canSkipTracks: () => {
48
44
  if (hasAudioTrackHandlers || hasVideoTrackHandlers) {
@@ -50,8 +46,7 @@ const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHa
50
46
  }
51
47
  const keys = Object.keys(fields !== null && fields !== void 0 ? fields : {});
52
48
  const selectedKeys = keys.filter((k) => fields[k]);
53
- return !selectedKeys.some((k) => (0, exports.needsTracksForField)({ field: k, structure: structure.getStructure() }));
49
+ return !selectedKeys.some((k) => needsTracksForField({ field: k, structure: structure.getStructure() }));
54
50
  },
55
51
  };
56
52
  };
57
- exports.makeCanSkipTracksState = makeCanSkipTracksState;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emittedState = void 0;
4
- const emittedState = () => {
1
+ export const emittedState = () => {
5
2
  const emittedFields = {
6
3
  audioCodec: false,
7
4
  container: false,
@@ -34,4 +31,3 @@ const emittedState = () => {
34
31
  };
35
32
  return emittedFields;
36
33
  };
37
- exports.emittedState = emittedState;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flacState = void 0;
4
- const flacState = () => {
1
+ export const flacState = () => {
5
2
  let blockingBitStrategy;
6
3
  return {
7
4
  setBlockingBitStrategy: (strategy) => {
@@ -10,4 +7,3 @@ const flacState = () => {
10
7
  getBlockingBitStrategy: () => blockingBitStrategy,
11
8
  };
12
9
  };
13
- exports.flacState = flacState;
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeTracksSectionState = void 0;
4
- const log_1 = require("../log");
5
- const makeTracksSectionState = (canSkipTracksState) => {
1
+ import { Log } from '../log';
2
+ export const makeTracksSectionState = (canSkipTracksState) => {
6
3
  const tracks = [];
7
4
  let doneWithTracks = false;
8
5
  return {
@@ -12,7 +9,7 @@ const makeTracksSectionState = (canSkipTracksState) => {
12
9
  if (doneWithTracks) {
13
10
  throw new Error('Error in Media Parser: Tracks have already been parsed');
14
11
  }
15
- log_1.Log.verbose(logLevel, 'All tracks have been parsed');
12
+ Log.verbose(logLevel, 'All tracks have been parsed');
16
13
  doneWithTracks = true;
17
14
  },
18
15
  addTrack: (track) => {
@@ -32,4 +29,3 @@ const makeTracksSectionState = (canSkipTracksState) => {
32
29
  },
33
30
  };
34
31
  };
35
- exports.makeTracksSectionState = makeTracksSectionState;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.imagesState = void 0;
4
- const imagesState = () => {
1
+ export const imagesState = () => {
5
2
  const images = [];
6
3
  const addImage = (image) => {
7
4
  images.push(image);
@@ -11,4 +8,3 @@ const imagesState = () => {
11
8
  addImage,
12
9
  };
13
10
  };
14
- exports.imagesState = imagesState;
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cachedSamplePositionsState = exports.calculateFlatSamples = void 0;
4
- const get_sample_positions_from_track_1 = require("../../containers/iso-base-media/get-sample-positions-from-track");
5
- const traversal_1 = require("../../containers/iso-base-media/traversal");
6
- const get_tracks_1 = require("../../get-tracks");
7
- const calculateFlatSamples = (state) => {
8
- const tracks = (0, get_tracks_1.getTracks)(state);
1
+ import { getSamplePositionsFromTrack } from '../../containers/iso-base-media/get-sample-positions-from-track';
2
+ import { getMoofBoxes } from '../../containers/iso-base-media/traversal';
3
+ import { getTracks } from '../../get-tracks';
4
+ export const calculateFlatSamples = (state) => {
5
+ const tracks = getTracks(state);
9
6
  const allTracks = [
10
7
  ...tracks.videoTracks,
11
8
  ...tracks.audioTracks,
@@ -13,9 +10,9 @@ const calculateFlatSamples = (state) => {
13
10
  ];
14
11
  const flatSamples = allTracks
15
12
  .map((track) => {
16
- const samplePositions = (0, get_sample_positions_from_track_1.getSamplePositionsFromTrack)({
13
+ const samplePositions = getSamplePositionsFromTrack({
17
14
  trakBox: track.trakBox,
18
- moofBoxes: (0, traversal_1.getMoofBoxes)(state.getIsoStructure().boxes),
15
+ moofBoxes: getMoofBoxes(state.getIsoStructure().boxes),
19
16
  });
20
17
  if (!samplePositions) {
21
18
  throw new Error('No sample positions');
@@ -30,8 +27,7 @@ const calculateFlatSamples = (state) => {
30
27
  .flat(1);
31
28
  return flatSamples;
32
29
  };
33
- exports.calculateFlatSamples = calculateFlatSamples;
34
- const cachedSamplePositionsState = () => {
30
+ export const cachedSamplePositionsState = () => {
35
31
  const cachedForMdatStar = {};
36
32
  return {
37
33
  getSamples: (mdatStart) => {
@@ -45,4 +41,3 @@ const cachedSamplePositionsState = () => {
45
41
  },
46
42
  };
47
43
  };
48
- exports.cachedSamplePositionsState = cachedSamplePositionsState;
@@ -1,12 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isoBaseMediaState = void 0;
4
- const cached_sample_positions_1 = require("./cached-sample-positions");
5
- const moov_box_1 = require("./moov-box");
6
- const isoBaseMediaState = () => {
1
+ import { cachedSamplePositionsState } from './cached-sample-positions';
2
+ import { moovState } from './moov-box';
3
+ export const isoBaseMediaState = () => {
7
4
  return {
8
- flatSamples: (0, cached_sample_positions_1.cachedSamplePositionsState)(),
9
- moov: (0, moov_box_1.moovState)(),
5
+ flatSamples: cachedSamplePositionsState(),
6
+ moov: moovState(),
10
7
  };
11
8
  };
12
- exports.isoBaseMediaState = isoBaseMediaState;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.moovState = void 0;
4
- const moovState = () => {
1
+ export const moovState = () => {
5
2
  let moovBox = null;
6
3
  return {
7
4
  setMoovBox: (moov) => {
@@ -10,4 +7,3 @@ const moovState = () => {
10
7
  getMoovBox: () => moovBox,
11
8
  };
12
9
  };
13
- exports.moovState = moovState;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.keyframesState = void 0;
4
- const keyframesState = () => {
1
+ export const keyframesState = () => {
5
2
  const keyframes = [];
6
3
  return {
7
4
  addKeyframe: (keyframe) => {
@@ -12,4 +9,3 @@ const keyframesState = () => {
12
9
  },
13
10
  };
14
11
  };
15
- exports.keyframesState = keyframesState;
@@ -1,18 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.eventLoopState = void 0;
4
- const log_1 = require("../log");
5
- const eventLoopState = (logLevel) => {
1
+ import { Log } from '../log';
2
+ export const eventLoopState = (logLevel) => {
6
3
  let lastEventLoopBreak = Date.now();
7
4
  const eventLoopBreakIfNeeded = async () => {
8
5
  if (Date.now() - lastEventLoopBreak > 2000) {
9
6
  await new Promise((resolve) => {
10
7
  setTimeout(() => resolve(), 50);
11
8
  });
12
- log_1.Log.verbose(logLevel, '10ms event loop break');
9
+ Log.verbose(logLevel, '10ms event loop break');
13
10
  lastEventLoopBreak = Date.now();
14
11
  }
15
12
  };
16
13
  return { eventLoopBreakIfNeeded };
17
14
  };
18
- exports.eventLoopState = eventLoopState;
@@ -1,5 +1,6 @@
1
1
  import type { M3uAssociatedPlaylist, M3uStream } from '../containers/m3u/get-streams';
2
2
  import type { LogLevel } from '../log';
3
+ import type { IsoBaseMediaStructure } from '../parse-result';
3
4
  import type { OnAudioSample, OnVideoSample } from '../webcodec-sample-types';
4
5
  export type M3uStreamOrInitialUrl = {
5
6
  type: 'selected-stream';
@@ -43,5 +44,7 @@ export declare const m3uState: (logLevel: LogLevel) => {
43
44
  addVideoSample: (src: string, sample: import("../webcodec-sample-types").AudioOrVideoSample) => Promise<void>;
44
45
  getNextStreamToRun: (streams: string[]) => string;
45
46
  };
47
+ setMp4HeaderSegment: (playlistUrl: string, structure: IsoBaseMediaStructure) => void;
48
+ getMp4HeaderSegment: (playlistUrl: string) => IsoBaseMediaStructure;
46
49
  };
47
50
  export type M3uState = ReturnType<typeof m3uState>;
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.m3uState = void 0;
4
- const sample_sorter_1 = require("../containers/m3u/sample-sorter");
5
- const log_1 = require("../log");
6
- const m3uState = (logLevel) => {
1
+ import { sampleSorter } from '../containers/m3u/sample-sorter';
2
+ import { Log } from '../log';
3
+ export const m3uState = (logLevel) => {
7
4
  let selectedMainPlaylist = null;
8
5
  let associatedPlaylists = null;
9
6
  const hasEmittedVideoTrack = {};
@@ -20,16 +17,23 @@ const m3uState = (logLevel) => {
20
17
  }
21
18
  const playlistUrl = selectedMainPlaylist.type === 'initial-url'
22
19
  ? selectedMainPlaylist.url
23
- : selectedMainPlaylist.stream.url;
20
+ : selectedMainPlaylist.stream.src;
24
21
  return playlistUrl;
25
22
  };
26
23
  const getSelectedPlaylists = () => {
27
24
  return [
28
25
  getMainPlaylistUrl(),
29
- ...(associatedPlaylists !== null && associatedPlaylists !== void 0 ? associatedPlaylists : []).map((p) => p.url),
26
+ ...(associatedPlaylists !== null && associatedPlaylists !== void 0 ? associatedPlaylists : []).map((p) => p.src),
30
27
  ];
31
28
  };
32
29
  const getAllChunksProcessedForPlaylist = (src) => allChunksProcessed[src];
30
+ const mp4HeaderSegments = {};
31
+ const setMp4HeaderSegment = (playlistUrl, structure) => {
32
+ mp4HeaderSegments[playlistUrl] = structure;
33
+ };
34
+ const getMp4HeaderSegment = (playlistUrl) => {
35
+ return mp4HeaderSegments[playlistUrl];
36
+ };
33
37
  return {
34
38
  setSelectedMainPlaylist: (stream) => {
35
39
  selectedMainPlaylist = stream;
@@ -96,7 +100,7 @@ const m3uState = (logLevel) => {
96
100
  if (values.length === 0) {
97
101
  return;
98
102
  }
99
- log_1.Log.trace(logLevel, `Aborting ${values.length} M3U stream runs`);
103
+ Log.trace(logLevel, `Aborting ${values.length} M3U stream runs`);
100
104
  values.forEach((run) => {
101
105
  run.abort();
102
106
  });
@@ -106,7 +110,8 @@ const m3uState = (logLevel) => {
106
110
  },
107
111
  getAssociatedPlaylists: () => associatedPlaylists,
108
112
  getSelectedPlaylists,
109
- sampleSorter: (0, sample_sorter_1.sampleSorter)({ logLevel, getAllChunksProcessedForPlaylist }),
113
+ sampleSorter: sampleSorter({ logLevel, getAllChunksProcessedForPlaylist }),
114
+ setMp4HeaderSegment,
115
+ getMp4HeaderSegment,
110
116
  };
111
117
  };
112
- exports.m3uState = m3uState;
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.maySkipVideoData = void 0;
4
- const need_samples_for_fields_1 = require("./need-samples-for-fields");
5
- const maySkipVideoData = ({ state }) => {
1
+ import { needsToIterateOverSamples } from './need-samples-for-fields';
2
+ export const maySkipVideoData = ({ state }) => {
6
3
  const hasAllTracksAndNoCallbacks = state.callbacks.tracks.hasAllTracks() &&
7
4
  Object.values(state.callbacks.videoSampleCallbacks).length === 0 &&
8
5
  Object.values(state.callbacks.audioSampleCallbacks).length === 0;
@@ -10,9 +7,8 @@ const maySkipVideoData = ({ state }) => {
10
7
  !state.callbacks.hasVideoTrackHandlers;
11
8
  const noCallbacksNeeded = hasNoTrackHandlers || hasAllTracksAndNoCallbacks;
12
9
  return (noCallbacksNeeded &&
13
- !(0, need_samples_for_fields_1.needsToIterateOverSamples)({
10
+ !needsToIterateOverSamples({
14
11
  emittedFields: state.emittedFields,
15
12
  fields: state.fields,
16
13
  }));
17
14
  };
18
- exports.maySkipVideoData = maySkipVideoData;
package/dist/state/mp3.js CHANGED
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeMp3State = void 0;
4
- const makeMp3State = () => {
1
+ export const makeMp3State = () => {
5
2
  let mp3Info = null;
6
3
  // cbr = constant bit rate
7
4
  let cbrMp3Info = null;
@@ -16,4 +13,3 @@ const makeMp3State = () => {
16
13
  },
17
14
  };
18
15
  };
19
- exports.makeMp3State = makeMp3State;
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.needsToIterateOverSamples = void 0;
4
1
  const needsSamples = {
5
2
  slowDurationInSeconds: true,
6
3
  slowFps: true,
@@ -31,9 +28,8 @@ const needsSamples = {
31
28
  slowVideoBitrate: true,
32
29
  m3uStreams: false,
33
30
  };
34
- const needsToIterateOverSamples = ({ fields, emittedFields, }) => {
31
+ export const needsToIterateOverSamples = ({ fields, emittedFields, }) => {
35
32
  const keys = Object.keys(fields !== null && fields !== void 0 ? fields : {});
36
33
  const selectedKeys = keys.filter((k) => fields[k]);
37
34
  return selectedKeys.some((k) => needsSamples[k] && !emittedFields[k]);
38
35
  };
39
- exports.needsToIterateOverSamples = needsToIterateOverSamples;
@@ -4,6 +4,7 @@ import type { SelectM3uAssociatedPlaylistsFn, SelectM3uStreamFn } from '../conta
4
4
  import { type LogLevel } from '../log';
5
5
  import type { MediaParserController } from '../media-parser-controller';
6
6
  import type { OnDiscardedData, Options, ParseMediaFields, ParseMediaMode, ParseMediaSrc } from '../options';
7
+ import type { IsoBaseMediaStructure } from '../parse-result';
7
8
  import type { ReaderInterface } from '../readers/reader';
8
9
  import type { OnAudioTrack, OnVideoTrack } from '../webcodec-sample-types';
9
10
  export type InternalStats = {
@@ -14,7 +15,7 @@ export type SpsAndPps = {
14
15
  sps: AvcProfileInfo;
15
16
  pps: AvcPPs;
16
17
  };
17
- export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, controller, fields, onAudioTrack, onVideoTrack, contentLength, logLevel, mode, src, readerInterface, onDiscardedData, selectM3uStreamFn, selectM3uAssociatedPlaylistsFn, }: {
18
+ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, controller, fields, onAudioTrack, onVideoTrack, contentLength, logLevel, mode, src, readerInterface, onDiscardedData, selectM3uStreamFn, selectM3uAssociatedPlaylistsFn, mp4HeaderSegment, }: {
18
19
  hasAudioTrackHandlers: boolean;
19
20
  hasVideoTrackHandlers: boolean;
20
21
  controller: MediaParserController;
@@ -29,6 +30,7 @@ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHan
29
30
  onDiscardedData: OnDiscardedData | null;
30
31
  selectM3uStreamFn: SelectM3uStreamFn;
31
32
  selectM3uAssociatedPlaylistsFn: SelectM3uAssociatedPlaylistsFn;
33
+ mp4HeaderSegment: IsoBaseMediaStructure | null;
32
34
  }) => {
33
35
  onAudioTrack: OnAudioTrack | null;
34
36
  onVideoTrack: OnVideoTrack | null;
@@ -125,19 +127,17 @@ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHan
125
127
  };
126
128
  controller: MediaParserController;
127
129
  mode: ParseMediaMode;
128
- eventLoop: {
129
- eventLoopBreakIfNeeded: () => Promise<void>;
130
- };
131
130
  src: ParseMediaSrc;
132
131
  readerInterface: ReaderInterface;
133
132
  discardReadBytes: (force: boolean) => Promise<void>;
134
133
  selectM3uStreamFn: SelectM3uStreamFn;
135
134
  selectM3uAssociatedPlaylistsFn: SelectM3uAssociatedPlaylistsFn;
136
- getStructureOrNull: () => import("../parse-result").Structure | null;
137
- getStructure: () => import("../parse-result").Structure;
138
- setStructure: (value: import("../parse-result").Structure) => void;
135
+ mp4HeaderSegment: IsoBaseMediaStructure | null;
136
+ getStructureOrNull: () => import("../parse-result").MediaParserStructureUnstable | null;
137
+ getStructure: () => import("../parse-result").MediaParserStructureUnstable;
138
+ setStructure: (value: import("../parse-result").MediaParserStructureUnstable) => void;
139
139
  getFlacStructure: () => import("../containers/flac/types").FlacStructure;
140
- getIsoStructure: () => import("../parse-result").IsoBaseMediaStructure;
140
+ getIsoStructure: () => IsoBaseMediaStructure;
141
141
  getMp3Structure: () => import("../parse-result").Mp3Structure;
142
142
  getM3uStructure: () => import("../containers/m3u/types").M3uStructure;
143
143
  getRiffStructure: () => import("../containers/riff/riff-box").RiffStructure;
@@ -228,8 +228,8 @@ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHan
228
228
  setTracksDone: (playlistUrl: string) => boolean;
229
229
  getM3uStreamRun: (playlistUrl: string) => import("./m3u-state").ExistingM3uRun;
230
230
  abortM3UStreamRuns: () => void;
231
- setAssociatedPlaylists: (playlists: import("../containers/m3u/get-streams").M3uAssociatedPlaylist[]) => void;
232
- getAssociatedPlaylists: () => import("../containers/m3u/get-streams").M3uAssociatedPlaylist[] | null;
231
+ setAssociatedPlaylists: (playlists: import("..").M3uAssociatedPlaylist[]) => void;
232
+ getAssociatedPlaylists: () => import("..").M3uAssociatedPlaylist[] | null;
233
233
  getSelectedPlaylists: () => string[];
234
234
  sampleSorter: {
235
235
  addToStreamWithTrack: (src: string) => void;
@@ -239,6 +239,8 @@ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHan
239
239
  addVideoSample: (src: string, sample: import("../webcodec-sample-types").AudioOrVideoSample) => Promise<void>;
240
240
  getNextStreamToRun: (streams: string[]) => string;
241
241
  };
242
+ setMp4HeaderSegment: (playlistUrl: string, structure: IsoBaseMediaStructure) => void;
243
+ getMp4HeaderSegment: (playlistUrl: string) => IsoBaseMediaStructure;
242
244
  };
243
245
  callbacks: {
244
246
  registerVideoSampleCallback: (id: number, callback: import("../webcodec-sample-types").OnVideoSample | null) => Promise<void>;