@remotion/media-parser 4.0.249 → 4.0.251

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 (405) hide show
  1. package/dist/add-avc-profile-to-track.js +2 -2
  2. package/dist/buffer-iterator.d.ts +3 -5
  3. package/dist/buffer-iterator.js +66 -50
  4. package/dist/containers/aac/parse-aac.d.ts +3 -0
  5. package/dist/containers/aac/parse-aac.js +83 -0
  6. package/dist/containers/aac/types.d.ts +4 -0
  7. package/dist/{boxes → containers}/avc/key.d.ts +1 -1
  8. package/dist/containers/flac/get-block-size.d.ts +2 -0
  9. package/dist/containers/flac/get-block-size.js +26 -0
  10. package/dist/containers/flac/get-channel-count.d.ts +2 -0
  11. package/dist/containers/flac/get-channel-count.js +36 -0
  12. package/dist/containers/flac/get-duration-from-flac.d.ts +2 -0
  13. package/dist/containers/flac/get-duration-from-flac.js +15 -0
  14. package/dist/containers/flac/get-metadata-from-flac.d.ts +2 -0
  15. package/dist/containers/flac/get-metadata-from-flac.js +11 -0
  16. package/dist/containers/flac/get-sample-rate.d.ts +3 -0
  17. package/dist/containers/flac/get-sample-rate.js +60 -0
  18. package/dist/containers/flac/parse-flac-frame.d.ts +15 -0
  19. package/dist/containers/flac/parse-flac-frame.js +175 -0
  20. package/dist/{boxes/riff/parse-box.d.ts → containers/flac/parse-flac.d.ts} +1 -3
  21. package/dist/containers/flac/parse-flac.js +54 -0
  22. package/dist/{boxes/mp3/parse-mpeg-header.d.ts → containers/flac/parse-header.d.ts} +4 -3
  23. package/dist/containers/flac/parse-header.js +10 -0
  24. package/dist/{boxes/mp3/parse-mp3.d.ts → containers/flac/parse-metadata.d.ts} +4 -4
  25. package/dist/containers/flac/parse-metadata.js +24 -0
  26. package/dist/{boxes/webm/parse-webm-header.d.ts → containers/flac/parse-streaminfo.d.ts} +2 -4
  27. package/dist/containers/flac/parse-streaminfo.js +53 -0
  28. package/dist/containers/flac/parse-unknown-block.d.ts +8 -0
  29. package/dist/containers/flac/parse-unknown-block.js +11 -0
  30. package/dist/containers/flac/types.d.ts +26 -0
  31. package/dist/containers/iso-base-media/base-media-box.d.ts +40 -0
  32. package/dist/containers/iso-base-media/get-children.d.ts +6 -0
  33. package/dist/containers/iso-base-media/get-children.js +21 -0
  34. package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.d.ts +1 -1
  35. package/dist/containers/iso-base-media/mdat/mdat.d.ts +2 -0
  36. package/dist/containers/iso-base-media/mdat/mdat.js +91 -0
  37. package/dist/containers/iso-base-media/moov/moov.d.ts +12 -0
  38. package/dist/containers/iso-base-media/moov/moov.js +17 -0
  39. package/dist/containers/iso-base-media/parse-boxes.d.ts +3 -0
  40. package/dist/containers/iso-base-media/parse-boxes.js +40 -0
  41. package/dist/containers/iso-base-media/process-box.d.ts +3 -0
  42. package/dist/{boxes → containers}/iso-base-media/process-box.js +49 -147
  43. package/dist/{boxes → containers}/iso-base-media/stsd/mebx.d.ts +1 -6
  44. package/dist/containers/iso-base-media/stsd/mebx.js +22 -0
  45. package/dist/{boxes → containers}/iso-base-media/stsd/samples.d.ts +6 -16
  46. package/dist/{boxes → containers}/iso-base-media/stsd/samples.js +26 -71
  47. package/dist/{boxes → containers}/iso-base-media/stsd/stsd.d.ts +1 -6
  48. package/dist/{boxes → containers}/iso-base-media/stsd/stsd.js +3 -6
  49. package/dist/containers/iso-base-media/trak/trak.d.ts +12 -0
  50. package/dist/containers/iso-base-media/trak/trak.js +17 -0
  51. package/dist/{boxes → containers}/iso-base-media/traversal.d.ts +2 -3
  52. package/dist/{boxes → containers}/iso-base-media/traversal.js +1 -12
  53. package/dist/containers/iso-base-media/void-box.js +2 -0
  54. package/dist/containers/mp3/get-tracks-from-mp3.d.ts +4 -0
  55. package/dist/{boxes → containers}/mp3/get-tracks-from-mp3.js +6 -6
  56. package/dist/containers/mp3/id3.d.ts +4 -0
  57. package/dist/{boxes → containers}/mp3/id3.js +8 -5
  58. package/dist/containers/mp3/parse-mp3.d.ts +3 -0
  59. package/dist/{boxes → containers}/mp3/parse-mp3.js +4 -20
  60. package/dist/containers/mp3/parse-mpeg-header.d.ts +4 -0
  61. package/dist/{boxes → containers}/mp3/parse-mpeg-header.js +2 -1
  62. package/dist/containers/riff/expect-riff-box.d.ts +7 -0
  63. package/dist/containers/riff/expect-riff-box.js +72 -0
  64. package/dist/containers/riff/get-duration.d.ts +3 -0
  65. package/dist/containers/riff/get-duration.js +33 -0
  66. package/dist/{boxes → containers}/riff/get-tracks-from-avi.d.ts +2 -3
  67. package/dist/{boxes → containers}/riff/get-tracks-from-avi.js +6 -10
  68. package/dist/containers/riff/parse-list-box.d.ts +6 -0
  69. package/dist/containers/riff/parse-list-box.js +29 -0
  70. package/dist/containers/riff/parse-movi.d.ts +11 -0
  71. package/dist/{boxes → containers}/riff/parse-movi.js +37 -57
  72. package/dist/containers/riff/parse-riff-body.d.ts +3 -0
  73. package/dist/containers/riff/parse-riff-body.js +22 -0
  74. package/dist/containers/riff/parse-riff-box.d.ts +7 -0
  75. package/dist/{boxes → containers}/riff/parse-riff-box.js +3 -10
  76. package/dist/containers/riff/parse-riff-header.d.ts +3 -0
  77. package/dist/containers/riff/parse-riff-header.js +23 -0
  78. package/dist/containers/riff/parse-riff.d.ts +3 -0
  79. package/dist/containers/riff/parse-riff.js +12 -0
  80. package/dist/containers/riff/parse-strf.d.ts +7 -0
  81. package/dist/{boxes → containers}/riff/parse-strf.js +4 -8
  82. package/dist/{boxes → containers}/riff/parse-strh.js +11 -0
  83. package/dist/containers/riff/parse-video-section.d.ts +2 -0
  84. package/dist/containers/riff/parse-video-section.js +19 -0
  85. package/dist/{boxes → containers}/riff/riff-box.d.ts +8 -14
  86. package/dist/containers/riff/riff-box.js +2 -0
  87. package/dist/{boxes → containers}/riff/traversal.d.ts +1 -3
  88. package/dist/{boxes → containers}/riff/traversal.js +1 -6
  89. package/dist/containers/transport-stream/boxes.js +2 -0
  90. package/dist/containers/transport-stream/get-tracks.d.ts +4 -0
  91. package/dist/{boxes → containers}/transport-stream/get-tracks.js +4 -3
  92. package/dist/containers/transport-stream/parse-packet.d.ts +5 -0
  93. package/dist/{boxes → containers}/transport-stream/parse-packet.js +4 -5
  94. package/dist/containers/transport-stream/parse-stream-packet.d.ts +9 -0
  95. package/dist/{boxes → containers}/transport-stream/parse-stream-packet.js +11 -12
  96. package/dist/containers/transport-stream/parse-transport-stream.d.ts +3 -0
  97. package/dist/{boxes → containers}/transport-stream/parse-transport-stream.js +8 -37
  98. package/dist/{boxes → containers}/transport-stream/process-stream-buffers.d.ts +1 -2
  99. package/dist/{boxes → containers}/transport-stream/process-stream-buffers.js +3 -3
  100. package/dist/containers/wav/get-duration-from-wav.d.ts +3 -0
  101. package/dist/containers/wav/get-duration-from-wav.js +29 -0
  102. package/dist/containers/wav/get-metadata-from-wav.d.ts +3 -0
  103. package/dist/containers/wav/get-metadata-from-wav.js +11 -0
  104. package/dist/containers/wav/parse-data.d.ts +5 -0
  105. package/dist/containers/wav/parse-data.js +25 -0
  106. package/dist/containers/wav/parse-fmt.d.ts +5 -0
  107. package/dist/containers/wav/parse-fmt.js +56 -0
  108. package/dist/containers/wav/parse-header.d.ts +5 -0
  109. package/dist/containers/wav/parse-header.js +17 -0
  110. package/dist/containers/wav/parse-id3.d.ts +5 -0
  111. package/dist/containers/wav/parse-id3.js +17 -0
  112. package/dist/containers/wav/parse-list.d.ts +5 -0
  113. package/dist/containers/wav/parse-list.js +32 -0
  114. package/dist/containers/wav/parse-video-section.d.ts +5 -0
  115. package/dist/containers/wav/parse-video-section.js +37 -0
  116. package/dist/containers/wav/parse-wav.d.ts +3 -0
  117. package/dist/containers/wav/parse-wav.js +36 -0
  118. package/dist/containers/wav/types.d.ts +30 -0
  119. package/dist/containers/wav/types.js +2 -0
  120. package/dist/{boxes → containers}/webm/parse-ebml.d.ts +1 -2
  121. package/dist/{boxes → containers}/webm/parse-ebml.js +6 -2
  122. package/dist/containers/webm/parse-webm-header.d.ts +3 -0
  123. package/dist/containers/webm/parse-webm-header.js +53 -0
  124. package/dist/containers/webm/segments.d.ts +9 -0
  125. package/dist/containers/webm/segments.js +80 -0
  126. package/dist/emit-available-info.d.ts +1 -3
  127. package/dist/emit-available-info.js +86 -76
  128. package/dist/errors.d.ts +1 -1
  129. package/dist/esm/from-node.mjs +8 -9
  130. package/dist/esm/index.mjs +4951 -4693
  131. package/dist/file-types/detect-file-type.d.ts +5 -1
  132. package/dist/file-types/detect-file-type.js +10 -3
  133. package/dist/file-types/index.js +3 -0
  134. package/dist/get-audio-codec.d.ts +4 -5
  135. package/dist/get-audio-codec.js +5 -5
  136. package/dist/get-container.d.ts +2 -2
  137. package/dist/get-container.js +10 -1
  138. package/dist/get-dimensions.d.ts +2 -3
  139. package/dist/get-dimensions.js +14 -10
  140. package/dist/get-duration.d.ts +5 -5
  141. package/dist/get-duration.js +29 -27
  142. package/dist/get-fields-from-callbacks.js +4 -0
  143. package/dist/get-fps.d.ts +1 -1
  144. package/dist/get-fps.js +12 -4
  145. package/dist/get-is-hdr.d.ts +2 -3
  146. package/dist/get-is-hdr.js +4 -4
  147. package/dist/get-keyframes.d.ts +1 -1
  148. package/dist/get-keyframes.js +4 -3
  149. package/dist/get-number-of-audio-channels.d.ts +3 -0
  150. package/dist/get-number-of-audio-channels.js +14 -0
  151. package/dist/get-sample-aspect-ratio.d.ts +8 -8
  152. package/dist/get-sample-aspect-ratio.js +1 -1
  153. package/dist/get-sample-positions-from-lpcm.d.ts +1 -1
  154. package/dist/get-sample-positions-from-lpcm.js +1 -1
  155. package/dist/get-sample-positions.d.ts +6 -6
  156. package/dist/get-sample-rate.d.ts +3 -0
  157. package/dist/get-sample-rate.js +14 -0
  158. package/dist/get-tracks.d.ts +9 -8
  159. package/dist/get-tracks.js +36 -22
  160. package/dist/get-video-codec.d.ts +3 -4
  161. package/dist/get-video-codec.js +6 -6
  162. package/dist/has-all-info.js +26 -15
  163. package/dist/index.d.ts +145 -41
  164. package/dist/index.js +8 -8
  165. package/dist/init-video.d.ts +7 -0
  166. package/dist/init-video.js +114 -0
  167. package/dist/is-audio-structure.d.ts +2 -0
  168. package/dist/is-audio-structure.js +31 -0
  169. package/dist/metadata/get-metadata.js +16 -1
  170. package/dist/metadata/metadata-from-iso.d.ts +2 -1
  171. package/dist/metadata/metadata-from-iso.js +1 -1
  172. package/dist/metadata/metadata-from-matroska.js +1 -1
  173. package/dist/metadata/metadata-from-riff.d.ts +1 -1
  174. package/dist/options.d.ts +64 -38
  175. package/dist/parse-media.js +125 -43
  176. package/dist/parse-result.d.ts +8 -61
  177. package/dist/perform-seek.d.ts +13 -0
  178. package/dist/perform-seek.js +29 -0
  179. package/dist/readers/from-node.js +7 -8
  180. package/dist/readers/reader.d.ts +1 -1
  181. package/dist/register-track.d.ts +3 -3
  182. package/dist/run-parse-iteration.d.ts +8 -0
  183. package/dist/run-parse-iteration.js +48 -0
  184. package/dist/samples-from-moof.js +1 -1
  185. package/dist/state/aac-state.d.ts +13 -0
  186. package/dist/state/aac-state.js +17 -0
  187. package/dist/state/can-skip-tracks.d.ts +8 -1
  188. package/dist/state/can-skip-tracks.js +42 -27
  189. package/dist/state/emitted-fields.js +4 -0
  190. package/dist/state/flac-state.d.ts +4 -0
  191. package/dist/state/flac-state.js +13 -0
  192. package/dist/state/has-tracks-section.d.ts +2 -1
  193. package/dist/state/has-tracks-section.js +4 -1
  194. package/dist/state/iso-base-media/cached-sample-positions.d.ts +15 -0
  195. package/dist/state/iso-base-media/cached-sample-positions.js +42 -0
  196. package/dist/state/iso-base-media/iso-state.d.ts +8 -0
  197. package/dist/state/iso-base-media/iso-state.js +15 -0
  198. package/dist/{may-skip-video-data → state}/may-skip-video-data.d.ts +1 -1
  199. package/dist/{may-skip-video-data → state}/may-skip-video-data.js +6 -2
  200. package/dist/{may-skip-video-data → state}/need-samples-for-fields.js +4 -0
  201. package/dist/state/parser-state.d.ts +131 -17
  202. package/dist/state/parser-state.js +18 -5
  203. package/dist/state/sample-callbacks.d.ts +6 -2
  204. package/dist/state/sample-callbacks.js +5 -2
  205. package/dist/state/slow-duration-fps.d.ts +2 -0
  206. package/dist/state/slow-duration-fps.js +18 -0
  207. package/dist/state/transport-stream.d.ts +8 -0
  208. package/dist/state/transport-stream.js +11 -0
  209. package/dist/state/video-section.d.ts +16 -0
  210. package/dist/state/video-section.js +37 -0
  211. package/dist/state/webm.d.ts +17 -2
  212. package/dist/state/webm.js +33 -1
  213. package/dist/version.d.ts +1 -1
  214. package/dist/version.js +1 -1
  215. package/dist/webcodec-sample-types.d.ts +3 -3
  216. package/package.json +3 -3
  217. package/test.json +663 -0
  218. package/dist/boxes/iso-base-media/get-children.d.ts +0 -14
  219. package/dist/boxes/iso-base-media/get-children.js +0 -39
  220. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -26
  221. package/dist/boxes/iso-base-media/mdat/mdat.js +0 -141
  222. package/dist/boxes/iso-base-media/moov/moov.d.ts +0 -19
  223. package/dist/boxes/iso-base-media/moov/moov.js +0 -27
  224. package/dist/boxes/iso-base-media/parse-boxes.d.ts +0 -15
  225. package/dist/boxes/iso-base-media/parse-boxes.js +0 -129
  226. package/dist/boxes/iso-base-media/parse-mdat-partially.d.ts +0 -12
  227. package/dist/boxes/iso-base-media/parse-mdat-partially.js +0 -33
  228. package/dist/boxes/iso-base-media/process-box.d.ts +0 -15
  229. package/dist/boxes/iso-base-media/stsd/mebx.js +0 -32
  230. package/dist/boxes/iso-base-media/trak/trak.d.ts +0 -19
  231. package/dist/boxes/iso-base-media/trak/trak.js +0 -27
  232. package/dist/boxes/mp3/get-tracks-from-mp3.d.ts +0 -4
  233. package/dist/boxes/mp3/id3-v2.d.ts +0 -0
  234. package/dist/boxes/mp3/id3-v2.js +0 -1
  235. package/dist/boxes/mp3/id3.d.ts +0 -8
  236. package/dist/boxes/riff/continue-after-riff-result.d.ts +0 -13
  237. package/dist/boxes/riff/continue-after-riff-result.js +0 -34
  238. package/dist/boxes/riff/expect-riff-box.d.ts +0 -19
  239. package/dist/boxes/riff/expect-riff-box.js +0 -50
  240. package/dist/boxes/riff/parse-box.js +0 -35
  241. package/dist/boxes/riff/parse-fmt-box.d.ts +0 -7
  242. package/dist/boxes/riff/parse-fmt-box.js +0 -33
  243. package/dist/boxes/riff/parse-list-box.d.ts +0 -10
  244. package/dist/boxes/riff/parse-list-box.js +0 -31
  245. package/dist/boxes/riff/parse-movi.d.ts +0 -17
  246. package/dist/boxes/riff/parse-riff-body.d.ts +0 -11
  247. package/dist/boxes/riff/parse-riff-body.js +0 -105
  248. package/dist/boxes/riff/parse-riff-box.d.ts +0 -12
  249. package/dist/boxes/riff/parse-strf.d.ts +0 -7
  250. package/dist/boxes/transport-stream/get-tracks.d.ts +0 -5
  251. package/dist/boxes/transport-stream/parse-packet.d.ts +0 -13
  252. package/dist/boxes/transport-stream/parse-stream-packet.d.ts +0 -15
  253. package/dist/boxes/transport-stream/parse-transport-stream.d.ts +0 -13
  254. package/dist/boxes/webm/parse-webm-header.js +0 -37
  255. package/dist/boxes/webm/segments/parse-children.d.ts +0 -23
  256. package/dist/boxes/webm/segments/parse-children.js +0 -144
  257. package/dist/boxes/webm/segments.d.ts +0 -15
  258. package/dist/boxes/webm/segments.js +0 -161
  259. package/dist/continue-mdat-routine.d.ts +0 -17
  260. package/dist/continue-mdat-routine.js +0 -92
  261. package/dist/parse-video.d.ts +0 -28
  262. package/dist/parse-video.js +0 -130
  263. /package/dist/{boxes/iso-base-media/base-type.js → containers/aac/types.js} +0 -0
  264. /package/dist/{boxes → containers}/avc/codec-string.d.ts +0 -0
  265. /package/dist/{boxes → containers}/avc/codec-string.js +0 -0
  266. /package/dist/{boxes → containers}/avc/color.d.ts +0 -0
  267. /package/dist/{boxes → containers}/avc/color.js +0 -0
  268. /package/dist/{boxes → containers}/avc/create-sps-pps-data.d.ts +0 -0
  269. /package/dist/{boxes → containers}/avc/create-sps-pps-data.js +0 -0
  270. /package/dist/{boxes → containers}/avc/interpret-sps.d.ts +0 -0
  271. /package/dist/{boxes → containers}/avc/interpret-sps.js +0 -0
  272. /package/dist/{boxes → containers}/avc/key.js +0 -0
  273. /package/dist/{boxes → containers}/avc/parse-avc.d.ts +0 -0
  274. /package/dist/{boxes → containers}/avc/parse-avc.js +0 -0
  275. /package/dist/{boxes → containers}/avc/sps-and-pps.d.ts +0 -0
  276. /package/dist/{boxes → containers}/avc/sps-and-pps.js +0 -0
  277. /package/dist/{boxes/iso-base-media/void-box.js → containers/flac/types.js} +0 -0
  278. /package/dist/{boxes/riff/riff-box.js → containers/iso-base-media/base-media-box.js} +0 -0
  279. /package/dist/{boxes → containers}/iso-base-media/base-type.d.ts +0 -0
  280. /package/dist/{boxes/transport-stream/boxes.js → containers/iso-base-media/base-type.js} +0 -0
  281. /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.d.ts +0 -0
  282. /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.js +0 -0
  283. /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.d.ts +0 -0
  284. /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.js +0 -0
  285. /package/dist/{boxes → containers}/iso-base-media/esds/esds.d.ts +0 -0
  286. /package/dist/{boxes → containers}/iso-base-media/esds/esds.js +0 -0
  287. /package/dist/{boxes → containers}/iso-base-media/ftyp.d.ts +0 -0
  288. /package/dist/{boxes → containers}/iso-base-media/ftyp.js +0 -0
  289. /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.d.ts +0 -0
  290. /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.js +0 -0
  291. /package/dist/{boxes → containers}/iso-base-media/get-keyframes.d.ts +0 -0
  292. /package/dist/{boxes → containers}/iso-base-media/get-keyframes.js +0 -0
  293. /package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.js +0 -0
  294. /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.d.ts +0 -0
  295. /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.js +0 -0
  296. /package/dist/{boxes → containers}/iso-base-media/make-track.d.ts +0 -0
  297. /package/dist/{boxes → containers}/iso-base-media/make-track.js +0 -0
  298. /package/dist/{boxes → containers}/iso-base-media/mdhd.d.ts +0 -0
  299. /package/dist/{boxes → containers}/iso-base-media/mdhd.js +0 -0
  300. /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.d.ts +0 -0
  301. /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.js +0 -0
  302. /package/dist/{boxes → containers}/iso-base-media/meta/ilst.d.ts +0 -0
  303. /package/dist/{boxes → containers}/iso-base-media/meta/ilst.js +0 -0
  304. /package/dist/{boxes → containers}/iso-base-media/mvhd.d.ts +0 -0
  305. /package/dist/{boxes → containers}/iso-base-media/mvhd.js +0 -0
  306. /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.d.ts +0 -0
  307. /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.js +0 -0
  308. /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.d.ts +0 -0
  309. /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.js +0 -0
  310. /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.d.ts +0 -0
  311. /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.js +0 -0
  312. /package/dist/{boxes → containers}/iso-base-media/stsd/colr.d.ts +0 -0
  313. /package/dist/{boxes → containers}/iso-base-media/stsd/colr.js +0 -0
  314. /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.d.ts +0 -0
  315. /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.js +0 -0
  316. /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.d.ts +0 -0
  317. /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.js +0 -0
  318. /package/dist/{boxes → containers}/iso-base-media/stsd/keys.d.ts +0 -0
  319. /package/dist/{boxes → containers}/iso-base-media/stsd/keys.js +0 -0
  320. /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.d.ts +0 -0
  321. /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.js +0 -0
  322. /package/dist/{boxes → containers}/iso-base-media/stsd/stco.d.ts +0 -0
  323. /package/dist/{boxes → containers}/iso-base-media/stsd/stco.js +0 -0
  324. /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.d.ts +0 -0
  325. /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.js +0 -0
  326. /package/dist/{boxes → containers}/iso-base-media/stsd/stss.d.ts +0 -0
  327. /package/dist/{boxes → containers}/iso-base-media/stsd/stss.js +0 -0
  328. /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.d.ts +0 -0
  329. /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.js +0 -0
  330. /package/dist/{boxes → containers}/iso-base-media/stsd/stts.d.ts +0 -0
  331. /package/dist/{boxes → containers}/iso-base-media/stsd/stts.js +0 -0
  332. /package/dist/{boxes → containers}/iso-base-media/tfdt.d.ts +0 -0
  333. /package/dist/{boxes → containers}/iso-base-media/tfdt.js +0 -0
  334. /package/dist/{boxes → containers}/iso-base-media/tfhd.d.ts +0 -0
  335. /package/dist/{boxes → containers}/iso-base-media/tfhd.js +0 -0
  336. /package/dist/{boxes → containers}/iso-base-media/tkhd.d.ts +0 -0
  337. /package/dist/{boxes → containers}/iso-base-media/tkhd.js +0 -0
  338. /package/dist/{boxes → containers}/iso-base-media/to-date.d.ts +0 -0
  339. /package/dist/{boxes → containers}/iso-base-media/to-date.js +0 -0
  340. /package/dist/{boxes → containers}/iso-base-media/trun.d.ts +0 -0
  341. /package/dist/{boxes → containers}/iso-base-media/trun.js +0 -0
  342. /package/dist/{boxes → containers}/iso-base-media/void-box.d.ts +0 -0
  343. /package/dist/{boxes → containers}/mp3/get-duration.d.ts +0 -0
  344. /package/dist/{boxes → containers}/mp3/get-duration.js +0 -0
  345. /package/dist/{boxes → containers}/mp3/get-frame-length.d.ts +0 -0
  346. /package/dist/{boxes → containers}/mp3/get-frame-length.js +0 -0
  347. /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.d.ts +0 -0
  348. /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.js +0 -0
  349. /package/dist/{boxes → containers}/mp3/id3-v1.d.ts +0 -0
  350. /package/dist/{boxes → containers}/mp3/id3-v1.js +0 -0
  351. /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.d.ts +0 -0
  352. /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.js +0 -0
  353. /package/dist/{boxes → containers}/riff/is-movi.d.ts +0 -0
  354. /package/dist/{boxes → containers}/riff/is-movi.js +0 -0
  355. /package/dist/{boxes → containers}/riff/parse-avih.d.ts +0 -0
  356. /package/dist/{boxes → containers}/riff/parse-avih.js +0 -0
  357. /package/dist/{boxes → containers}/riff/parse-isft.d.ts +0 -0
  358. /package/dist/{boxes → containers}/riff/parse-isft.js +0 -0
  359. /package/dist/{boxes → containers}/riff/parse-strh.d.ts +0 -0
  360. /package/dist/{boxes → containers}/riff/timescale.d.ts +0 -0
  361. /package/dist/{boxes → containers}/riff/timescale.js +0 -0
  362. /package/dist/{boxes → containers}/transport-stream/adts-header.d.ts +0 -0
  363. /package/dist/{boxes → containers}/transport-stream/adts-header.js +0 -0
  364. /package/dist/{boxes → containers}/transport-stream/boxes.d.ts +0 -0
  365. /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.d.ts +0 -0
  366. /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.js +0 -0
  367. /package/dist/{boxes → containers}/transport-stream/find-separator.d.ts +0 -0
  368. /package/dist/{boxes → containers}/transport-stream/find-separator.js +0 -0
  369. /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.d.ts +0 -0
  370. /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.js +0 -0
  371. /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.d.ts +0 -0
  372. /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.js +0 -0
  373. /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.d.ts +0 -0
  374. /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.js +0 -0
  375. /package/dist/{boxes → containers}/transport-stream/parse-pat.d.ts +0 -0
  376. /package/dist/{boxes → containers}/transport-stream/parse-pat.js +0 -0
  377. /package/dist/{boxes → containers}/transport-stream/parse-pes.d.ts +0 -0
  378. /package/dist/{boxes → containers}/transport-stream/parse-pes.js +0 -0
  379. /package/dist/{boxes → containers}/transport-stream/parse-pmt.d.ts +0 -0
  380. /package/dist/{boxes → containers}/transport-stream/parse-pmt.js +0 -0
  381. /package/dist/{boxes → containers}/transport-stream/traversal.d.ts +0 -0
  382. /package/dist/{boxes → containers}/transport-stream/traversal.js +0 -0
  383. /package/dist/{boxes → containers}/webm/allowed-partial-segments.d.ts +0 -0
  384. /package/dist/{boxes → containers}/webm/allowed-partial-segments.js +0 -0
  385. /package/dist/{boxes → containers}/webm/av1-codec-private.d.ts +0 -0
  386. /package/dist/{boxes → containers}/webm/av1-codec-private.js +0 -0
  387. /package/dist/{boxes → containers}/webm/color.d.ts +0 -0
  388. /package/dist/{boxes → containers}/webm/color.js +0 -0
  389. /package/dist/{boxes → containers}/webm/description.d.ts +0 -0
  390. /package/dist/{boxes → containers}/webm/description.js +0 -0
  391. /package/dist/{boxes → containers}/webm/get-ready-tracks.d.ts +0 -0
  392. /package/dist/{boxes → containers}/webm/get-ready-tracks.js +0 -0
  393. /package/dist/{boxes → containers}/webm/get-sample-from-block.d.ts +0 -0
  394. /package/dist/{boxes → containers}/webm/get-sample-from-block.js +0 -0
  395. /package/dist/{boxes → containers}/webm/make-track.d.ts +0 -0
  396. /package/dist/{boxes → containers}/webm/make-track.js +0 -0
  397. /package/dist/{boxes → containers}/webm/segments/all-segments.d.ts +0 -0
  398. /package/dist/{boxes → containers}/webm/segments/all-segments.js +0 -0
  399. /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.d.ts +0 -0
  400. /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.js +0 -0
  401. /package/dist/{boxes → containers}/webm/segments/track-entry.d.ts +0 -0
  402. /package/dist/{boxes → containers}/webm/segments/track-entry.js +0 -0
  403. /package/dist/{boxes → containers}/webm/traversal.d.ts +0 -0
  404. /package/dist/{boxes → containers}/webm/traversal.js +0 -0
  405. /package/dist/{may-skip-video-data → state}/need-samples-for-fields.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseSamples = exports.processSample = void 0;
