@remotion/media-parser 4.0.255 → 4.0.256

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 (299) hide show
  1. package/dist/add-new-matroska-tracks.d.ts +8 -0
  2. package/dist/add-new-matroska-tracks.js +14 -0
  3. package/dist/boxes/avc/parse-avc.d.ts +18 -0
  4. package/dist/boxes/avc/parse-avc.js +96 -0
  5. package/dist/boxes/iso-base-media/base-type.d.ts +4 -0
  6. package/dist/boxes/iso-base-media/base-type.js +2 -0
  7. package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +14 -0
  8. package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +38 -0
  9. package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +29 -0
  10. package/dist/boxes/iso-base-media/esds/esds-descriptors.js +82 -0
  11. package/dist/boxes/iso-base-media/esds/esds.d.ts +15 -0
  12. package/dist/boxes/iso-base-media/esds/esds.js +27 -0
  13. package/dist/boxes/iso-base-media/ftyp.d.ts +13 -0
  14. package/dist/boxes/iso-base-media/ftyp.js +22 -0
  15. package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +13 -0
  16. package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +22 -0
  17. package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +4 -0
  18. package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +54 -0
  19. package/dist/boxes/iso-base-media/make-track.d.ts +3 -0
  20. package/dist/boxes/iso-base-media/make-track.js +107 -0
  21. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +25 -0
  22. package/dist/boxes/iso-base-media/mdat/mdat.js +122 -0
  23. package/dist/boxes/iso-base-media/mdhd.d.ts +16 -0
  24. package/dist/boxes/iso-base-media/mdhd.js +32 -0
  25. package/dist/boxes/iso-base-media/meta/hdlr.d.ts +12 -0
  26. package/dist/boxes/iso-base-media/meta/hdlr.js +33 -0
  27. package/dist/boxes/iso-base-media/meta/ilst.d.ts +28 -0
  28. package/dist/boxes/iso-base-media/meta/ilst.js +86 -0
  29. package/dist/boxes/iso-base-media/moov/moov.d.ts +19 -0
  30. package/dist/boxes/iso-base-media/moov/moov.js +27 -0
  31. package/dist/boxes/iso-base-media/mvhd.d.ts +30 -0
  32. package/dist/boxes/iso-base-media/mvhd.js +65 -0
  33. package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +36 -0
  34. package/dist/boxes/iso-base-media/parse-icc-profile.js +115 -0
  35. package/dist/boxes/iso-base-media/process-box.d.ts +34 -0
  36. package/dist/boxes/iso-base-media/process-box.js +710 -0
  37. package/dist/boxes/iso-base-media/stsd/av1c.d.ts +9 -0
  38. package/dist/boxes/iso-base-media/stsd/av1c.js +10 -0
  39. package/dist/boxes/iso-base-media/stsd/avcc.d.ts +10 -0
  40. package/dist/boxes/iso-base-media/stsd/avcc.js +21 -0
  41. package/dist/boxes/iso-base-media/stsd/colr.d.ts +21 -0
  42. package/dist/boxes/iso-base-media/stsd/colr.js +47 -0
  43. package/dist/boxes/iso-base-media/stsd/ctts.d.ts +19 -0
  44. package/dist/boxes/iso-base-media/stsd/ctts.js +34 -0
  45. package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +11 -0
  46. package/dist/boxes/iso-base-media/stsd/hvcc.js +17 -0
  47. package/dist/boxes/iso-base-media/stsd/keys.d.ts +19 -0
  48. package/dist/boxes/iso-base-media/stsd/keys.js +35 -0
  49. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +19 -0
  50. package/dist/boxes/iso-base-media/stsd/mebx.js +32 -0
  51. package/dist/boxes/iso-base-media/stsd/pasp.d.ts +12 -0
  52. package/dist/boxes/iso-base-media/stsd/pasp.js +17 -0
  53. package/dist/boxes/iso-base-media/stsd/samples.d.ts +68 -0
  54. package/dist/boxes/iso-base-media/stsd/samples.js +320 -0
  55. package/dist/boxes/iso-base-media/stsd/stco.d.ts +15 -0
  56. package/dist/boxes/iso-base-media/stsd/stco.js +30 -0
  57. package/dist/boxes/iso-base-media/stsd/stsc.d.ts +19 -0
  58. package/dist/boxes/iso-base-media/stsd/stsc.js +34 -0
  59. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +18 -0
  60. package/dist/boxes/iso-base-media/stsd/stsd.js +33 -0
  61. package/dist/boxes/iso-base-media/stsd/stss.d.ts +13 -0
  62. package/dist/boxes/iso-base-media/stsd/stss.js +28 -0
  63. package/dist/boxes/iso-base-media/stsd/stsz.d.ts +21 -0
  64. package/dist/boxes/iso-base-media/stsd/stsz.js +44 -0
  65. package/dist/boxes/iso-base-media/stsd/stts.d.ts +15 -0
  66. package/dist/boxes/iso-base-media/stsd/stts.js +35 -0
  67. package/dist/boxes/iso-base-media/tfdt.d.ts +12 -0
  68. package/dist/boxes/iso-base-media/tfdt.js +20 -0
  69. package/dist/boxes/iso-base-media/tfhd.d.ts +16 -0
  70. package/dist/boxes/iso-base-media/tfhd.js +41 -0
  71. package/dist/boxes/iso-base-media/tkhd.d.ts +25 -0
  72. package/dist/boxes/iso-base-media/tkhd.js +87 -0
  73. package/dist/boxes/iso-base-media/to-date.d.ts +2 -0
  74. package/dist/boxes/iso-base-media/to-date.js +19 -0
  75. package/dist/boxes/iso-base-media/trak/trak.d.ts +19 -0
  76. package/dist/boxes/iso-base-media/trak/trak.js +27 -0
  77. package/dist/boxes/iso-base-media/traversal.d.ts +39 -0
  78. package/dist/boxes/iso-base-media/traversal.js +201 -0
  79. package/dist/boxes/iso-base-media/trun.d.ts +21 -0
  80. package/dist/boxes/iso-base-media/trun.js +44 -0
  81. package/dist/boxes/iso-base-media/void-box.d.ts +4 -0
  82. package/dist/boxes/iso-base-media/void-box.js +2 -0
  83. package/dist/boxes/riff/expect-riff-box.d.ts +17 -0
  84. package/dist/boxes/riff/expect-riff-box.js +49 -0
  85. package/dist/boxes/riff/get-tracks-from-avi.d.ts +22 -0
  86. package/dist/boxes/riff/get-tracks-from-avi.js +114 -0
  87. package/dist/boxes/riff/is-movi.d.ts +2 -0
  88. package/dist/boxes/riff/is-movi.js +12 -0
  89. package/dist/boxes/riff/parse-avih.d.ts +6 -0
  90. package/dist/boxes/riff/parse-avih.js +32 -0
  91. package/dist/boxes/riff/parse-box.d.ts +15 -0
  92. package/dist/boxes/riff/parse-box.js +146 -0
  93. package/dist/boxes/riff/parse-fmt-box.d.ts +7 -0
  94. package/dist/boxes/riff/parse-fmt-box.js +33 -0
  95. package/dist/boxes/riff/parse-isft.d.ts +6 -0
  96. package/dist/boxes/riff/parse-isft.js +17 -0
  97. package/dist/boxes/riff/parse-list-box.d.ts +8 -0
  98. package/dist/boxes/riff/parse-list-box.js +30 -0
  99. package/dist/boxes/riff/parse-movi.d.ts +17 -0
  100. package/dist/boxes/riff/parse-movi.js +133 -0
  101. package/dist/boxes/riff/parse-riff-box.d.ts +10 -0
  102. package/dist/boxes/riff/parse-riff-box.js +37 -0
  103. package/dist/boxes/riff/parse-strf.d.ts +7 -0
  104. package/dist/boxes/riff/parse-strf.js +67 -0
  105. package/dist/boxes/riff/parse-strh.d.ts +6 -0
  106. package/dist/boxes/riff/parse-strh.js +46 -0
  107. package/dist/boxes/riff/riff-box.d.ts +85 -0
  108. package/dist/boxes/riff/riff-box.js +2 -0
  109. package/dist/boxes/riff/timescale.d.ts +1 -0
  110. package/dist/boxes/riff/timescale.js +4 -0
  111. package/dist/boxes/riff/traversal.d.ts +8 -0
  112. package/dist/boxes/riff/traversal.js +36 -0
  113. package/dist/boxes/webm/allowed-partial-segments.d.ts +1 -0
  114. package/dist/boxes/webm/allowed-partial-segments.js +4 -0
  115. package/dist/boxes/webm/av1-codec-private.d.ts +2 -0
  116. package/dist/boxes/webm/av1-codec-private.js +95 -0
  117. package/dist/boxes/webm/color.d.ts +4 -0
  118. package/dist/boxes/webm/color.js +127 -0
  119. package/dist/boxes/webm/description.d.ts +2 -0
  120. package/dist/boxes/webm/description.js +83 -0
  121. package/dist/boxes/webm/ebml.d.ts +2 -0
  122. package/dist/boxes/webm/ebml.js +94 -0
  123. package/dist/boxes/webm/get-ready-tracks.d.ts +3 -0
  124. package/dist/boxes/webm/get-ready-tracks.js +29 -0
  125. package/dist/boxes/webm/get-sample-from-block.d.ts +17 -0
  126. package/dist/boxes/webm/get-sample-from-block.js +81 -0
  127. package/dist/boxes/webm/make-header.d.ts +8 -0
  128. package/dist/boxes/webm/make-header.js +187 -0
  129. package/dist/boxes/webm/make-track.d.ts +9 -0
  130. package/dist/boxes/webm/make-track.js +261 -0
  131. package/dist/boxes/webm/parse-ebml.d.ts +12 -0
  132. package/dist/boxes/webm/parse-ebml.js +185 -0
  133. package/dist/boxes/webm/parse-webm-header.d.ts +9 -0
  134. package/dist/boxes/webm/parse-webm-header.js +36 -0
  135. package/dist/boxes/webm/segments/all-segments.d.ts +976 -0
  136. package/dist/boxes/webm/segments/all-segments.js +724 -0
  137. package/dist/boxes/webm/segments/block-simple-block-flags.d.ts +9 -0
  138. package/dist/boxes/webm/segments/block-simple-block-flags.js +38 -0
  139. package/dist/boxes/webm/segments/parse-children.d.ts +23 -0
  140. package/dist/boxes/webm/segments/parse-children.js +145 -0
  141. package/dist/boxes/webm/segments/track-entry.d.ts +9 -0
  142. package/dist/boxes/webm/segments/track-entry.js +24 -0
  143. package/dist/boxes/webm/segments.d.ts +15 -0
  144. package/dist/boxes/webm/segments.js +161 -0
  145. package/dist/boxes/webm/traversal.d.ts +33 -0
  146. package/dist/boxes/webm/traversal.js +265 -0
  147. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  148. package/dist/create/cluster-segment.d.ts +10 -0
  149. package/dist/create/cluster-segment.js +39 -0
  150. package/dist/create/cluster.d.ts +19 -0
  151. package/dist/create/cluster.js +55 -0
  152. package/dist/create/create-media.d.ts +15 -0
  153. package/dist/create/create-media.js +165 -0
  154. package/dist/create/event-emitter.d.ts +31 -0
  155. package/dist/create/event-emitter.js +25 -0
  156. package/dist/create/iso-base-media/codec-specific/avc1.d.ts +2 -0
  157. package/dist/create/iso-base-media/codec-specific/avc1.js +48 -0
  158. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +22 -0
  159. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +36 -0
  160. package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +2 -0
  161. package/dist/create/iso-base-media/codec-specific/mp4a.js +74 -0
  162. package/dist/create/iso-base-media/create-colr.d.ts +6 -0
  163. package/dist/create/iso-base-media/create-colr.js +26 -0
  164. package/dist/create/iso-base-media/create-ftyp.d.ts +10 -0
  165. package/dist/create/iso-base-media/create-ftyp.js +22 -0
  166. package/dist/create/iso-base-media/create-ilst.d.ts +1 -0
  167. package/dist/create/iso-base-media/create-ilst.js +14 -0
  168. package/dist/create/iso-base-media/create-iso-base-media.d.ts +2 -0
  169. package/dist/create/iso-base-media/create-iso-base-media.js +165 -0
  170. package/dist/create/iso-base-media/create-mdia.d.ts +5 -0
  171. package/dist/create/iso-base-media/create-mdia.js +18 -0
  172. package/dist/create/iso-base-media/create-moov.d.ts +5 -0
  173. package/dist/create/iso-base-media/create-moov.js +18 -0
  174. package/dist/create/iso-base-media/create-mvhd.d.ts +10 -0
  175. package/dist/create/iso-base-media/create-mvhd.js +48 -0
  176. package/dist/create/iso-base-media/create-trak.d.ts +4 -0
  177. package/dist/create/iso-base-media/create-trak.js +17 -0
  178. package/dist/create/iso-base-media/create-udta.d.ts +1 -0
  179. package/dist/create/iso-base-media/create-udta.js +14 -0
  180. package/dist/create/iso-base-media/create-url.d.ts +1 -0
  181. package/dist/create/iso-base-media/create-url.js +16 -0
  182. package/dist/create/iso-base-media/example-stts.d.ts +3 -0
  183. package/dist/create/iso-base-media/example-stts.js +2797 -0
  184. package/dist/create/iso-base-media/ilst/create-cmt.d.ts +1 -0
  185. package/dist/create/iso-base-media/ilst/create-cmt.js +26 -0
  186. package/dist/create/iso-base-media/ilst/create-too.d.ts +1 -0
  187. package/dist/create/iso-base-media/ilst/create-too.js +27 -0
  188. package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +6 -0
  189. package/dist/create/iso-base-media/mdia/create-mdhd.js +33 -0
  190. package/dist/create/iso-base-media/mp4-header.d.ts +6 -0
  191. package/dist/create/iso-base-media/mp4-header.js +48 -0
  192. package/dist/create/iso-base-media/primitives.d.ts +15 -0
  193. package/dist/create/iso-base-media/primitives.js +133 -0
  194. package/dist/create/iso-base-media/serialize-track.d.ts +9 -0
  195. package/dist/create/iso-base-media/serialize-track.js +63 -0
  196. package/dist/create/iso-base-media/trak/create-tkhd.d.ts +27 -0
  197. package/dist/create/iso-base-media/trak/create-tkhd.js +97 -0
  198. package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +4 -0
  199. package/dist/create/iso-base-media/trak/mdia/create-minf.js +19 -0
  200. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +1 -0
  201. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +22 -0
  202. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +1 -0
  203. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +20 -0
  204. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +6 -0
  205. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +35 -0
  206. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +1 -0
  207. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +20 -0
  208. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +2 -0
  209. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +45 -0
  210. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +2 -0
  211. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +28 -0
  212. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +2 -0
  213. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +56 -0
  214. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +2 -0
  215. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +23 -0
  216. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +2 -0
  217. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +25 -0
  218. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +2 -0
  219. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +48 -0
  220. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +1 -0
  221. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +20 -0
  222. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +1 -0
  223. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +16 -0
  224. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +1 -0
  225. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +13 -0
  226. package/dist/create/iso-base-media/udta/create-meta.d.ts +4 -0
  227. package/dist/create/iso-base-media/udta/create-meta.js +20 -0
  228. package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +1 -0
  229. package/dist/create/iso-base-media/udta/meta/create-hdlr.js +32 -0
  230. package/dist/create/make-duration-with-padding.d.ts +1 -0
  231. package/dist/create/make-duration-with-padding.js +15 -0
  232. package/dist/create/make-track-info.d.ts +20 -0
  233. package/dist/create/make-track-info.js +2 -0
  234. package/dist/create/matroska/cluster-segment.d.ts +10 -0
  235. package/dist/create/matroska/cluster-segment.js +39 -0
  236. package/dist/create/matroska/cluster.d.ts +25 -0
  237. package/dist/create/matroska/cluster.js +77 -0
  238. package/dist/create/matroska/create-matroska-media.d.ts +2 -0
  239. package/dist/create/matroska/create-matroska-media.js +187 -0
  240. package/dist/create/matroska/make-duration-with-padding.d.ts +1 -0
  241. package/dist/create/matroska/make-duration-with-padding.js +15 -0
  242. package/dist/create/matroska/matroska-cues.d.ts +6 -0
  243. package/dist/create/matroska/matroska-cues.js +49 -0
  244. package/dist/create/matroska/matroska-header.d.ts +1 -0
  245. package/dist/create/matroska/matroska-header.js +66 -0
  246. package/dist/create/matroska/matroska-info.d.ts +3 -0
  247. package/dist/create/matroska/matroska-info.js +33 -0
  248. package/dist/create/matroska/matroska-seek.d.ts +6 -0
  249. package/dist/create/matroska/matroska-seek.js +32 -0
  250. package/dist/create/matroska/matroska-segment.d.ts +3 -0
  251. package/dist/create/matroska/matroska-segment.js +13 -0
  252. package/dist/create/matroska/matroska-trackentry.d.ts +10 -0
  253. package/dist/create/matroska/matroska-trackentry.js +249 -0
  254. package/dist/create/matroska-cues.d.ts +6 -0
  255. package/dist/create/matroska-cues.js +49 -0
  256. package/dist/create/matroska-header.d.ts +1 -0
  257. package/dist/create/matroska-header.js +66 -0
  258. package/dist/create/matroska-info.d.ts +3 -0
  259. package/dist/create/matroska-info.js +33 -0
  260. package/dist/create/matroska-seek.d.ts +6 -0
  261. package/dist/create/matroska-seek.js +32 -0
  262. package/dist/create/matroska-segment.d.ts +3 -0
  263. package/dist/create/matroska-segment.js +13 -0
  264. package/dist/create/matroska-trackentry.d.ts +27 -0
  265. package/dist/create/matroska-trackentry.js +243 -0
  266. package/dist/create/media-fn.d.ts +33 -0
  267. package/dist/create/media-fn.js +2 -0
  268. package/dist/create/progress-tracker.d.ts +7 -0
  269. package/dist/create/progress-tracker.js +43 -0
  270. package/dist/create/timescale.d.ts +1 -0
  271. package/dist/create/timescale.js +4 -0
  272. package/dist/create/wav/create-wav.d.ts +2 -0
  273. package/dist/create/wav/create-wav.js +110 -0
  274. package/dist/create/with-resolvers.d.ts +10 -0
  275. package/dist/create/with-resolvers.js +28 -0
  276. package/dist/esm/buffer.mjs +56 -0
  277. package/dist/esm/index.mjs +1 -1
  278. package/dist/esm/web-fs.mjs +73 -0
  279. package/dist/parse-video.d.ts +25 -0
  280. package/dist/parse-video.js +39 -0
  281. package/dist/parser-context.d.ts +10 -0
  282. package/dist/parser-context.js +2 -0
  283. package/dist/parser-state.d.ts +22 -0
  284. package/dist/parser-state.js +132 -0
  285. package/dist/version.d.ts +1 -1
  286. package/dist/version.js +1 -1
  287. package/dist/writers/buffer-implementation/writer.d.ts +2 -0
  288. package/dist/writers/buffer-implementation/writer.js +54 -0
  289. package/dist/writers/buffer.d.ts +2 -0
  290. package/dist/writers/buffer.js +7 -0
  291. package/dist/writers/web-fs.d.ts +3 -0
  292. package/dist/writers/web-fs.js +74 -0
  293. package/package.json +3 -3
  294. package/dist/abort.d.ts +0 -1
  295. package/dist/abort.js +0 -7
  296. package/dist/controller.d.ts +0 -17
  297. package/dist/controller.js +0 -31
  298. package/dist/parse-and-download-media.d.ts +0 -2
  299. package/dist/parse-and-download-media.js +0 -57
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasAllTracksFromAvi = exports.getTracksFromAvi = exports.makeAviVideoTrack = exports.makeAviAudioTrack = exports.getNumberOfTracks = exports.TO_BE_OVERRIDDEN_LATER = void 0;
4
+ const add_avc_profile_to_track_1 = require("../../add-avc-profile-to-track");
5
+ const timescale_1 = require("./timescale");
6
+ const traversal_1 = require("./traversal");
7
+ exports.TO_BE_OVERRIDDEN_LATER = 'to-be-overriden-later';
8
+ const getNumberOfTracks = (structure) => {
9
+ const avihBox = (0, traversal_1.getAvihBox)(structure);
10
+ if (avihBox) {
11
+ return avihBox.streams;
12
+ }
13
+ throw new Error('No avih box found');
14
+ };
15
+ exports.getNumberOfTracks = getNumberOfTracks;
16
+ const makeAviAudioTrack = ({ strf, index, }) => {
17
+ // 255 = AAC
18
+ if (strf.formatTag !== 255) {
19
+ throw new Error(`Unsupported audio format ${strf.formatTag}`);
20
+ }
21
+ return {
22
+ type: 'audio',
23
+ codec: 'mp4a.40.2', // According to Claude 3.5 Sonnet
24
+ codecPrivate: new Uint8Array([18, 16]),
25
+ codecWithoutConfig: 'aac',
26
+ description: new Uint8Array([18, 16]),
27
+ numberOfChannels: strf.numberOfChannels,
28
+ sampleRate: strf.sampleRate,
29
+ timescale: timescale_1.MEDIA_PARSER_RIFF_TIMESCALE,
30
+ trackId: index,
31
+ trakBox: null,
32
+ };
33
+ };
34
+ exports.makeAviAudioTrack = makeAviAudioTrack;
35
+ const makeAviVideoTrack = ({ strh, strf, index, }) => {
36
+ if (strh.handler !== 'H264') {
37
+ throw new Error(`Unsupported video codec ${strh.handler}`);
38
+ }
39
+ return {
40
+ codecPrivate: null,
41
+ codec: exports.TO_BE_OVERRIDDEN_LATER,
42
+ codecWithoutConfig: 'h264',
43
+ codedHeight: strf.height,
44
+ codedWidth: strf.width,
45
+ width: strf.width,
46
+ height: strf.height,
47
+ type: 'video',
48
+ displayAspectHeight: strf.height,
49
+ timescale: timescale_1.MEDIA_PARSER_RIFF_TIMESCALE,
50
+ description: undefined,
51
+ trackId: index,
52
+ color: {
53
+ fullRange: null,
54
+ matrixCoefficients: null,
55
+ primaries: null,
56
+ transferCharacteristics: null,
57
+ },
58
+ displayAspectWidth: strf.width,
59
+ trakBox: null,
60
+ rotation: 0,
61
+ sampleAspectRatio: {
62
+ numerator: 1,
63
+ denominator: 1,
64
+ },
65
+ fps: strh.rate / strh.scale,
66
+ };
67
+ };
68
+ exports.makeAviVideoTrack = makeAviVideoTrack;
69
+ const getTracksFromAvi = (structure, state) => {
70
+ if (!(0, traversal_1.isRiffAvi)(structure)) {
71
+ throw new Error('Not an AVI file');
72
+ }
73
+ const videoTracks = [];
74
+ const audioTracks = [];
75
+ const otherTracks = [];
76
+ const boxes = (0, traversal_1.getStrlBoxes)(structure);
77
+ let i = 0;
78
+ for (const box of boxes) {
79
+ const strh = (0, traversal_1.getStrhBox)(box.children);
80
+ const strf = (0, traversal_1.getStrfBox)(box.children);
81
+ if (!strh || !strf) {
82
+ continue;
83
+ }
84
+ if (strf.type === 'strf-box-video') {
85
+ videoTracks.push((0, add_avc_profile_to_track_1.addAvcProfileToTrack)((0, exports.makeAviVideoTrack)({ strh, strf, index: i }), state.getAvcProfile()));
86
+ }
87
+ else if (strh.fccType === 'auds') {
88
+ audioTracks.push((0, exports.makeAviAudioTrack)({ strf, index: i }));
89
+ }
90
+ else {
91
+ throw new Error(`Unsupported track type ${strh.fccType}`);
92
+ }
93
+ i++;
94
+ }
95
+ return { audioTracks, otherTracks, videoTracks };
96
+ };
97
+ exports.getTracksFromAvi = getTracksFromAvi;
98
+ const hasAllTracksFromAvi = (structure, state) => {
99
+ if (!(0, traversal_1.isRiffAvi)(structure)) {
100
+ throw new Error('Not an AVI file');
101
+ }
102
+ try {
103
+ const numberOfTracks = (0, exports.getNumberOfTracks)(structure);
104
+ const tracks = (0, exports.getTracksFromAvi)(structure, state);
105
+ return (tracks.videoTracks.length +
106
+ tracks.audioTracks.length +
107
+ tracks.otherTracks.length ===
108
+ numberOfTracks);
109
+ }
110
+ catch (_a) {
111
+ return false;
112
+ }
113
+ };
114
+ exports.hasAllTracksFromAvi = hasAllTracksFromAvi;
@@ -0,0 +1,2 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ export declare const isMoviAtom: (iterator: BufferIterator, ckId: string) => boolean;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMoviAtom = void 0;
4
+ const isMoviAtom = (iterator, ckId) => {
5
+ if (ckId !== 'LIST') {
6
+ return false;
7
+ }
8
+ const listType = iterator.getByteString(4);
9
+ iterator.counter.decrement(4);
10
+ return listType === 'movi';
11
+ };
12
+ exports.isMoviAtom = isMoviAtom;
@@ -0,0 +1,6 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { RiffBox } from './riff-box';
3
+ export declare const parseAvih: ({ iterator, size, }: {
4
+ iterator: BufferIterator;
5
+ size: number;
6
+ }) => RiffBox;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAvih = void 0;
4
+ const parseAvih = ({ iterator, size, }) => {
5
+ const { expectNoMoreBytes } = iterator.startBox(size);
6
+ const dwMicroSecPerFrame = iterator.getUint32Le();
7
+ const dwMaxBytesPerSec = iterator.getUint32Le();
8
+ const paddingGranularity = iterator.getUint32Le();
9
+ const flags = iterator.getUint32Le();
10
+ const totalFrames = iterator.getUint32Le();
11
+ const initialFrames = iterator.getUint32Le();
12
+ const streams = iterator.getUint32Le();
13
+ const suggestedBufferSize = iterator.getUint32Le();
14
+ const width = iterator.getUint32Le();
15
+ const height = iterator.getUint32Le();
16
+ iterator.discard(16);
17
+ expectNoMoreBytes();
18
+ return {
19
+ type: 'avih-box',
20
+ microSecPerFrame: dwMicroSecPerFrame,
21
+ maxBytesPerSecond: dwMaxBytesPerSec,
22
+ paddingGranularity,
23
+ flags,
24
+ totalFrames,
25
+ initialFrames,
26
+ streams,
27
+ suggestedBufferSize,
28
+ height,
29
+ width,
30
+ };
31
+ };
32
+ exports.parseAvih = parseAvih;
@@ -0,0 +1,15 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { Options, ParseMediaFields } from '../../options';
3
+ import type { ParseResult, RiffStructure } from '../../parse-result';
4
+ import type { ParserContext } from '../../parser-context';
5
+ export declare const parseRiffBody: ({ iterator, structure, maxOffset, options, }: {
6
+ iterator: BufferIterator;
7
+ structure: RiffStructure;
8
+ maxOffset: number;
9
+ options: ParserContext;
10
+ }) => Promise<ParseResult<RiffStructure>>;
11
+ export declare const parseRiff: ({ iterator, options, fields, }: {
12
+ iterator: BufferIterator;
13
+ options: ParserContext;
14
+ fields: Options<ParseMediaFields>;
15
+ }) => Promise<ParseResult<RiffStructure>>;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRiff = exports.parseRiffBody = void 0;
4
+ const get_tracks_1 = require("../../get-tracks");
5
+ const has_all_info_1 = require("../../has-all-info");
6
+ const register_track_1 = require("../../register-track");
7
+ const expect_riff_box_1 = require("./expect-riff-box");
8
+ const get_tracks_from_avi_1 = require("./get-tracks-from-avi");
9
+ const traversal_1 = require("./traversal");
10
+ const continueAfterRiffBoxResult = ({ result, structure, iterator, maxOffset, options, }) => {
11
+ if (result.type === 'incomplete') {
12
+ return Promise.resolve({
13
+ status: 'incomplete',
14
+ async continueParsing() {
15
+ return Promise.resolve(continueAfterRiffBoxResult({
16
+ result: await result.continueParsing(),
17
+ structure,
18
+ iterator,
19
+ maxOffset,
20
+ options,
21
+ }));
22
+ },
23
+ segments: structure,
24
+ skipTo: null,
25
+ });
26
+ }
27
+ if (result.type === 'complete' && result.box) {
28
+ structure.boxes.push(result.box);
29
+ }
30
+ return (0, exports.parseRiffBody)({ iterator, maxOffset, options, structure });
31
+ };
32
+ const parseRiffBody = async ({ iterator, structure, maxOffset, options, }) => {
33
+ while (iterator.bytesRemaining() > 0 &&
34
+ iterator.counter.getOffset() < maxOffset) {
35
+ const result = await (0, expect_riff_box_1.expectRiffBox)({
36
+ iterator,
37
+ options,
38
+ structure,
39
+ });
40
+ if (result.type === 'complete' && result.skipTo !== null) {
41
+ return {
42
+ status: 'incomplete',
43
+ skipTo: result.skipTo,
44
+ segments: structure,
45
+ continueParsing() {
46
+ return Promise.resolve(continueAfterRiffBoxResult({
47
+ iterator,
48
+ maxOffset,
49
+ options,
50
+ result,
51
+ structure,
52
+ }));
53
+ },
54
+ };
55
+ }
56
+ if (result.type === 'incomplete') {
57
+ return {
58
+ status: 'incomplete',
59
+ async continueParsing() {
60
+ return Promise.resolve(continueAfterRiffBoxResult({
61
+ iterator,
62
+ maxOffset,
63
+ options,
64
+ result: await result.continueParsing(),
65
+ structure,
66
+ }));
67
+ },
68
+ segments: structure,
69
+ skipTo: null,
70
+ };
71
+ }
72
+ if (result.box === null) {
73
+ continue;
74
+ }
75
+ structure.boxes.push(result.box);
76
+ // When parsing an AVI
77
+ if (result.box.type === 'list-box' && result.box.listType === 'hdrl') {
78
+ const tracks = (0, get_tracks_1.getTracks)(structure, options.parserState);
79
+ if (!tracks.videoTracks.some((t) => t.codec === get_tracks_from_avi_1.TO_BE_OVERRIDDEN_LATER)) {
80
+ options.parserState.tracks.setIsDone();
81
+ }
82
+ }
83
+ // When parsing a WAV
84
+ if (result.box.type === 'wave-format-box') {
85
+ options.parserState.tracks.setIsDone();
86
+ }
87
+ if (result.box.type === 'strf-box-video' ||
88
+ result.box.type === 'strf-box-audio') {
89
+ const strh = (0, traversal_1.getStrhBox)(structure.boxes);
90
+ const strf = (0, traversal_1.getStrfBox)(structure.boxes);
91
+ if (!strh || !strf) {
92
+ throw new Error('strh or strf box missing');
93
+ }
94
+ if (strf.type === 'strf-box-audio' && options.onAudioTrack) {
95
+ const audioTrack = (0, get_tracks_from_avi_1.makeAviAudioTrack)({
96
+ index: options.nextTrackIndex,
97
+ strf,
98
+ });
99
+ await (0, register_track_1.registerTrack)({
100
+ options,
101
+ state: options.parserState,
102
+ track: audioTrack,
103
+ });
104
+ }
105
+ if (options.onVideoTrack && strf.type === 'strf-box-video') {
106
+ const videoTrack = (0, get_tracks_from_avi_1.makeAviVideoTrack)({
107
+ strh,
108
+ index: options.nextTrackIndex,
109
+ strf,
110
+ });
111
+ (0, register_track_1.registerVideoTrackWhenProfileIsAvailable)({
112
+ options,
113
+ state: options.parserState,
114
+ track: videoTrack,
115
+ });
116
+ }
117
+ options.nextTrackIndex++;
118
+ }
119
+ }
120
+ return {
121
+ status: 'done',
122
+ segments: structure,
123
+ };
124
+ };
125
+ exports.parseRiffBody = parseRiffBody;
126
+ const parseRiff = ({ iterator, options, fields, }) => {
127
+ const structure = { type: 'riff', boxes: [] };
128
+ const riff = iterator.getByteString(4);
129
+ if (riff !== 'RIFF') {
130
+ throw new Error('Not a RIFF file');
131
+ }
132
+ const size = iterator.getUint32Le();
133
+ const fileType = iterator.getByteString(4);
134
+ if (fileType !== 'WAVE' && fileType !== 'AVI') {
135
+ throw new Error(`File type ${fileType} not supported`);
136
+ }
137
+ structure.boxes.push({ type: 'riff-header', fileSize: size, fileType });
138
+ if ((0, has_all_info_1.hasAllInfo)({ fields, structure, state: options.parserState })) {
139
+ return Promise.resolve({
140
+ status: 'done',
141
+ segments: structure,
142
+ });
143
+ }
144
+ return (0, exports.parseRiffBody)({ iterator, structure, maxOffset: Infinity, options });
145
+ };
146
+ exports.parseRiff = parseRiff;
@@ -0,0 +1,7 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { RiffBox } from './riff-box';
3
+ export declare const parseFmtBox: ({ iterator, boxes, size, }: {
4
+ iterator: BufferIterator;
5
+ boxes: RiffBox[];
6
+ size: number;
7
+ }) => RiffBox;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFmtBox = void 0;
4
+ const parseFmtBox = ({ iterator, boxes, size, }) => {
5
+ const box = iterator.startBox(size);
6
+ const header = boxes.find((b) => b.type === 'riff-header');
7
+ if (!header) {
8
+ throw new Error('Expected RIFF header');
9
+ }
10
+ if (header.fileType !== 'WAVE') {
11
+ throw new Error('Only supporting WAVE type');
12
+ }
13
+ const wFormatTag = iterator.getUint16Le();
14
+ if (wFormatTag !== 1) {
15
+ throw new Error('Expected wFormatTag to be 1, only supporting this');
16
+ }
17
+ const numberOfChannels = iterator.getUint16Le();
18
+ const sampleRate = iterator.getUint32Le();
19
+ const byteRate = iterator.getUint32Le();
20
+ const blockAlign = iterator.getUint16Le();
21
+ const bitsPerSample = iterator.getUint16Le();
22
+ box.expectNoMoreBytes();
23
+ return {
24
+ type: 'wave-format-box',
25
+ formatTag: wFormatTag,
26
+ numberOfChannels,
27
+ sampleRate,
28
+ blockAlign,
29
+ byteRate,
30
+ bitsPerSample,
31
+ };
32
+ };
33
+ exports.parseFmtBox = parseFmtBox;
@@ -0,0 +1,6 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { IsftBox } from './riff-box';
3
+ export declare const parseIsft: ({ iterator, size, }: {
4
+ iterator: BufferIterator;
5
+ size: number;
6
+ }) => IsftBox;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseIsft = void 0;
4
+ const parseIsft = ({ iterator, size, }) => {
5
+ const { expectNoMoreBytes } = iterator.startBox(size);
6
+ const software = iterator.getByteString(size - 1);
7
+ const last = iterator.getUint8();
8
+ if (last !== 0) {
9
+ throw new Error(`Expected 0 byte, got ${last}`);
10
+ }
11
+ expectNoMoreBytes();
12
+ return {
13
+ type: 'isft-box',
14
+ software,
15
+ };
16
+ };
17
+ exports.parseIsft = parseIsft;
@@ -0,0 +1,8 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { ParserContext } from '../../parser-context';
3
+ import type { RiffBox } from './riff-box';
4
+ export declare const parseListBox: ({ iterator, size, options, }: {
5
+ iterator: BufferIterator;
6
+ size: number;
7
+ options: ParserContext;
8
+ }) => Promise<RiffBox>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseListBox = void 0;
4
+ const parse_box_1 = require("./parse-box");
5
+ const parseListBox = async ({ iterator, size, options, }) => {
6
+ const counter = iterator.counter.getOffset();
7
+ const listType = iterator.getByteString(4);
8
+ if (listType === 'movi') {
9
+ throw new Error('should not be handled here');
10
+ }
11
+ const structure = {
12
+ type: 'riff',
13
+ boxes: [],
14
+ };
15
+ const result = await (0, parse_box_1.parseRiffBody)({
16
+ structure,
17
+ iterator,
18
+ maxOffset: counter + size,
19
+ options,
20
+ });
21
+ if (result.status === 'incomplete') {
22
+ throw new Error(`Should only parse complete boxes (${listType})`);
23
+ }
24
+ return {
25
+ type: 'list-box',
26
+ listType,
27
+ children: structure.boxes,
28
+ };
29
+ };
30
+ exports.parseListBox = parseListBox;
@@ -0,0 +1,17 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { RiffStructure } from '../../parse-result';
3
+ import type { ParserContext } from '../../parser-context';
4
+ import type { RiffResult } from './expect-riff-box';
5
+ export declare const handleChunk: ({ iterator, options, structure, ckId, ckSize, }: {
6
+ iterator: BufferIterator;
7
+ options: ParserContext;
8
+ structure: RiffStructure;
9
+ ckId: string;
10
+ ckSize: number;
11
+ }) => Promise<void>;
12
+ export declare const parseMovi: ({ iterator, maxOffset, options, structure, }: {
13
+ iterator: BufferIterator;
14
+ maxOffset: number;
15
+ options: ParserContext;
16
+ structure: RiffStructure;
17
+ }) => Promise<RiffResult>;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMovi = exports.handleChunk = void 0;
4
+ const parse_avc_1 = require("../avc/parse-avc");
5
+ const timescale_1 = require("./timescale");
6
+ const traversal_1 = require("./traversal");
7
+ const getStrhForIndex = (structure, trackId) => {
8
+ const boxes = (0, traversal_1.getStrlBoxes)(structure);
9
+ const box = boxes[trackId];
10
+ if (!box) {
11
+ throw new Error('Expected box');
12
+ }
13
+ const strh = (0, traversal_1.getStrhBox)(box.children);
14
+ if (!strh) {
15
+ throw new Error('strh');
16
+ }
17
+ return strh;
18
+ };
19
+ const handleChunk = async ({ iterator, options, structure, ckId, ckSize, }) => {
20
+ const videoChunk = ckId.match(/^([0-9]{2})dc$/);
21
+ if (videoChunk) {
22
+ const trackId = parseInt(videoChunk[1], 10);
23
+ const strh = getStrhForIndex(structure, trackId);
24
+ const samplesPerSecond = strh.rate / strh.scale;
25
+ const nthSample = options.parserState.getSamplesForTrack(trackId);
26
+ const timeInSec = nthSample / samplesPerSecond;
27
+ const timestamp = Math.floor(timeInSec * timescale_1.MEDIA_PARSER_RIFF_TIMESCALE);
28
+ const duration = Math.floor((1 / samplesPerSecond) * timescale_1.MEDIA_PARSER_RIFF_TIMESCALE);
29
+ const data = iterator.getSlice(ckSize);
30
+ const infos = (0, parse_avc_1.parseAvc)(data);
31
+ const keyOrDelta = infos.find((i) => i.type === 'keyframe' || i.type === 'delta-frame');
32
+ if (!keyOrDelta) {
33
+ throw new Error('expected avc to contain info about key or delta');
34
+ }
35
+ const avcProfile = infos.find((i) => i.type === 'avc-profile');
36
+ const ppsProfile = infos.find((i) => i.type === 'avc-pps');
37
+ if (avcProfile && ppsProfile) {
38
+ await options.parserState.onProfile({ pps: ppsProfile, sps: avcProfile });
39
+ options.parserState.tracks.setIsDone();
40
+ }
41
+ await options.parserState.onVideoSample(trackId, {
42
+ cts: timestamp,
43
+ dts: timestamp,
44
+ data,
45
+ duration,
46
+ timestamp,
47
+ trackId,
48
+ type: keyOrDelta.type === 'keyframe' ? 'key' : 'delta',
49
+ });
50
+ return;
51
+ }
52
+ const audioChunk = ckId.match(/^([0-9]{2})wb$/);
53
+ if (audioChunk) {
54
+ const trackId = parseInt(audioChunk[1], 10);
55
+ const strh = getStrhForIndex(structure, trackId);
56
+ const samplesPerSecond = strh.rate / strh.scale;
57
+ const nthSample = options.parserState.getSamplesForTrack(trackId);
58
+ const timeInSec = nthSample / samplesPerSecond;
59
+ const timestamp = timeInSec * timescale_1.MEDIA_PARSER_RIFF_TIMESCALE;
60
+ const duration = (1 / samplesPerSecond) * timescale_1.MEDIA_PARSER_RIFF_TIMESCALE;
61
+ await options.parserState.onAudioSample(trackId, {
62
+ cts: timestamp,
63
+ dts: timestamp,
64
+ data: iterator.getSlice(ckSize),
65
+ duration,
66
+ timestamp,
67
+ trackId,
68
+ type: 'key',
69
+ });
70
+ }
71
+ };
72
+ exports.handleChunk = handleChunk;
73
+ const parseMovi = async ({ iterator, maxOffset, options, structure, }) => {
74
+ while (iterator.counter.getOffset() < maxOffset) {
75
+ if (iterator.bytesRemaining() < 8) {
76
+ return {
77
+ type: 'incomplete',
78
+ continueParsing: () => {
79
+ return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, options, structure }));
80
+ },
81
+ };
82
+ }
83
+ const ckId = iterator.getByteString(4);
84
+ const ckSize = iterator.getUint32Le();
85
+ if (options.parserState.maySkipVideoData() &&
86
+ options.parserState.getAvcProfile()) {
87
+ return {
88
+ type: 'complete',
89
+ box: {
90
+ type: 'movi-box',
91
+ },
92
+ skipTo: maxOffset,
93
+ };
94
+ }
95
+ if (iterator.bytesRemaining() < ckSize) {
96
+ iterator.counter.decrement(8);
97
+ return {
98
+ type: 'incomplete',
99
+ continueParsing: () => {
100
+ return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, options, structure }));
101
+ },
102
+ };
103
+ }
104
+ await (0, exports.handleChunk)({ iterator, options, structure, ckId, ckSize });
105
+ // Discard added zeroes
106
+ while (iterator.counter.getOffset() < maxOffset &&
107
+ iterator.bytesRemaining() > 0) {
108
+ if (iterator.getUint8() !== 0) {
109
+ iterator.counter.decrement(1);
110
+ break;
111
+ }
112
+ }
113
+ }
114
+ if (iterator.counter.getOffset() === maxOffset) {
115
+ return {
116
+ type: 'complete',
117
+ box: {
118
+ type: 'movi-box',
119
+ },
120
+ skipTo: null,
121
+ };
122
+ }
123
+ if (iterator.counter.getOffset() > maxOffset) {
124
+ throw new Error('Oops, this should not happen!');
125
+ }
126
+ return {
127
+ type: 'incomplete',
128
+ continueParsing: () => {
129
+ return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, options, structure }));
130
+ },
131
+ };
132
+ };
133
+ exports.parseMovi = parseMovi;
@@ -0,0 +1,10 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { ParserContext } from '../../parser-context';
3
+ import type { RiffBox } from './riff-box';
4
+ export declare const parseRiffBox: ({ iterator, size, id, boxes, options, }: {
5
+ iterator: BufferIterator;
6
+ size: number;
7
+ id: string;
8
+ boxes: RiffBox[];
9
+ options: ParserContext;
10
+ }) => Promise<RiffBox>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRiffBox = void 0;
4
+ const parse_avih_1 = require("./parse-avih");
5
+ const parse_fmt_box_1 = require("./parse-fmt-box");
6
+ const parse_isft_1 = require("./parse-isft");
7
+ const parse_list_box_1 = require("./parse-list-box");
8
+ const parse_strf_1 = require("./parse-strf");
9
+ const parse_strh_1 = require("./parse-strh");
10
+ const parseRiffBox = ({ iterator, size, id, boxes, options, }) => {
11
+ if (id === 'fmt') {
12
+ return Promise.resolve((0, parse_fmt_box_1.parseFmtBox)({ iterator, boxes, size }));
13
+ }
14
+ if (id === 'LIST') {
15
+ return (0, parse_list_box_1.parseListBox)({ iterator, size, options });
16
+ }
17
+ if (id === 'ISFT') {
18
+ return Promise.resolve((0, parse_isft_1.parseIsft)({ iterator, size }));
19
+ }
20
+ if (id === 'avih') {
21
+ return Promise.resolve((0, parse_avih_1.parseAvih)({ iterator, size }));
22
+ }
23
+ if (id === 'strh') {
24
+ return Promise.resolve((0, parse_strh_1.parseStrh)({ iterator, size }));
25
+ }
26
+ if (id === 'strf') {
27
+ return Promise.resolve((0, parse_strf_1.parseStrf)({ iterator, size, boxes }));
28
+ }
29
+ iterator.discard(size);
30
+ const box = {
31
+ type: 'riff-box',
32
+ size,
33
+ id,
34
+ };
35
+ return Promise.resolve(box);
36
+ };
37
+ exports.parseRiffBox = parseRiffBox;
@@ -0,0 +1,7 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { RiffBox } from './riff-box';
3
+ export declare const parseStrf: ({ iterator, size, boxes, }: {
4
+ iterator: BufferIterator;
5
+ size: number;
6
+ boxes: RiffBox[];
7
+ }) => RiffBox;