@remotion/media-parser 4.0.250 → 4.0.252

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 (424) hide show
  1. package/dist/aac-codecprivate.d.ts +2 -1
  2. package/dist/aac-codecprivate.js +28 -7
  3. package/dist/add-avc-profile-to-track.js +2 -2
  4. package/dist/buffer-iterator.d.ts +7 -2
  5. package/dist/buffer-iterator.js +61 -35
  6. package/dist/containers/aac/parse-aac.d.ts +3 -0
  7. package/dist/containers/aac/parse-aac.js +84 -0
  8. package/dist/containers/aac/types.d.ts +4 -0
  9. package/dist/{boxes → containers}/avc/key.d.ts +1 -1
  10. package/dist/containers/flac/get-block-size.d.ts +2 -0
  11. package/dist/containers/flac/get-block-size.js +26 -0
  12. package/dist/containers/flac/get-channel-count.d.ts +2 -0
  13. package/dist/containers/flac/get-channel-count.js +36 -0
  14. package/dist/containers/flac/get-duration-from-flac.d.ts +2 -0
  15. package/dist/containers/flac/get-duration-from-flac.js +12 -0
  16. package/dist/containers/flac/get-metadata-from-flac.d.ts +2 -0
  17. package/dist/containers/flac/get-metadata-from-flac.js +11 -0
  18. package/dist/containers/flac/get-sample-rate.d.ts +3 -0
  19. package/dist/containers/flac/get-sample-rate.js +60 -0
  20. package/dist/containers/flac/parse-flac-frame.d.ts +15 -0
  21. package/dist/containers/flac/parse-flac-frame.js +169 -0
  22. package/dist/{boxes/riff/parse-riff.d.ts → containers/flac/parse-flac.d.ts} +1 -1
  23. package/dist/containers/flac/parse-flac.js +49 -0
  24. package/dist/{boxes/mp3/parse-mp3.d.ts → containers/flac/parse-header.d.ts} +2 -2
  25. package/dist/containers/flac/parse-header.js +10 -0
  26. package/dist/{boxes/iso-base-media/parse-boxes.d.ts → containers/flac/parse-metadata.d.ts} +3 -2
  27. package/dist/containers/flac/parse-metadata.js +24 -0
  28. package/dist/{boxes/webm/parse-webm-header.d.ts → containers/flac/parse-streaminfo.d.ts} +1 -1
  29. package/dist/containers/flac/parse-streaminfo.js +53 -0
  30. package/dist/{boxes/riff/parse-riff-body.d.ts → containers/flac/parse-unknown-block.d.ts} +2 -1
  31. package/dist/containers/flac/parse-unknown-block.js +11 -0
  32. package/dist/containers/flac/types.d.ts +26 -0
  33. package/dist/containers/iso-base-media/base-media-box.d.ts +37 -0
  34. package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.js +1 -1
  35. package/dist/containers/iso-base-media/get-children.d.ts +6 -0
  36. package/dist/{boxes → containers}/iso-base-media/get-children.js +5 -7
  37. package/dist/containers/iso-base-media/get-keyframes.d.ts +3 -0
  38. package/dist/{boxes → containers}/iso-base-media/get-keyframes.js +3 -2
  39. package/dist/containers/iso-base-media/get-moov-atom.d.ts +6 -0
  40. package/dist/containers/iso-base-media/get-moov-atom.js +73 -0
  41. package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.d.ts +1 -1
  42. package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.js +1 -1
  43. package/dist/containers/iso-base-media/mdat/mdat.d.ts +3 -0
  44. package/dist/{boxes → containers}/iso-base-media/mdat/mdat.js +17 -12
  45. package/dist/{boxes → containers}/iso-base-media/moov/moov.d.ts +1 -3
  46. package/dist/{boxes → containers}/iso-base-media/moov/moov.js +1 -2
  47. package/dist/containers/iso-base-media/parse-boxes.d.ts +3 -0
  48. package/dist/containers/iso-base-media/parse-boxes.js +18 -0
  49. package/dist/containers/iso-base-media/process-box.d.ts +3 -0
  50. package/dist/{boxes → containers}/iso-base-media/process-box.js +52 -169
  51. package/dist/{boxes → containers}/iso-base-media/stsd/mebx.d.ts +1 -3
  52. package/dist/{boxes → containers}/iso-base-media/stsd/mebx.js +3 -4
  53. package/dist/{boxes → containers}/iso-base-media/stsd/samples.d.ts +4 -6
  54. package/dist/{boxes → containers}/iso-base-media/stsd/samples.js +5 -7
  55. package/dist/{boxes → containers}/iso-base-media/stsd/stsd.d.ts +1 -3
  56. package/dist/{boxes → containers}/iso-base-media/stsd/stsd.js +2 -2
  57. package/dist/{boxes → containers}/iso-base-media/trak/trak.d.ts +1 -3
  58. package/dist/{boxes → containers}/iso-base-media/trak/trak.js +1 -2
  59. package/dist/{boxes → containers}/iso-base-media/traversal.d.ts +4 -2
  60. package/dist/{boxes → containers}/iso-base-media/traversal.js +6 -2
  61. package/dist/containers/iso-base-media/void-box.js +2 -0
  62. package/dist/{boxes → containers}/mp3/get-duration.js +0 -3
  63. package/dist/containers/mp3/get-tracks-from-mp3.d.ts +4 -0
  64. package/dist/{boxes → containers}/mp3/get-tracks-from-mp3.js +6 -6
  65. package/dist/containers/mp3/id3.d.ts +4 -0
  66. package/dist/{boxes → containers}/mp3/id3.js +3 -2
  67. package/dist/containers/mp3/parse-mp3.d.ts +3 -0
  68. package/dist/{boxes → containers}/mp3/parse-mp3.js +7 -15
  69. package/dist/containers/mp3/parse-mpeg-header.d.ts +4 -0
  70. package/dist/{boxes → containers}/mp3/parse-mpeg-header.js +3 -2
  71. package/dist/containers/riff/expect-riff-box.d.ts +6 -0
  72. package/dist/{boxes → containers}/riff/expect-riff-box.js +7 -17
  73. package/dist/containers/riff/get-duration.d.ts +3 -0
  74. package/dist/containers/riff/get-duration.js +33 -0
  75. package/dist/{boxes → containers}/riff/get-tracks-from-avi.d.ts +1 -2
  76. package/dist/{boxes → containers}/riff/get-tracks-from-avi.js +1 -1
  77. package/dist/{boxes → containers}/riff/parse-list-box.d.ts +1 -3
  78. package/dist/{boxes → containers}/riff/parse-list-box.js +5 -9
  79. package/dist/containers/riff/parse-movi.d.ts +9 -0
  80. package/dist/{boxes → containers}/riff/parse-movi.js +13 -29
  81. package/dist/containers/riff/parse-riff-body.d.ts +3 -0
  82. package/dist/containers/riff/parse-riff-body.js +28 -0
  83. package/dist/{boxes → containers}/riff/parse-riff-box.d.ts +1 -3
  84. package/dist/{boxes → containers}/riff/parse-riff-box.js +3 -6
  85. package/dist/containers/riff/parse-riff-header.d.ts +3 -0
  86. package/dist/{boxes → containers}/riff/parse-riff-header.js +6 -11
  87. package/dist/containers/riff/parse-riff.d.ts +3 -0
  88. package/dist/{boxes → containers}/riff/parse-riff.js +4 -7
  89. package/dist/containers/riff/parse-video-section.d.ts +2 -0
  90. package/dist/{boxes → containers}/riff/parse-video-section.js +5 -8
  91. package/dist/{boxes → containers}/riff/riff-box.d.ts +5 -10
  92. package/dist/containers/riff/riff-box.js +2 -0
  93. package/dist/{boxes → containers}/riff/traversal.d.ts +1 -2
  94. package/dist/{boxes → containers}/transport-stream/adts-header.js +1 -0
  95. package/dist/containers/transport-stream/boxes.js +2 -0
  96. package/dist/{boxes → containers}/transport-stream/get-tracks.js +1 -1
  97. package/dist/{boxes → containers}/transport-stream/parse-packet.d.ts +1 -3
  98. package/dist/{boxes → containers}/transport-stream/parse-packet.js +3 -3
  99. package/dist/{boxes → containers}/transport-stream/parse-stream-packet.d.ts +1 -3
  100. package/dist/{boxes → containers}/transport-stream/parse-stream-packet.js +2 -1
  101. package/dist/containers/transport-stream/parse-transport-stream.d.ts +3 -0
  102. package/dist/{boxes → containers}/transport-stream/parse-transport-stream.js +5 -22
  103. package/dist/{boxes → containers}/transport-stream/process-stream-buffers.js +1 -1
  104. package/dist/containers/wav/get-duration-from-wav.d.ts +3 -0
  105. package/dist/containers/wav/get-duration-from-wav.js +26 -0
  106. package/dist/containers/wav/get-metadata-from-wav.d.ts +3 -0
  107. package/dist/containers/wav/get-metadata-from-wav.js +11 -0
  108. package/dist/containers/wav/parse-data.d.ts +5 -0
  109. package/dist/containers/wav/parse-data.js +25 -0
  110. package/dist/containers/wav/parse-fmt.d.ts +5 -0
  111. package/dist/containers/wav/parse-fmt.js +56 -0
  112. package/dist/containers/wav/parse-header.d.ts +5 -0
  113. package/dist/containers/wav/parse-header.js +17 -0
  114. package/dist/containers/wav/parse-id3.d.ts +5 -0
  115. package/dist/containers/wav/parse-id3.js +15 -0
  116. package/dist/containers/wav/parse-list.d.ts +5 -0
  117. package/dist/containers/wav/parse-list.js +32 -0
  118. package/dist/containers/wav/parse-video-section.d.ts +5 -0
  119. package/dist/containers/wav/parse-video-section.js +34 -0
  120. package/dist/containers/wav/parse-wav.d.ts +3 -0
  121. package/dist/containers/wav/parse-wav.js +36 -0
  122. package/dist/containers/wav/types.d.ts +30 -0
  123. package/dist/containers/wav/types.js +2 -0
  124. package/dist/{boxes → containers}/webm/parse-ebml.d.ts +1 -2
  125. package/dist/{boxes → containers}/webm/parse-ebml.js +4 -3
  126. package/dist/containers/webm/parse-webm-header.d.ts +3 -0
  127. package/dist/{boxes → containers}/webm/parse-webm-header.js +5 -12
  128. package/dist/{boxes → containers}/webm/segments.d.ts +1 -3
  129. package/dist/{boxes → containers}/webm/segments.js +7 -6
  130. package/dist/download-and-parse-media.d.ts +2 -0
  131. package/dist/download-and-parse-media.js +70 -0
  132. package/dist/emit-available-info.d.ts +2 -5
  133. package/dist/emit-available-info.js +104 -94
  134. package/dist/errors.d.ts +1 -1
  135. package/dist/esm/from-fetch.mjs +1 -1
  136. package/dist/esm/from-node.mjs +1 -1
  137. package/dist/esm/from-web-file.mjs +7 -7
  138. package/dist/esm/index.mjs +2118 -1069
  139. package/dist/esm/node.mjs +113 -0
  140. package/dist/file-types/detect-file-type.d.ts +5 -1
  141. package/dist/file-types/detect-file-type.js +6 -1
  142. package/dist/file-types/index.js +3 -0
  143. package/dist/get-audio-codec.d.ts +3 -4
  144. package/dist/get-audio-codec.js +6 -3
  145. package/dist/get-container.d.ts +2 -2
  146. package/dist/get-container.js +10 -1
  147. package/dist/get-dimensions.d.ts +2 -3
  148. package/dist/get-dimensions.js +13 -9
  149. package/dist/get-duration.d.ts +5 -5
  150. package/dist/get-duration.js +26 -27
  151. package/dist/get-fields-from-callbacks.js +4 -0
  152. package/dist/get-fps.d.ts +5 -5
  153. package/dist/get-fps.js +24 -14
  154. package/dist/get-is-hdr.d.ts +1 -2
  155. package/dist/get-is-hdr.js +2 -2
  156. package/dist/get-keyframes.d.ts +2 -3
  157. package/dist/get-keyframes.js +7 -5
  158. package/dist/get-location.d.ts +2 -2
  159. package/dist/get-location.js +2 -2
  160. package/dist/get-number-of-audio-channels.d.ts +3 -0
  161. package/dist/get-number-of-audio-channels.js +14 -0
  162. package/dist/get-sample-aspect-ratio.d.ts +8 -8
  163. package/dist/get-sample-aspect-ratio.js +1 -1
  164. package/dist/get-sample-positions-from-lpcm.d.ts +1 -1
  165. package/dist/get-sample-positions-from-lpcm.js +1 -1
  166. package/dist/get-sample-positions.d.ts +6 -6
  167. package/dist/get-sample-rate.d.ts +3 -0
  168. package/dist/get-sample-rate.js +14 -0
  169. package/dist/get-tracks.d.ts +8 -9
  170. package/dist/get-tracks.js +30 -23
  171. package/dist/get-video-codec.d.ts +2 -3
  172. package/dist/get-video-codec.js +4 -4
  173. package/dist/has-all-info.js +29 -18
  174. package/dist/index.d.ts +170 -66
  175. package/dist/index.js +10 -8
  176. package/dist/init-video.d.ts +7 -0
  177. package/dist/{parse-video.js → init-video.js} +31 -60
  178. package/dist/internal-parse-media.d.ts +2 -0
  179. package/dist/internal-parse-media.js +221 -0
  180. package/dist/is-audio-structure.d.ts +2 -0
  181. package/dist/is-audio-structure.js +31 -0
  182. package/dist/make-hvc1-codec-strings.js +4 -4
  183. package/dist/metadata/get-metadata.d.ts +2 -1
  184. package/dist/metadata/get-metadata.js +19 -3
  185. package/dist/metadata/metadata-from-iso.d.ts +3 -2
  186. package/dist/metadata/metadata-from-iso.js +3 -3
  187. package/dist/metadata/metadata-from-matroska.js +1 -1
  188. package/dist/metadata/metadata-from-riff.d.ts +1 -1
  189. package/dist/options.d.ts +88 -39
  190. package/dist/parse-and-download-media.d.ts +2 -0
  191. package/dist/parse-and-download-media.js +57 -0
  192. package/dist/parse-media.js +43 -172
  193. package/dist/parse-result.d.ts +10 -50
  194. package/dist/perform-seek.d.ts +10 -0
  195. package/dist/perform-seek.js +36 -0
  196. package/dist/readers/from-fetch.js +1 -1
  197. package/dist/readers/from-node.js +1 -1
  198. package/dist/readers/from-web-file.js +9 -9
  199. package/dist/readers/reader.d.ts +8 -3
  200. package/dist/register-track.d.ts +3 -3
  201. package/dist/register-track.js +5 -0
  202. package/dist/run-parse-iteration.d.ts +8 -0
  203. package/dist/run-parse-iteration.js +48 -0
  204. package/dist/samples-from-moof.js +1 -1
  205. package/dist/skip.d.ts +5 -0
  206. package/dist/skip.js +8 -0
  207. package/dist/state/aac-state.d.ts +13 -0
  208. package/dist/state/aac-state.js +17 -0
  209. package/dist/state/can-skip-tracks.js +5 -1
  210. package/dist/state/emitted-fields.js +4 -0
  211. package/dist/state/flac-state.d.ts +4 -0
  212. package/dist/state/flac-state.js +13 -0
  213. package/dist/state/has-tracks-section.d.ts +5 -2
  214. package/dist/state/has-tracks-section.js +11 -2
  215. package/dist/state/iso-base-media/cached-sample-positions.js +3 -3
  216. package/dist/state/iso-base-media/iso-state.d.ts +4 -2
  217. package/dist/state/iso-base-media/iso-state.js +2 -5
  218. package/dist/state/iso-base-media/moov-box.d.ts +5 -0
  219. package/dist/state/iso-base-media/moov-box.js +13 -0
  220. package/dist/state/last-eventloop-break.d.ts +4 -0
  221. package/dist/state/last-eventloop-break.js +18 -0
  222. package/dist/{may-skip-video-data → state}/may-skip-video-data.d.ts +1 -1
  223. package/dist/{may-skip-video-data → state}/need-samples-for-fields.js +4 -0
  224. package/dist/state/parser-state.d.ts +151 -51
  225. package/dist/state/parser-state.js +28 -5
  226. package/dist/state/sample-callbacks.d.ts +3 -2
  227. package/dist/state/sample-callbacks.js +1 -1
  228. package/dist/state/slow-duration-fps.d.ts +2 -0
  229. package/dist/state/slow-duration-fps.js +18 -0
  230. package/dist/state/structure.d.ts +7 -0
  231. package/dist/state/structure.js +56 -6
  232. package/dist/state/transport-stream.d.ts +3 -3
  233. package/dist/state/transport-stream.js +1 -1
  234. package/dist/state/webm.d.ts +2 -2
  235. package/dist/state/webm.js +1 -1
  236. package/dist/version.d.ts +1 -1
  237. package/dist/version.js +1 -1
  238. package/dist/webcodec-sample-types.d.ts +3 -3
  239. package/dist/writers/node.d.ts +4 -0
  240. package/dist/writers/node.js +81 -0
  241. package/dist/writers/writer.d.ts +17 -0
  242. package/dist/writers/writer.js +2 -0
  243. package/package.json +12 -9
  244. package/dist/boxes/iso-base-media/continue-mdat-routine.d.ts +0 -14
  245. package/dist/boxes/iso-base-media/continue-mdat-routine.js +0 -74
  246. package/dist/boxes/iso-base-media/get-children.d.ts +0 -8
  247. package/dist/boxes/iso-base-media/get-keyframes.d.ts +0 -3
  248. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -6
  249. package/dist/boxes/iso-base-media/parse-all-children.d.ts +0 -8
  250. package/dist/boxes/iso-base-media/parse-all-children.js +0 -20
  251. package/dist/boxes/iso-base-media/parse-boxes.js +0 -46
  252. package/dist/boxes/iso-base-media/parse-mdat-partially.d.ts +0 -9
  253. package/dist/boxes/iso-base-media/parse-mdat-partially.js +0 -24
  254. package/dist/boxes/iso-base-media/process-box.d.ts +0 -7
  255. package/dist/boxes/mp3/get-tracks-from-mp3.d.ts +0 -4
  256. package/dist/boxes/mp3/id3-v2.d.ts +0 -0
  257. package/dist/boxes/mp3/id3-v2.js +0 -1
  258. package/dist/boxes/mp3/id3.d.ts +0 -6
  259. package/dist/boxes/mp3/parse-mpeg-header.d.ts +0 -6
  260. package/dist/boxes/riff/continue-after-riff-result.d.ts +0 -13
  261. package/dist/boxes/riff/continue-after-riff-result.js +0 -34
  262. package/dist/boxes/riff/expect-riff-box.d.ts +0 -11
  263. package/dist/boxes/riff/parse-box.d.ts +0 -9
  264. package/dist/boxes/riff/parse-box.js +0 -35
  265. package/dist/boxes/riff/parse-fmt-box.d.ts +0 -8
  266. package/dist/boxes/riff/parse-fmt-box.js +0 -35
  267. package/dist/boxes/riff/parse-movi.d.ts +0 -14
  268. package/dist/boxes/riff/parse-riff-body.js +0 -25
  269. package/dist/boxes/riff/parse-riff-header.d.ts +0 -7
  270. package/dist/boxes/riff/parse-video-section.d.ts +0 -6
  271. package/dist/boxes/transport-stream/parse-transport-stream.d.ts +0 -7
  272. package/dist/boxes/webm/segments/parse-children.d.ts +0 -9
  273. package/dist/boxes/webm/segments/parse-children.js +0 -21
  274. package/dist/bun-reader.d.ts +0 -1
  275. package/dist/bun-reader.js +0 -17
  276. package/dist/continue-mdat-routine.d.ts +0 -17
  277. package/dist/continue-mdat-routine.js +0 -92
  278. package/dist/parse-video.d.ts +0 -14
  279. package/dist/state/iso-state.d.ts +0 -4
  280. package/dist/state/iso-state.js +0 -13
  281. /package/dist/{boxes/iso-base-media/base-type.js → containers/aac/types.js} +0 -0
  282. /package/dist/{boxes → containers}/avc/codec-string.d.ts +0 -0
  283. /package/dist/{boxes → containers}/avc/codec-string.js +0 -0
  284. /package/dist/{boxes → containers}/avc/color.d.ts +0 -0
  285. /package/dist/{boxes → containers}/avc/color.js +0 -0
  286. /package/dist/{boxes → containers}/avc/create-sps-pps-data.d.ts +0 -0
  287. /package/dist/{boxes → containers}/avc/create-sps-pps-data.js +0 -0
  288. /package/dist/{boxes → containers}/avc/interpret-sps.d.ts +0 -0
  289. /package/dist/{boxes → containers}/avc/interpret-sps.js +0 -0
  290. /package/dist/{boxes → containers}/avc/key.js +0 -0
  291. /package/dist/{boxes → containers}/avc/parse-avc.d.ts +0 -0
  292. /package/dist/{boxes → containers}/avc/parse-avc.js +0 -0
  293. /package/dist/{boxes → containers}/avc/sps-and-pps.d.ts +0 -0
  294. /package/dist/{boxes → containers}/avc/sps-and-pps.js +0 -0
  295. /package/dist/{boxes/iso-base-media/void-box.js → containers/flac/types.js} +0 -0
  296. /package/dist/{boxes/riff/riff-box.js → containers/iso-base-media/base-media-box.js} +0 -0
  297. /package/dist/{boxes → containers}/iso-base-media/base-type.d.ts +0 -0
  298. /package/dist/{boxes/transport-stream/boxes.js → containers/iso-base-media/base-type.js} +0 -0
  299. /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.d.ts +0 -0
  300. /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.js +0 -0
  301. /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.d.ts +0 -0
  302. /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.js +0 -0
  303. /package/dist/{boxes → containers}/iso-base-media/esds/esds.d.ts +0 -0
  304. /package/dist/{boxes → containers}/iso-base-media/esds/esds.js +0 -0
  305. /package/dist/{boxes → containers}/iso-base-media/ftyp.d.ts +0 -0
  306. /package/dist/{boxes → containers}/iso-base-media/ftyp.js +0 -0
  307. /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.d.ts +0 -0
  308. /package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.js +0 -0
  309. /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.d.ts +0 -0
  310. /package/dist/{boxes → containers}/iso-base-media/make-track.d.ts +0 -0
  311. /package/dist/{boxes → containers}/iso-base-media/make-track.js +0 -0
  312. /package/dist/{boxes → containers}/iso-base-media/mdhd.d.ts +0 -0
  313. /package/dist/{boxes → containers}/iso-base-media/mdhd.js +0 -0
  314. /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.d.ts +0 -0
  315. /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.js +0 -0
  316. /package/dist/{boxes → containers}/iso-base-media/meta/ilst.d.ts +0 -0
  317. /package/dist/{boxes → containers}/iso-base-media/meta/ilst.js +0 -0
  318. /package/dist/{boxes → containers}/iso-base-media/mvhd.d.ts +0 -0
  319. /package/dist/{boxes → containers}/iso-base-media/mvhd.js +0 -0
  320. /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.d.ts +0 -0
  321. /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.js +0 -0
  322. /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.d.ts +0 -0
  323. /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.js +0 -0
  324. /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.d.ts +0 -0
  325. /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.js +0 -0
  326. /package/dist/{boxes → containers}/iso-base-media/stsd/colr.d.ts +0 -0
  327. /package/dist/{boxes → containers}/iso-base-media/stsd/colr.js +0 -0
  328. /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.d.ts +0 -0
  329. /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.js +0 -0
  330. /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.d.ts +0 -0
  331. /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.js +0 -0
  332. /package/dist/{boxes → containers}/iso-base-media/stsd/keys.d.ts +0 -0
  333. /package/dist/{boxes → containers}/iso-base-media/stsd/keys.js +0 -0
  334. /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.d.ts +0 -0
  335. /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.js +0 -0
  336. /package/dist/{boxes → containers}/iso-base-media/stsd/stco.d.ts +0 -0
  337. /package/dist/{boxes → containers}/iso-base-media/stsd/stco.js +0 -0
  338. /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.d.ts +0 -0
  339. /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.js +0 -0
  340. /package/dist/{boxes → containers}/iso-base-media/stsd/stss.d.ts +0 -0
  341. /package/dist/{boxes → containers}/iso-base-media/stsd/stss.js +0 -0
  342. /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.d.ts +0 -0
  343. /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.js +0 -0
  344. /package/dist/{boxes → containers}/iso-base-media/stsd/stts.d.ts +0 -0
  345. /package/dist/{boxes → containers}/iso-base-media/stsd/stts.js +0 -0
  346. /package/dist/{boxes → containers}/iso-base-media/tfdt.d.ts +0 -0
  347. /package/dist/{boxes → containers}/iso-base-media/tfdt.js +0 -0
  348. /package/dist/{boxes → containers}/iso-base-media/tfhd.d.ts +0 -0
  349. /package/dist/{boxes → containers}/iso-base-media/tfhd.js +0 -0
  350. /package/dist/{boxes → containers}/iso-base-media/tkhd.d.ts +0 -0
  351. /package/dist/{boxes → containers}/iso-base-media/tkhd.js +0 -0
  352. /package/dist/{boxes → containers}/iso-base-media/to-date.d.ts +0 -0
  353. /package/dist/{boxes → containers}/iso-base-media/to-date.js +0 -0
  354. /package/dist/{boxes → containers}/iso-base-media/trun.d.ts +0 -0
  355. /package/dist/{boxes → containers}/iso-base-media/trun.js +0 -0
  356. /package/dist/{boxes → containers}/iso-base-media/void-box.d.ts +0 -0
  357. /package/dist/{boxes → containers}/mp3/get-duration.d.ts +0 -0
  358. /package/dist/{boxes → containers}/mp3/get-frame-length.d.ts +0 -0
  359. /package/dist/{boxes → containers}/mp3/get-frame-length.js +0 -0
  360. /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.d.ts +0 -0
  361. /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.js +0 -0
  362. /package/dist/{boxes → containers}/mp3/id3-v1.d.ts +0 -0
  363. /package/dist/{boxes → containers}/mp3/id3-v1.js +0 -0
  364. /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.d.ts +0 -0
  365. /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.js +0 -0
  366. /package/dist/{boxes → containers}/riff/is-movi.d.ts +0 -0
  367. /package/dist/{boxes → containers}/riff/is-movi.js +0 -0
  368. /package/dist/{boxes → containers}/riff/parse-avih.d.ts +0 -0
  369. /package/dist/{boxes → containers}/riff/parse-avih.js +0 -0
  370. /package/dist/{boxes → containers}/riff/parse-isft.d.ts +0 -0
  371. /package/dist/{boxes → containers}/riff/parse-isft.js +0 -0
  372. /package/dist/{boxes → containers}/riff/parse-strf.d.ts +0 -0
  373. /package/dist/{boxes → containers}/riff/parse-strf.js +0 -0
  374. /package/dist/{boxes → containers}/riff/parse-strh.d.ts +0 -0
  375. /package/dist/{boxes → containers}/riff/parse-strh.js +0 -0
  376. /package/dist/{boxes → containers}/riff/timescale.d.ts +0 -0
  377. /package/dist/{boxes → containers}/riff/timescale.js +0 -0
  378. /package/dist/{boxes → containers}/riff/traversal.js +0 -0
  379. /package/dist/{boxes → containers}/transport-stream/adts-header.d.ts +0 -0
  380. /package/dist/{boxes → containers}/transport-stream/boxes.d.ts +0 -0
  381. /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.d.ts +0 -0
  382. /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.js +0 -0
  383. /package/dist/{boxes → containers}/transport-stream/find-separator.d.ts +0 -0
  384. /package/dist/{boxes → containers}/transport-stream/find-separator.js +0 -0
  385. /package/dist/{boxes → containers}/transport-stream/get-tracks.d.ts +0 -0
  386. /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.d.ts +0 -0
  387. /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.js +0 -0
  388. /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.d.ts +0 -0
  389. /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.js +0 -0
  390. /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.d.ts +0 -0
  391. /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.js +0 -0
  392. /package/dist/{boxes → containers}/transport-stream/parse-pat.d.ts +0 -0
  393. /package/dist/{boxes → containers}/transport-stream/parse-pat.js +0 -0
  394. /package/dist/{boxes → containers}/transport-stream/parse-pes.d.ts +0 -0
  395. /package/dist/{boxes → containers}/transport-stream/parse-pes.js +0 -0
  396. /package/dist/{boxes → containers}/transport-stream/parse-pmt.d.ts +0 -0
  397. /package/dist/{boxes → containers}/transport-stream/parse-pmt.js +0 -0
  398. /package/dist/{boxes → containers}/transport-stream/process-stream-buffers.d.ts +0 -0
  399. /package/dist/{boxes → containers}/transport-stream/traversal.d.ts +0 -0
  400. /package/dist/{boxes → containers}/transport-stream/traversal.js +0 -0
  401. /package/dist/{boxes → containers}/webm/allowed-partial-segments.d.ts +0 -0
  402. /package/dist/{boxes → containers}/webm/allowed-partial-segments.js +0 -0
  403. /package/dist/{boxes → containers}/webm/av1-codec-private.d.ts +0 -0
  404. /package/dist/{boxes → containers}/webm/av1-codec-private.js +0 -0
  405. /package/dist/{boxes → containers}/webm/color.d.ts +0 -0
  406. /package/dist/{boxes → containers}/webm/color.js +0 -0
  407. /package/dist/{boxes → containers}/webm/description.d.ts +0 -0
  408. /package/dist/{boxes → containers}/webm/description.js +0 -0
  409. /package/dist/{boxes → containers}/webm/get-ready-tracks.d.ts +0 -0
  410. /package/dist/{boxes → containers}/webm/get-ready-tracks.js +0 -0
  411. /package/dist/{boxes → containers}/webm/get-sample-from-block.d.ts +0 -0
  412. /package/dist/{boxes → containers}/webm/get-sample-from-block.js +0 -0
  413. /package/dist/{boxes → containers}/webm/make-track.d.ts +0 -0
  414. /package/dist/{boxes → containers}/webm/make-track.js +0 -0
  415. /package/dist/{boxes → containers}/webm/segments/all-segments.d.ts +0 -0
  416. /package/dist/{boxes → containers}/webm/segments/all-segments.js +0 -0
  417. /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.d.ts +0 -0
  418. /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.js +0 -0
  419. /package/dist/{boxes → containers}/webm/segments/track-entry.d.ts +0 -0
  420. /package/dist/{boxes → containers}/webm/segments/track-entry.js +0 -0
  421. /package/dist/{boxes → containers}/webm/traversal.d.ts +0 -0
  422. /package/dist/{boxes → containers}/webm/traversal.js +0 -0
  423. /package/dist/{may-skip-video-data → state}/may-skip-video-data.js +0 -0
  424. /package/dist/{may-skip-video-data → state}/need-samples-for-fields.d.ts +0 -0