4
- const parse_boxes_1 = require("../parse-boxes");
3
+ exports.parseIsoFormatBoxes = exports.processIsoFormatBox = void 0;
4
+ const get_children_1 = require("../get-children");
5
5
  // https://developer.apple.com/documentation/quicktime-file-format/video_sample_description
6
6
  const videoTags = [
7
7
  'cvid',
@@ -62,7 +62,8 @@ const audioTags = [
62
62
  'mp4a',
63
63
  'ac-3',
64
64
  ];
65
- const processSample = async ({ iterator, state: options, signal, logLevel, fields, }) => {
65
+ const processIsoFormatBox = async ({ state, }) => {
66
+ const { iterator } = state;
66
67
  const fileOffset = iterator.counter.getOffset();
67
68
  const bytesRemaining = iterator.bytesRemaining();
68
69
  const boxSize = iterator.getUint32();
@@ -98,21 +99,10 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
98
99
  const compressionId = iterator.getUint16();
99
100
  const packetSize = iterator.getUint16();
100
101
  const sampleRate = iterator.getFixedPointUnsigned1616Number();
101
- const bytesRemainingInBox = boxSize - (iterator.counter.getOffset() - fileOffset);
102
- const initialBoxes = [];
103
- const children = await (0, parse_boxes_1.parseIsoBaseMediaBoxes)({
104
- iterator,
105
- allowIncompleteBoxes: false,
106
- maxBytes: bytesRemainingInBox,
107
- initialBoxes,
108
- state: options,
109
- signal,
110
- logLevel,
111
- fields,
102
+ const children = await (0, get_children_1.getIsoBaseMediaChildren)({
103
+ state,
104
+ size: boxSize - (iterator.counter.getOffset() - fileOffset),
112
105
  });
113
- if (children.status === 'incomplete') {
114
- throw new Error('Incomplete boxes are not allowed');
115
- }
116
106
  return {
117
107
  sample: {
118
108
  format: boxFormat,
@@ -132,7 +122,7 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
132
122
  bytesPerPacket: null,
133
123
  bytesPerFrame: null,
134
124
  bitsPerSample: null,
135
- children: initialBoxes,
125
+ children,
136
126
  },
137
127
  };
138
128
  }
@@ -146,21 +136,10 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
146
136
  const bytesPerPacket = iterator.getUint32();
147
137
  const bytesPerFrame = iterator.getUint32();
148
138
  const bytesPerSample = iterator.getUint32();
149
- const bytesRemainingInBox = boxSize - (iterator.counter.getOffset() - fileOffset);
150
- const initialBoxes = [];
151
- const children = await (0, parse_boxes_1.parseIsoBaseMediaBoxes)({
152
- iterator,
153
- allowIncompleteBoxes: false,
154
- maxBytes: bytesRemainingInBox,
155
- initialBoxes,
156
- state: options,
157
- signal,
158
- logLevel,
159
- fields,
139
+ const children = await (0, get_children_1.getIsoBaseMediaChildren)({
140
+ state,
141
+ size: boxSize - (iterator.counter.getOffset() - fileOffset),
160
142
  });
161
- if (children.status === 'incomplete') {
162
- throw new Error('Incomplete boxes are not allowed');
163
- }
164
143
  return {
165
144
  sample: {
166
145
  format: boxFormat,
@@ -180,7 +159,7 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
180
159
  bytesPerPacket,
181
160
  bytesPerFrame,
182
161
  bitsPerSample: bytesPerSample,
183
- children: initialBoxes,
162
+ children,
184
163
  },
185
164
  };
186
165
  }
@@ -198,21 +177,10 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
198
177
  iterator.getUint32(); // ignore;
199
178
  const bytesPerFrame = iterator.getUint32();
200
179
  const samplesPerPacket = iterator.getUint32();
201
- const bytesRemainingInBox = boxSize - (iterator.counter.getOffset() - fileOffset);
202
- const children = await (0, parse_boxes_1.parseIsoBaseMediaBoxes)({
203
- iterator,
204
- allowIncompleteBoxes: false,
205
- maxBytes: bytesRemainingInBox,
206
- initialBoxes: [],
207
- state: options,
208
- signal,
209
- logLevel,
210
- fields,
180
+ const children = await (0, get_children_1.getIsoBaseMediaChildren)({
181
+ state,
182
+ size: boxSize - (iterator.counter.getOffset() - fileOffset),
211
183
  });
212
- if (children.status === 'incomplete') {
213
- throw new Error('Incomplete boxes are not allowed');
214
- }
215
- const initialBoxes = [];
216
184
  return {
217
185
  sample: {
218
186
  format: boxFormat,
@@ -232,7 +200,7 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
232
200
  bytesPerPacket: null,
233
201
  bytesPerFrame,
234
202
  bitsPerSample: bitsPerChannel,
235
- children: initialBoxes,
203
+ children,
236
204
  },
237
205
  };
238
206
  }
@@ -254,22 +222,12 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
254
222
  const depth = iterator.getUint16();
255
223
  const colorTableId = iterator.getInt16();
256
224
  const bytesRemainingInBox = boxSize - (iterator.counter.getOffset() - fileOffset);
257
- const initialBoxes = [];
258
225
  const children = bytesRemainingInBox > 8
259
- ? await (0, parse_boxes_1.parseIsoBaseMediaBoxes)({
260
- iterator,
261
- allowIncompleteBoxes: false,
262
- maxBytes: bytesRemainingInBox,
263
- initialBoxes,
264
- state: options,
265
- signal,
266
- logLevel,
267
- fields,
226
+ ? await (0, get_children_1.getIsoBaseMediaChildren)({
227
+ state,
228
+ size: bytesRemainingInBox,
268
229
  })
269
- : (iterator.discard(bytesRemainingInBox), { status: 'done' });
270
- if (children.status === 'incomplete') {
271
- throw new Error('Incomplete boxes are not allowed');
272
- }
230
+ : (iterator.discard(bytesRemainingInBox), []);
273
231
  return {
274
232
  sample: {
275
233
  format: boxFormat,
@@ -291,24 +249,21 @@ const processSample = async ({ iterator, state: options, signal, logLevel, field
291
249
  compressorName,
292
250
  depth,
293
251
  colorTableId,
294
- descriptors: initialBoxes,
252
+ descriptors: children,
295
253
  },
296
254
  };
297
255
  }
298
256
  throw new Error(`Unknown sample format ${boxFormat}`);
299
257
  };
300
- exports.processSample = processSample;
301
- const parseSamples = async ({ iterator, maxBytes, state, signal, logLevel, fields, }) => {
258
+ exports.processIsoFormatBox = processIsoFormatBox;
259
+ const parseIsoFormatBoxes = async ({ maxBytes, state, }) => {
260
+ const { iterator } = state;
302
261
  const samples = [];
303
262
  const initialOffset = iterator.counter.getOffset();
304
263
  while (iterator.bytesRemaining() > 0 &&
305
264
  iterator.counter.getOffset() - initialOffset < maxBytes) {
306
- const { sample } = await (0, exports.processSample)({
307
- iterator,
265
+ const { sample } = await (0, exports.processIsoFormatBox)({
308
266
  state,
309
- signal,
310
- logLevel,
311
- fields,
312
267
  });
313
268
  if (sample) {
314
269
  samples.push(sample);
@@ -316,4 +271,4 @@ const parseSamples = async ({ iterator, maxBytes, state, signal, logLevel, field
316
271
  }
317
272
  return samples;
318
273
  };
319
- exports.parseSamples = parseSamples;
274
+ exports.parseIsoFormatBoxes = parseIsoFormatBoxes;
@@ -1,5 +1,3 @@
1
- import type { BufferIterator } from '../../../buffer-iterator';
2
- import type { Options, ParseMediaFields } from '../../../options';
3
1
  import type { ParserState } from '../../../state/parser-state';
4
2
  import type { BaseBox } from '../base-type';
5
3
  import type { Sample } from './samples';
@@ -8,11 +6,8 @@ export interface StsdBox extends BaseBox {
8
6
  numberOfEntries: number;
9
7
  samples: Sample[];
10
8
  }
11
- export declare const parseStsd: ({ iterator, offset, size, state, signal, fields, }: {
12
- iterator: BufferIterator;
9
+ export declare const parseStsd: ({ offset, size, state, }: {
13
10
  offset: number;
14
11
  size: number;
15
12
  state: ParserState;
16
- signal: AbortSignal | null;
17
- fields: Options<ParseMediaFields>;
18
13
  }) => Promise<StsdBox>;
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseStsd = void 0;
4
4
  const samples_1 = require("./samples");
5
- const parseStsd = async ({ iterator, offset, size, state, signal, fields, }) => {
5
+ const parseStsd = async ({ offset, size, state, }) => {
6
+ const { iterator } = state;
6
7
  const version = iterator.getUint8();
7
8
  if (version !== 0) {
8
9
  throw new Error(`Unsupported STSD version ${version}`);
@@ -11,13 +12,9 @@ const parseStsd = async ({ iterator, offset, size, state, signal, fields, }) =>
11
12
  iterator.discard(3);
12
13
  const numberOfEntries = iterator.getUint32();
13
14
  const bytesRemainingInBox = size - (iterator.counter.getOffset() - offset);
14
- const boxes = await (0, samples_1.parseSamples)({
15
- iterator,
15
+ const boxes = await (0, samples_1.parseIsoFormatBoxes)({
16
16
  maxBytes: bytesRemainingInBox,
17
17
  state,
18
- signal,
19
- logLevel: 'info',
20
- fields,
21
18
  });
22
19
  if (boxes.length !== numberOfEntries) {
23
20
  throw new Error(`Expected ${numberOfEntries} sample descriptions, got ${boxes.length}`);
@@ -0,0 +1,12 @@
1
+ import type { AnySegment } from '../../../parse-result';
2
+ import type { ParserState } from '../../../state/parser-state';
3
+ import type { BaseBox } from '../base-type';
4
+ export interface TrakBox extends BaseBox {
5
+ type: 'trak-box';
6
+ children: AnySegment[];
7
+ }
8
+ export declare const parseTrak: ({ size, offsetAtStart, state: options, }: {
9
+ size: number;
10
+ offsetAtStart: number;
11
+ state: ParserState;
12
+ }) => Promise<TrakBox>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseTrak = void 0;
4
+ const get_children_1 = require("../get-children");
5
+ const parseTrak = async ({ size, offsetAtStart, state: options, }) => {
6
+ const children = await (0, get_children_1.getIsoBaseMediaChildren)({
7
+ state: options,
8
+ size: size - 8,
9
+ });
10
+ return {
11
+ offset: offsetAtStart,
12
+ boxSize: size,
13
+ type: 'trak-box',
14
+ children,
15
+ };
16
+ };
17
+ exports.parseTrak = parseTrak;
@@ -1,6 +1,6 @@
1
- import type { AnySegment, IsoBaseMediaBox, RegularBox } from '../../parse-result';
1
+ import type { AnySegment } from '../../parse-result';
2
+ import type { IsoBaseMediaBox, RegularBox } from './base-media-box';
2
3
  import type { FtypBox } from './ftyp';
3
- import type { MdatBox } from './mdat/mdat';
4
4
  import type { MdhdBox } from './mdhd';
5
5
  import type { MoovBox } from './moov/moov';
6
6
  import type { MvhdBox } from './mvhd';
@@ -36,4 +36,3 @@ export declare const getStssBox: (trakBox: TrakBox) => StssBox | null;
36
36
  export declare const getTfdtBox: (segment: IsoBaseMediaBox) => TfdtBox | null;
37
37
  export declare const getTfhdBox: (segment: IsoBaseMediaBox) => TfhdBox | null;
38
38
  export declare const getTrunBoxes: (segment: IsoBaseMediaBox) => TrunBox[];
39
- export declare const getMdatBox: (anySegment: AnySegment[]) => MdatBox | null;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMdatBox = exports.getTrunBoxes = exports.getTfhdBox = exports.getTfdtBox = exports.getStssBox = exports.getStscBox = exports.getStszBox = exports.getCttsBox = exports.getSttsBox = exports.getStcoBox = exports.getVideoDescriptors = exports.getStsdBox = exports.getStblBox = exports.getMdhdBox = exports.getMdiaBox = exports.getTkhdBox = exports.getTraks = exports.getMvhdBox = exports.getMoofBox = exports.getMoovBox = exports.getFtypBox = void 0;
3
+ exports.getTrunBoxes = exports.getTfhdBox = exports.getTfdtBox = exports.getStssBox = exports.getStscBox = exports.getStszBox = exports.getCttsBox = exports.getSttsBox = exports.getStcoBox = exports.getVideoDescriptors = exports.getStsdBox = exports.getStblBox = exports.getMdhdBox = exports.getMdiaBox = exports.getTkhdBox = exports.getTraks = exports.getMvhdBox = exports.getMoofBox = exports.getMoovBox = exports.getFtypBox = void 0;
4
4
  const getFtypBox = (segments) => {
5
5
  const ftypBox = segments.find((s) => s.type === 'ftyp-box');
6
6
  if (!ftypBox || ftypBox.type !== 'ftyp-box') {
@@ -188,14 +188,3 @@ const getTrunBoxes = (segment) => {
188
188
  return trunBoxes;
189
189
  };
190
190
  exports.getTrunBoxes = getTrunBoxes;
191
- const getMdatBox = (anySegment) => {
192
- const mdat = anySegment.find((b) => b.type === 'mdat-box');
193
- if (!mdat) {
194
- return null;
195
- }
196
- if (mdat.type !== 'mdat-box') {
197
- throw new Error('Expected mdat-box');
198
- }
199
- return mdat;
200
- };
201
- exports.getMdatBox = getMdatBox;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ import type { AllTracks } from '../riff/get-tracks-from-avi';
3
+ export declare const getTracksFromMp3OrWavOrAac: (parserState: ParserState) => AllTracks;
4
+ export declare const hasAllTracksFromMp3OrWavOrAac: (parserState: ParserState) => boolean;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasAllTracksFromMp3 = exports.getTracksFromMp3 = void 0;
4
- const getTracksFromMp3 = (parserState) => {
3
+ exports.hasAllTracksFromMp3OrWavOrAac = exports.getTracksFromMp3OrWavOrAac = void 0;
4
+ const getTracksFromMp3OrWavOrAac = (parserState) => {
5
5
  const tracks = parserState.callbacks.tracks.getTracks();
6
6
  if (tracks.length === 0) {
7
7
  throw new Error('No tracks found');
@@ -12,14 +12,14 @@ const getTracksFromMp3 = (parserState) => {
12
12
  videoTracks: [],
13
13
  };
14
14
  };
15
- exports.getTracksFromMp3 = getTracksFromMp3;
16
- const hasAllTracksFromMp3 = (parserState) => {
15
+ exports.getTracksFromMp3OrWavOrAac = getTracksFromMp3OrWavOrAac;
16
+ const hasAllTracksFromMp3OrWavOrAac = (parserState) => {
17
17
  try {
18
- (0, exports.getTracksFromMp3)(parserState);
18
+ (0, exports.getTracksFromMp3OrWavOrAac)(parserState);
19
19
  return true;
20
20
  }
21
21
  catch (_a) {
22
22
  return false;
23
23
  }
24
24
  };
25
- exports.hasAllTracksFromMp3 = hasAllTracksFromMp3;
25
+ exports.hasAllTracksFromMp3OrWavOrAac = hasAllTracksFromMp3OrWavOrAac;
@@ -0,0 +1,4 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ export declare const parseId3: ({ state }: {
3
+ state: ParserState;
4
+ }) => void;
@@ -10,7 +10,8 @@ function combine28Bits(a, b, c, d) {
10
10
  // Combine all values using bitwise operations
11
11
  return (val1 << 21) | (val2 << 14) | (val3 << 7) | val4;
12
12
  }
13
- const parseId3 = ({ iterator, structure, state, }) => {
13
+ const parseId3 = ({ state }) => {
14
+ const { iterator } = state;
14
15
  if (iterator.bytesRemaining() < 9) {
15
16
  return;
16
17
  }
@@ -28,15 +29,17 @@ const parseId3 = ({ iterator, structure, state, }) => {
28
29
  const entries = [];
29
30
  const initial = iterator.counter.getOffset();
30
31
  while (iterator.counter.getOffset() < size + initial) {
31
- const name = versionMajor === 3
32
+ const name = versionMajor === 3 || versionMajor === 4
32
33
  ? iterator.getByteString(4, true)
33
34
  : iterator.getByteString(3, true);
34
35
  if (name === '') {
35
36
  iterator.discard(size + initial - iterator.counter.getOffset());
36
37
  break;
37
38
  }
38
- const s = versionMajor === 3 ? iterator.getUint32() : iterator.getUint24();
39
- if (versionMajor === 3) {
39
+ const s = versionMajor === 3 || versionMajor === 4
40
+ ? iterator.getUint32()
41
+ : iterator.getUint24();
42
+ if (versionMajor === 3 || versionMajor === 4) {
40
43
  iterator.getUint16(); // flags
41
44
  }
42
45
  let subtract = 0;
@@ -66,7 +69,7 @@ const parseId3 = ({ iterator, structure, state, }) => {
66
69
  });
67
70
  }
68
71
  }
69
- structure.boxes.push({
72
+ state.structure.getStructure().boxes.push({
70
73
  type: 'id3-header',
71
74
  flags,
72
75
  size,
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseMp3: (state: ParserState) => Promise<ParseResult>;
@@ -4,20 +4,11 @@ exports.parseMp3 = void 0;
4
4
  const id3_1 = require("./id3");
5
5
  const id3_v1_1 = require("./id3-v1");
6
6
  const parse_mpeg_header_1 = require("./parse-mpeg-header");
7
- const parseMp3 = async ({ iterator, structure, state, }) => {
8
- const continueParsing = () => {
9
- return (0, exports.parseMp3)({ iterator, structure, state });
10
- };
11
- if (iterator.bytesRemaining() === 0) {
12
- return Promise.resolve({
13
- status: 'done',
14
- });
15
- }
7
+ const parseMp3 = async (state) => {
8
+ const { iterator } = state;
16
9
  if (iterator.bytesRemaining() < 3) {
17
10
  return {
18
- status: 'incomplete',
19
11
  skipTo: null,
20
- continueParsing,
21
12
  };
22
13
  }
23
14
  const { returnToCheckpoint } = iterator.startCheckpoint();
@@ -27,31 +18,24 @@ const parseMp3 = async ({ iterator, structure, state, }) => {
27
18
  if (bytes[0] === 0x54 && bytes[1] === 0x41 && bytes[2] === 0x47) {
28
19
  (0, id3_v1_1.parseID3V1)(iterator);
29
20
  return {
30
- status: 'incomplete',
31
- continueParsing,
32
21
  skipTo: null,
33
22
  };
34
23
  }
35
24
  // ID3 v2 or v3
36
25
  if (bytes[0] === 0x49 && bytes[1] === 0x44 && bytes[2] === 0x33) {
37
- (0, id3_1.parseId3)({ iterator, structure, state });
26
+ (0, id3_1.parseId3)({ state });
38
27
  return {
39
- status: 'incomplete',
40
- continueParsing,
41
28
  skipTo: null,
42
29
  };
43
30
  }
44
31
  if (bytes[0] === 0xff) {
45
32
  await (0, parse_mpeg_header_1.parseMpegHeader)({
46
- iterator,
47
33
  state,
48
34
  });
49
35
  return {
50
- status: 'incomplete',
51
- continueParsing,
52
36
  skipTo: null,
53
37
  };
54
38
  }
55
- throw new Error('Unknown MP3 header ');
39
+ throw new Error('Unknown MP3 header ' + JSON.stringify(bytes));
56
40
  };
57
41
  exports.parseMp3 = parseMp3;
@@ -0,0 +1,4 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ export declare const parseMpegHeader: ({ state, }: {
3
+ state: ParserState;
4
+ }) => Promise<void>;
@@ -143,7 +143,8 @@ function getBitrateKB({ bits, mpegVersion, level, }) {
143
143
  // Return the corresponding bitrate
144
144
  return bitrateTable[bits][key];
145
145
  }
146
- const parseMpegHeader = async ({ iterator, state, }) => {
146
+ const parseMpegHeader = async ({ state, }) => {
147
+ const { iterator } = state;
147
148
  const initialOffset = iterator.counter.getOffset();
148
149
  if (iterator.bytesRemaining() < 32) {
149
150
  return;
@@ -0,0 +1,7 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ import type { RiffBox } from './riff-box';
3
+ export type RiffResult = {
4
+ box: RiffBox | null;
5
+ skipTo: number | null;
6
+ };
7
+ export declare const expectRiffBox: (state: ParserState) => Promise<RiffResult>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expectRiffBox = void 0;
4
+ const register_track_1 = require("../../register-track");
5
+ const get_tracks_from_avi_1 = require("./get-tracks-from-avi");
6
+ const is_movi_1 = require("./is-movi");
7
+ const parse_riff_box_1 = require("./parse-riff-box");
8
+ const parse_video_section_1 = require("./parse-video-section");
9
+ const expectRiffBox = async (state) => {
10
+ const { iterator } = state;
11
+ // Need at least 16 bytes to read LIST,size,movi,size
12
+ if (state.iterator.bytesRemaining() < 16) {
13
+ return {
14
+ box: null,
15
+ skipTo: null,
16
+ };
17
+ }
18
+ const checkpoint = iterator.startCheckpoint();
19
+ const ckId = iterator.getByteString(4, false);
20
+ const ckSize = iterator.getUint32Le();
21
+ if ((0, is_movi_1.isMoviAtom)(iterator, ckId)) {
22
+ iterator.discard(4);
23
+ state.videoSection.setVideoSection({
24
+ start: iterator.counter.getOffset(),
25
+ size: ckSize - 4,
26
+ });
27
+ return (0, parse_video_section_1.parseVideoSection)(state);
28
+ }
29
+ if (iterator.bytesRemaining() < ckSize) {
30
+ checkpoint.returnToCheckpoint();
31
+ return {
32
+ box: null,
33
+ skipTo: null,
34
+ };
35
+ }
36
+ const box = await (0, parse_riff_box_1.parseRiffBox)({
37
+ id: ckId,
38
+ size: ckSize,
39
+ state,
40
+ });
41
+ if (box.type === 'strh-box') {
42
+ if (box.strf.type === 'strf-box-audio' && state.onAudioTrack) {
43
+ const audioTrack = (0, get_tracks_from_avi_1.makeAviAudioTrack)({
44
+ index: state.riff.getNextTrackIndex(),
45
+ strf: box.strf,
46
+ });
47
+ await (0, register_track_1.registerTrack)({
48
+ state,
49
+ track: audioTrack,
50
+ container: 'avi',
51
+ });
52
+ }
53
+ if (state.onVideoTrack && box.strf.type === 'strf-box-video') {
54
+ const videoTrack = (0, get_tracks_from_avi_1.makeAviVideoTrack)({
55
+ strh: box,
56
+ index: state.riff.getNextTrackIndex(),
57
+ strf: box.strf,
58
+ });
59
+ (0, register_track_1.registerVideoTrackWhenProfileIsAvailable)({
60
+ state,
61
+ track: videoTrack,
62
+ container: 'avi',
63
+ });
64
+ }
65
+ state.riff.incrementNextTrackIndex();
66
+ }
67
+ return {
68
+ box,
69
+ skipTo: null,
70
+ };
71
+ };
72
+ exports.expectRiffBox = expectRiffBox;
@@ -0,0 +1,3 @@
1
+ import type { RiffStructure } from './riff-box';
2
+ export declare const getDurationFromAvi: (structure: RiffStructure) => number;
3
+ export declare const getSampleRateFromAvi: (structure: RiffStructure) => number | null;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSampleRateFromAvi = exports.getDurationFromAvi = void 0;
4
+ const traversal_1 = require("./traversal");
5
+ const getDurationFromAvi = (structure) => {
6
+ const strl = (0, traversal_1.getStrlBoxes)(structure);
7
+ const lengths = [];
8
+ for (const s of strl) {
9
+ const strh = (0, traversal_1.getStrhBox)(s.children);
10
+ if (!strh) {
11
+ throw new Error('No strh box');
12
+ }
13
+ const samplesPerSecond = strh.rate / strh.scale;
14
+ const streamLength = strh.length / samplesPerSecond;
15
+ lengths.push(streamLength);
16
+ }
17
+ return Math.max(...lengths);
18
+ };
19
+ exports.getDurationFromAvi = getDurationFromAvi;
20
+ const getSampleRateFromAvi = (structure) => {
21
+ const strl = (0, traversal_1.getStrlBoxes)(structure);
22
+ for (const s of strl) {
23
+ const strh = (0, traversal_1.getStrhBox)(s.children);
24
+ if (!strh) {
25
+ throw new Error('No strh box');
26
+ }
27
+ if (strh.strf.type === 'strf-box-audio') {
28
+ return strh.strf.sampleRate;
29
+ }
30
+ }
31
+ return null;
32
+ };
33
+ exports.getSampleRateFromAvi = getSampleRateFromAvi;
@@ -1,7 +1,6 @@
1
1
  import type { AudioTrack, OtherTrack, VideoTrack } from '../../get-tracks';
2
- import type { RiffStructure } from '../../parse-result';
3
2
  import type { ParserState } from '../../state/parser-state';
4
- import type { StrfBoxAudio, StrfBoxVideo, StrhBox } from './riff-box';
3
+ import type { RiffStructure, StrfBoxAudio, StrfBoxVideo, StrhBox } from './riff-box';
5
4
  export type AllTracks = {
6
5
  videoTracks: VideoTrack[];
7
6
  audioTracks: AudioTrack[];
@@ -19,4 +18,4 @@ export declare const makeAviVideoTrack: ({ strh, strf, index, }: {
19
18
  index: number;
20
19
  }) => VideoTrack;
21
20
  export declare const getTracksFromAvi: (structure: RiffStructure, state: ParserState) => AllTracks;
22
- export declare const hasAllTracksFromAvi: (structure: RiffStructure, state: ParserState) => boolean;
21
+ export declare const hasAllTracksFromAvi: (state: ParserState) => boolean;
@@ -67,9 +67,6 @@ const makeAviVideoTrack = ({ strh, strf, index, }) => {
67
67
  };
68
68
  exports.makeAviVideoTrack = makeAviVideoTrack;
69
69
  const getTracksFromAvi = (structure, state) => {
70
- if (!(0, traversal_1.isRiffAvi)(structure)) {
71
- throw new Error('Not an AVI file');
72
- }
73
70
  const videoTracks = [];
74
71
  const audioTracks = [];
75
72
  const otherTracks = [];
@@ -77,10 +74,10 @@ const getTracksFromAvi = (structure, state) => {
77
74
  let i = 0;
78
75
  for (const box of boxes) {
79
76
  const strh = (0, traversal_1.getStrhBox)(box.children);
80
- const strf = (0, traversal_1.getStrfBox)(box.children);
81
- if (!strh || !strf) {
77
+ if (!strh) {
82
78
  continue;
83
79
  }
80
+ const { strf } = strh;
84
81
  if (strf.type === 'strf-box-video') {
85
82
  videoTracks.push((0, add_avc_profile_to_track_1.addAvcProfileToTrack)((0, exports.makeAviVideoTrack)({ strh, strf, index: i }), state.riff.getAvcProfile()));
86
83
  }
@@ -95,17 +92,16 @@ const getTracksFromAvi = (structure, state) => {
95
92
  return { audioTracks, otherTracks, videoTracks };
96
93
  };
97
94
  exports.getTracksFromAvi = getTracksFromAvi;
98
- const hasAllTracksFromAvi = (structure, state) => {
99
- if (!(0, traversal_1.isRiffAvi)(structure)) {
100
- throw new Error('Not an AVI file');
101
- }
95
+ const hasAllTracksFromAvi = (state) => {
102
96
  try {
97
+ const structure = state.structure.getStructure();
103
98
  const numberOfTracks = (0, exports.getNumberOfTracks)(structure);
104
99
  const tracks = (0, exports.getTracksFromAvi)(structure, state);
105
100
  return (tracks.videoTracks.length +
106
101
  tracks.audioTracks.length +
107
102
  tracks.otherTracks.length ===
108
- numberOfTracks);
103
+ numberOfTracks &&
104
+ !tracks.videoTracks.find((t) => t.codec === exports.TO_BE_OVERRIDDEN_LATER));
109
105
  }
110
106
  catch (_a) {
111
107
  return false;
@@ -0,0 +1,6 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ import type { RiffBox } from './riff-box';
3
+ export declare const parseListBox: ({ size, state, }: {
4
+ size: number;
5
+ state: ParserState;
6
+ }) => Promise<RiffBox>;