@@ -1,12 +1,3 @@
1
- export type WaveFormatBox = {
2
- type: 'wave-format-box';
3
- formatTag: 1;
4
- numberOfChannels: number;
5
- sampleRate: number;
6
- blockAlign: number;
7
- byteRate: number;
8
- bitsPerSample: number;
9
- };
10
1
  export type ListBox = {
11
2
  type: 'list-box';
12
3
  listType: string;
@@ -81,4 +72,8 @@ export type IsftBox = {
81
72
  type: 'isft-box';
82
73
  software: string;
83
74
  };
84
- export type RiffBox = RiffRegularBox | WaveFormatBox | RiffHeader | ListBox | AvihBox | StrhBox | StrfBoxVideo | StrfBoxAudio | IsftBox;
75
+ export type RiffBox = RiffRegularBox | RiffHeader | ListBox | AvihBox | StrhBox | StrfBoxVideo | StrfBoxAudio | IsftBox;
76
+ export type RiffStructure = {
77
+ type: 'riff';
78
+ boxes: RiffBox[];
79
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,4 @@
1
- import type { RiffStructure } from '../../parse-result';
2
- import type { AvihBox, ListBox, RiffBox, StrhBox } from './riff-box';
1
+ import type { AvihBox, ListBox, RiffBox, RiffStructure, StrhBox } from './riff-box';
3
2
  export declare const isRiffAvi: (structure: RiffStructure) => boolean;
4
3
  export declare const getHdlrBox: (structure: RiffStructure) => ListBox | null;
5
4
  export declare const getAvihBox: (structure: RiffStructure) => AvihBox | null;
@@ -32,6 +32,7 @@ const readAdtsHeader = (buffer) => {
32
32
  audioObjectType,
33
33
  sampleRate,
34
34
  channelConfiguration,
35
+ codecPrivate: null,
35
36
  });
36
37
  iterator.getBits(1); // originality
37
38
  iterator.getBits(1); // home
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -4,7 +4,7 @@ exports.hasAllTracksFromTransportStream = exports.getTracksFromTransportStream =
4
4
  const truthy_1 = require("../../truthy");
5
5
  const traversal_1 = require("./traversal");
6
6
  const getTracksFromTransportStream = (parserState) => {
7
- const structure = parserState.structure.getStructure();
7
+ const structure = parserState.getTsStructure();
8
8
  const programMapTable = (0, traversal_1.findProgramMapTableOrThrow)(structure);
9
9
  const parserTracks = parserState.callbacks.tracks.getTracks();
10
10
  const mapped = programMapTable.streams
@@ -1,7 +1,5 @@
1
- import type { BufferIterator } from '../../buffer-iterator';
2
1
  import type { ParserState } from '../../state/parser-state';
3
2
  import type { TransportStreamBox } from './boxes';
4
- export declare const parsePacket: ({ iterator, parserState, }: {
5
- iterator: BufferIterator;
3
+ export declare const parsePacket: ({ parserState, }: {
6
4
  parserState: ParserState;
7
5
  }) => Promise<TransportStreamBox | null>;
@@ -6,7 +6,8 @@ const parse_pes_1 = require("./parse-pes");
6
6
  const parse_pmt_1 = require("./parse-pmt");
7
7
  const parse_stream_packet_1 = require("./parse-stream-packet");
8
8
  const traversal_1 = require("./traversal");
9
- const parsePacket = async ({ iterator, parserState, }) => {
9
+ const parsePacket = async ({ parserState, }) => {
10
+ const { iterator } = parserState;
10
11
  const offset = iterator.counter.getOffset();
11
12
  const syncByte = iterator.getUint8();
12
13
  if (syncByte !== 0x47) {
@@ -45,7 +46,7 @@ const parsePacket = async ({ iterator, parserState, }) => {
45
46
  if (read === 188) {
46
47
  return Promise.resolve(null);
47
48
  }
48
- const structure = parserState.structure.getStructure();
49
+ const structure = parserState.getTsStructure();
49
50
  const pat = structure.boxes.find((b) => b.type === 'transport-stream-pmt-box');
50
51
  const isPes = payloadUnitStartIndicator && (pat === null || pat === void 0 ? void 0 : pat.streams.find((e) => e.pid === programId));
51
52
  if (isPes) {
@@ -66,7 +67,6 @@ const parsePacket = async ({ iterator, parserState, }) => {
66
67
  const stream = (0, traversal_1.getStreamForId)(structure, programId);
67
68
  if (stream) {
68
69
  await (0, parse_stream_packet_1.parseStream)({
69
- iterator,
70
70
  transportStreamEntry: stream,
71
71
  state: parserState,
72
72
  programId,
@@ -1,9 +1,7 @@
1
- import type { BufferIterator } from '../../buffer-iterator';
2
1
  import type { TransportStreamStructure } from '../../parse-result';
3
2
  import type { ParserState } from '../../state/parser-state';
4
3
  import type { TransportStreamEntry } from './parse-pmt';
5
- export declare const parseStream: ({ iterator, transportStreamEntry, state, programId, structure, }: {
6
- iterator: BufferIterator;
4
+ export declare const parseStream: ({ transportStreamEntry, state, programId, structure, }: {
7
5
  transportStreamEntry: TransportStreamEntry;
8
6
  state: ParserState;
9
7
  programId: number;
@@ -86,7 +86,8 @@ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, programId, s
86
86
  offset,
87
87
  });
88
88
  };
89
- const parseStream = ({ iterator, transportStreamEntry, state, programId, structure, }) => {
89
+ const parseStream = ({ transportStreamEntry, state, programId, structure, }) => {
90
+ const { iterator } = state;
90
91
  const restOfPacket = (0, discard_rest_of_packet_1.getRestOfPacket)(iterator);
91
92
  if (transportStreamEntry.streamType === 27) {
92
93
  return parseAvcStream({
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseTransportStream: (state: ParserState) => Promise<ParseResult>;
@@ -3,26 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseTransportStream = void 0;
4
4
  const parse_packet_1 = require("./parse-packet");
5
5
  const process_stream_buffers_1 = require("./process-stream-buffers");
6
- const parseTransportStream = async ({ iterator, state, }) => {
7
- const structure = state.structure.getStructure();
8
- if (structure.type !== 'transport-stream') {
9
- throw new Error('Invalid structure type');
10
- }
11
- const continueParsing = () => {
12
- return (0, exports.parseTransportStream)({
13
- iterator,
14
- state,
15
- });
16
- };
6
+ const parseTransportStream = async (state) => {
7
+ const structure = state.getTsStructure();
8
+ const { iterator } = state;
17
9
  if (iterator.bytesRemaining() < 188) {
18
- return Promise.resolve({
19
- status: 'incomplete',
20
- continueParsing,
21
- skipTo: null,
22
- });
10
+ return Promise.resolve(null);
23
11
  }
24
12
  const packet = await (0, parse_packet_1.parsePacket)({
25
- iterator,
26
13
  parserState: state,
27
14
  });
28
15
  if (packet) {
@@ -34,10 +21,6 @@ const parseTransportStream = async ({ iterator, state, }) => {
34
21
  structure,
35
22
  });
36
23
  }
37
- return Promise.resolve({
38
- status: 'incomplete',
39
- continueParsing,
40
- skipTo: null,
41
- });
24
+ return Promise.resolve(null);
42
25
  };
43
26
  exports.parseTransportStream = parseTransportStream;
@@ -31,7 +31,7 @@ const processStreamBuffer = async ({ streamBuffer, state, programId, structure,
31
31
  const tracksRegistered = state.callbacks.tracks.getTracks().length;
32
32
  const { streams } = (0, traversal_1.findProgramMapTableOrThrow)(structure);
33
33
  if (streams.length === tracksRegistered) {
34
- state.callbacks.tracks.setIsDone();
34
+ state.callbacks.tracks.setIsDone(state.logLevel);
35
35
  }
36
36
  }
37
37
  };
@@ -0,0 +1,3 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ export declare const getDurationFromWav: (state: ParserState) => number;
3
+ export declare const hasDurationFromWav: (state: ParserState) => number | false;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasDurationFromWav = exports.getDurationFromWav = void 0;
4
+ const getDurationFromWav = (state) => {
5
+ const structure = state.getWavStructure();
6
+ const fmt = structure.boxes.find((b) => b.type === 'wav-fmt');
7
+ if (!fmt) {
8
+ throw new Error('Expected fmt box');
9
+ }
10
+ const dataBox = structure.boxes.find((b) => b.type === 'wav-data');
11
+ if (!dataBox) {
12
+ throw new Error('Expected data box');
13
+ }
14
+ const durationInSeconds = dataBox.dataSize / (fmt.sampleRate * fmt.blockAlign);
15
+ return durationInSeconds;
16
+ };
17
+ exports.getDurationFromWav = getDurationFromWav;
18
+ const hasDurationFromWav = (state) => {
19
+ try {
20
+ return (0, exports.getDurationFromWav)(state);
21
+ }
22
+ catch (_a) {
23
+ return false;
24
+ }
25
+ };
26
+ exports.hasDurationFromWav = hasDurationFromWav;
@@ -0,0 +1,3 @@
1
+ import type { MetadataEntry } from '../../metadata/get-metadata';
2
+ import type { WavStructure } from './types';
3
+ export declare const getMetadataFromWav: (structure: WavStructure) => MetadataEntry[] | null;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMetadataFromWav = void 0;
4
+ const getMetadataFromWav = (structure) => {
5
+ const list = structure.boxes.find((b) => b.type === 'wav-list');
6
+ if (!list) {
7
+ return null;
8
+ }
9
+ return list.metadata;
10
+ };
11
+ exports.getMetadataFromWav = getMetadataFromWav;
@@ -0,0 +1,5 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseData: ({ state, }: {
4
+ state: ParserState;
5
+ }) => Promise<ParseResult>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseData = void 0;
4
+ const skip_1 = require("../../skip");
5
+ const may_skip_video_data_1 = require("../../state/may-skip-video-data");
6
+ const parseData = ({ state, }) => {
7
+ const { iterator } = state;
8
+ const ckSize = iterator.getUint32Le(); // chunkSize
9
+ const box = {
10
+ type: 'wav-data',
11
+ dataSize: ckSize,
12
+ };
13
+ state.getWavStructure().boxes.push(box);
14
+ state.callbacks.tracks.setIsDone(state.logLevel);
15
+ state.videoSection.setVideoSection({
16
+ size: ckSize,
17
+ start: iterator.counter.getOffset(),
18
+ });
19
+ if ((0, may_skip_video_data_1.maySkipVideoData)({ state })) {
20
+ // Skipping only in query mode
21
+ return Promise.resolve((0, skip_1.makeSkip)(iterator.counter.getOffset() + ckSize));
22
+ }
23
+ return Promise.resolve(null);
24
+ };
25
+ exports.parseData = parseData;
@@ -0,0 +1,5 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseFmt: ({ state, }: {
4
+ state: ParserState;
5
+ }) => Promise<ParseResult>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFmt = void 0;
4
+ const register_track_1 = require("../../register-track");
5
+ const parseFmt = async ({ state, }) => {
6
+ const { iterator } = state;
7
+ const ckSize = iterator.getUint32Le(); // chunkSize
8
+ const box = iterator.startBox(ckSize);
9
+ const audioFormat = iterator.getUint16Le();
10
+ if (audioFormat !== 1) {
11
+ throw new Error(`Only supporting WAVE with PCM audio format, but got ${audioFormat}`);
12
+ }
13
+ const numberOfChannels = iterator.getUint16Le();
14
+ const sampleRate = iterator.getUint32Le();
15
+ const byteRate = iterator.getUint32Le();
16
+ const blockAlign = iterator.getUint16Le();
17
+ const bitsPerSample = iterator.getUint16Le();
18
+ const format = bitsPerSample === 16
19
+ ? 'pcm-s16'
20
+ : bitsPerSample === 32
21
+ ? 'pcm-s32'
22
+ : bitsPerSample === 24
23
+ ? 'pcm-s24'
24
+ : null;
25
+ if (format === null) {
26
+ throw new Error(`Unsupported bits per sample: ${bitsPerSample}`);
27
+ }
28
+ const wavHeader = {
29
+ bitsPerSample,
30
+ blockAlign,
31
+ byteRate,
32
+ numberOfChannels,
33
+ sampleRate,
34
+ type: 'wav-fmt',
35
+ };
36
+ state.getWavStructure().boxes.push(wavHeader);
37
+ await (0, register_track_1.registerTrack)({
38
+ state,
39
+ track: {
40
+ type: 'audio',
41
+ codec: format,
42
+ codecPrivate: null,
43
+ description: undefined,
44
+ codecWithoutConfig: format,
45
+ numberOfChannels,
46
+ sampleRate,
47
+ timescale: 1000000,
48
+ trackId: 0,
49
+ trakBox: null,
50
+ },
51
+ container: 'wav',
52
+ });
53
+ box.expectNoMoreBytes();
54
+ return Promise.resolve(null);
55
+ };
56
+ exports.parseFmt = parseFmt;
@@ -0,0 +1,5 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseHeader: ({ state, }: {
4
+ state: ParserState;
5
+ }) => Promise<ParseResult>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseHeader = void 0;
4
+ const parseHeader = ({ state, }) => {
5
+ const fileSize = state.iterator.getUint32Le();
6
+ const fileType = state.iterator.getByteString(4, false);
7
+ if (fileType !== 'WAVE') {
8
+ throw new Error(`Expected WAVE, got ${fileType}`);
9
+ }
10
+ const header = {
11
+ type: 'wav-header',
12
+ fileSize,
13
+ };
14
+ state.getWavStructure().boxes.push(header);
15
+ return Promise.resolve(null);
16
+ };
17
+ exports.parseHeader = parseHeader;
@@ -0,0 +1,5 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseId3: ({ state, }: {
4
+ state: ParserState;
5
+ }) => Promise<ParseResult>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseId3 = void 0;
4
+ // non-standard, we discard it in favor of LIST boxes
5
+ const parseId3 = ({ state, }) => {
6
+ const { iterator } = state;
7
+ const id3Size = iterator.getUint32Le();
8
+ iterator.discard(id3Size);
9
+ const id3Box = {
10
+ type: 'wav-id3',
11
+ };
12
+ state.getWavStructure().boxes.push(id3Box);
13
+ return Promise.resolve(null);
14
+ };
15
+ exports.parseId3 = parseId3;
@@ -0,0 +1,5 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseList: ({ state, }: {
4
+ state: ParserState;
5
+ }) => Promise<ParseResult>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseList = void 0;
4
+ const parseList = ({ state, }) => {
5
+ const { iterator } = state;
6
+ const ckSize = iterator.getUint32Le(); // chunkSize
7
+ const box = iterator.startBox(ckSize);
8
+ const startOffset = iterator.counter.getOffset();
9
+ const type = iterator.getByteString(4, false);
10
+ if (type !== 'INFO') {
11
+ throw new Error(`Only supporting LIST INFO, but got ${type}`);
12
+ }
13
+ const metadata = [];
14
+ while (iterator.counter.getOffset() < startOffset + ckSize) {
15
+ const key = iterator.getByteString(4, false);
16
+ const size = iterator.getUint32Le();
17
+ const value = iterator.getByteString(size, true);
18
+ metadata.push({
19
+ key,
20
+ trackId: null,
21
+ value,
22
+ });
23
+ }
24
+ const wavList = {
25
+ type: 'wav-list',
26
+ metadata,
27
+ };
28
+ state.getWavStructure().boxes.push(wavList);
29
+ box.expectNoMoreBytes();
30
+ return Promise.resolve(null);
31
+ };
32
+ exports.parseList = parseList;
@@ -0,0 +1,5 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseVideoSection: ({ state, }: {
4
+ state: ParserState;
5
+ }) => Promise<ParseResult>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseVideoSection = void 0;
4
+ const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
5
+ const parseVideoSection = async ({ state, }) => {
6
+ const { iterator } = state;
7
+ const structure = state.getWavStructure();
8
+ const videoSection = state.videoSection.getVideoSection();
9
+ const maxOffset = videoSection.start + videoSection.size;
10
+ const maxRead = maxOffset - iterator.counter.getOffset();
11
+ const offset = iterator.counter.getOffset();
12
+ const fmtBox = structure.boxes.find((box) => box.type === 'wav-fmt');
13
+ if (!fmtBox) {
14
+ throw new Error('Expected fmt box');
15
+ }
16
+ const secondsToRead = 1;
17
+ const toRead = Math.min(maxRead, fmtBox.sampleRate * fmtBox.blockAlign * secondsToRead);
18
+ const duration = toRead / (fmtBox.sampleRate * fmtBox.blockAlign);
19
+ const timestamp = (offset - videoSection.start) / (fmtBox.sampleRate * fmtBox.blockAlign);
20
+ const data = iterator.getSlice(toRead);
21
+ await state.callbacks.onAudioSample(0, (0, convert_audio_or_video_sample_1.convertAudioOrVideoSampleToWebCodecsTimestamps)({
22
+ cts: timestamp,
23
+ dts: timestamp,
24
+ data,
25
+ duration,
26
+ timestamp,
27
+ trackId: 0,
28
+ type: 'key',
29
+ offset,
30
+ timescale: 1000000,
31
+ }, 1));
32
+ return null;
33
+ };
34
+ exports.parseVideoSection = parseVideoSection;
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseWav: (state: ParserState) => Promise<ParseResult>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseWav = void 0;
4
+ const log_1 = require("../../log");
5
+ const parse_data_1 = require("./parse-data");
6
+ const parse_fmt_1 = require("./parse-fmt");
7
+ const parse_header_1 = require("./parse-header");
8
+ const parse_id3_1 = require("./parse-id3");
9
+ const parse_list_1 = require("./parse-list");
10
+ const parse_video_section_1 = require("./parse-video-section");
11
+ const parseWav = (state) => {
12
+ const { iterator } = state;
13
+ const insideVideoSection = state.videoSection.isInVideoSectionState(iterator);
14
+ if (insideVideoSection === 'in-section') {
15
+ return (0, parse_video_section_1.parseVideoSection)({ state });
16
+ }
17
+ const type = iterator.getByteString(4, false);
18
+ log_1.Log.trace(state.logLevel, `Processing box type ${type}`);
19
+ if (type === 'RIFF') {
20
+ return (0, parse_header_1.parseHeader)({ state });
21
+ }
22
+ if (type === 'fmt') {
23
+ return (0, parse_fmt_1.parseFmt)({ state });
24
+ }
25
+ if (type === 'data') {
26
+ return (0, parse_data_1.parseData)({ state });
27
+ }
28
+ if (type === 'LIST') {
29
+ return (0, parse_list_1.parseList)({ state });
30
+ }
31
+ if (type === 'id3') {
32
+ return (0, parse_id3_1.parseId3)({ state });
33
+ }
34
+ throw new Error(`Unknown WAV box type ${type}`);
35
+ };
36
+ exports.parseWav = parseWav;
@@ -0,0 +1,30 @@
1
+ import type { MetadataEntry } from '../../metadata/get-metadata';
2
+ export type WavHeader = {
3
+ type: 'wav-header';
4
+ fileSize: number;
5
+ };
6
+ export type WavFmt = {
7
+ type: 'wav-fmt';
8
+ numberOfChannels: number;
9
+ sampleRate: number;
10
+ byteRate: number;
11
+ blockAlign: number;
12
+ bitsPerSample: number;
13
+ };
14
+ export type WavList = {
15
+ type: 'wav-list';
16
+ metadata: MetadataEntry[];
17
+ };
18
+ export type WavId3 = {
19
+ type: 'wav-id3';
20
+ };
21
+ export type WavData = {
22
+ type: 'wav-data';
23
+ dataSize: number;
24
+ };
25
+ type WavBox = WavHeader | WavFmt | WavList | WavId3 | WavData;
26
+ export type WavStructure = {
27
+ type: 'wav';
28
+ boxes: WavBox[];
29
+ };
30
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,10 +1,9 @@
1
- import { type BufferIterator } from '../../buffer-iterator';
2
1
  import type { ParserState } from '../../state/parser-state';
3
2
  import type { PossibleEbml } from './segments/all-segments';
4
3
  export type Prettify<T> = {
5
4
  [K in keyof T]: T[K];
6
5
  } & {};
7
- export declare const parseEbml: (iterator: BufferIterator, state: ParserState) => Promise<Prettify<PossibleEbml>>;
6
+ export declare const parseEbml: (state: ParserState) => Promise<Prettify<PossibleEbml>>;
8
7
  export declare const postprocessEbml: ({ offset, ebml, state, }: {
9
8
  offset: number;
10
9
  ebml: Prettify<PossibleEbml>;
@@ -5,7 +5,8 @@ const register_track_1 = require("../../register-track");
5
5
  const get_sample_from_block_1 = require("./get-sample-from-block");
6
6
  const make_track_1 = require("./make-track");
7
7
  const all_segments_1 = require("./segments/all-segments");
8
- const parseEbml = async (iterator, state) => {
8
+ const parseEbml = async (state) => {
9
+ const { iterator } = state;
9
10
  const hex = iterator.getMatroskaSegmentId();
10
11
  if (hex === null) {
11
12
  throw new Error('Not enough bytes left to parse EBML - this should not happen');
@@ -83,7 +84,7 @@ const parseEbml = async (iterator, state) => {
83
84
  break;
84
85
  }
85
86
  const offset = iterator.counter.getOffset();
86
- const value = await (0, exports.parseEbml)(iterator, state);
87
+ const value = await (0, exports.parseEbml)(state);
87
88
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
88
89
  const remapped = await (0, exports.postprocessEbml)({
89
90
  offset,
@@ -110,7 +111,7 @@ const postprocessEbml = async ({ offset, ebml, state, }) => {
110
111
  state.webm.setTimescale(ebml.value.value);
111
112
  }
112
113
  if (ebml.type === 'Tracks') {
113
- state.callbacks.tracks.setIsDone();
114
+ state.callbacks.tracks.setIsDone(state.logLevel);
114
115
  }
115
116
  if (ebml.type === 'TrackEntry') {
116
117
  state.webm.onTrackEntrySegment(ebml);
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseWebm: (state: ParserState) => Promise<ParseResult>;
@@ -3,22 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseWebm = void 0;
4
4
  const segments_1 = require("./segments");
5
5
  // Parsing according to https://darkcoding.net/software/reading-mediarecorders-webm-opus-output/
6
- const parseWebm = async ({ iterator, state, }) => {
7
- const structure = state.structure.getStructure();
8
- if (structure.type !== 'matroska') {
9
- throw new Error('Invalid structure type');
10
- }
6
+ const parseWebm = async (state) => {
7
+ const structure = state.getMatroskaStructure();
8
+ const { iterator } = state;
11
9
  const isInsideSegment = state.webm.isInsideSegment(iterator);
12
10
  const isInsideCluster = state.webm.isInsideCluster(iterator);
13
11
  const results = await (0, segments_1.expectSegment)({
14
- iterator,
15
12
  state,
16
13
  isInsideSegment,
17
14
  });
18
15
  if (results === null) {
19
- return {
20
- skipTo: null,
21
- };
16
+ return null;
22
17
  }
23
18
  if (isInsideCluster) {
24
19
  const segments = structure.boxes.filter((box) => box.type === 'Segment');
@@ -46,8 +41,6 @@ const parseWebm = async ({ iterator, state, }) => {
46
41
  else {
47
42
  structure.boxes.push(results);
48
43
  }
49
- return {
50
- skipTo: null,
51
- };
44
+ return null;
52
45
  };
53
46
  exports.parseWebm = parseWebm;
@@ -1,11 +1,9 @@
1
- import type { BufferIterator } from '../../buffer-iterator';
2
1
  import type { ParserState } from '../../state/parser-state';
3
2
  import type { SegmentSection } from '../../state/webm';
4
3
  import { type PossibleEbml, type TrackEntry } from './segments/all-segments';
5
4
  export type MatroskaSegment = PossibleEbml;
6
5
  export type OnTrackEntrySegment = (trackEntry: TrackEntry) => void;
7
- export declare const expectSegment: ({ iterator, state, isInsideSegment, }: {
8
- iterator: BufferIterator;
6
+ export declare const expectSegment: ({ state, isInsideSegment, }: {
9
7
  state: ParserState;
10
8
  isInsideSegment: SegmentSection | null;
11
9
  }) => Promise<MatroskaSegment | null>;