@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,710 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseIsoBaseMediaBoxes = exports.processBox = exports.parseMdatPartially = 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 esds_1 = require("./esds/esds");
8
+ const ftyp_1 = require("./ftyp");
9
+ const make_track_1 = require("./make-track");
10
+ const mdat_1 = require("./mdat/mdat");
11
+ const mdhd_1 = require("./mdhd");
12
+ const hdlr_1 = require("./meta/hdlr");
13
+ const ilst_1 = require("./meta/ilst");
14
+ const moov_1 = require("./moov/moov");
15
+ const mvhd_1 = require("./mvhd");
16
+ const av1c_1 = require("./stsd/av1c");
17
+ const avcc_1 = require("./stsd/avcc");
18
+ const colr_1 = require("./stsd/colr");
19
+ const ctts_1 = require("./stsd/ctts");
20
+ const hvcc_1 = require("./stsd/hvcc");
21
+ const keys_1 = require("./stsd/keys");
22
+ const mebx_1 = require("./stsd/mebx");
23
+ const pasp_1 = require("./stsd/pasp");
24
+ const stco_1 = require("./stsd/stco");
25
+ const stsc_1 = require("./stsd/stsc");
26
+ const stsd_1 = require("./stsd/stsd");
27
+ const stss_1 = require("./stsd/stss");
28
+ const stsz_1 = require("./stsd/stsz");
29
+ const stts_1 = require("./stsd/stts");
30
+ const tfdt_1 = require("./tfdt");
31
+ const tfhd_1 = require("./tfhd");
32
+ const tkhd_1 = require("./tkhd");
33
+ const trak_1 = require("./trak/trak");
34
+ const traversal_1 = require("./traversal");
35
+ const trun_1 = require("./trun");
36
+ const getChildren = async ({ boxType, iterator, bytesRemainingInBox, options, signal, logLevel, fields, }) => {
37
+ const parseChildren = boxType === 'mdia' ||
38
+ boxType === 'minf' ||
39
+ boxType === 'stbl' ||
40
+ boxType === 'udta' ||
41
+ boxType === 'moof' ||
42
+ boxType === 'dims' ||
43
+ boxType === 'meta' ||
44
+ boxType === 'wave' ||
45
+ boxType === 'traf' ||
46
+ boxType === 'stsb';
47
+ if (parseChildren) {
48
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
49
+ const parsed = await (0, exports.parseIsoBaseMediaBoxes)({
50
+ iterator,
51
+ maxBytes: bytesRemainingInBox,
52
+ allowIncompleteBoxes: false,
53
+ initialBoxes: [],
54
+ options,
55
+ continueMdat: false,
56
+ signal,
57
+ logLevel,
58
+ fields,
59
+ });
60
+ if (parsed.status === 'incomplete') {
61
+ throw new Error('Incomplete boxes are not allowed');
62
+ }
63
+ return parsed.segments.boxes;
64
+ }
65
+ if (bytesRemainingInBox < 0) {
66
+ throw new Error('Box size is too big ' + JSON.stringify({ boxType }));
67
+ }
68
+ iterator.discard(bytesRemainingInBox);
69
+ return [];
70
+ };
71
+ const parseMdatPartially = async ({ iterator, boxSize, fileOffset, parsedBoxes, options, signal, }) => {
72
+ const box = await (0, mdat_1.parseMdat)({
73
+ data: iterator,
74
+ size: boxSize,
75
+ fileOffset,
76
+ existingBoxes: parsedBoxes,
77
+ options,
78
+ signal,
79
+ maySkipSampleProcessing: options.supportsContentRange,
80
+ });
81
+ if ((box.status === 'samples-processed' || box.status === 'samples-buffered') &&
82
+ box.fileOffset + boxSize === iterator.counter.getOffset()) {
83
+ return {
84
+ type: 'complete',
85
+ box,
86
+ size: boxSize,
87
+ skipTo: null,
88
+ };
89
+ }
90
+ return {
91
+ type: 'partial-mdat-box',
92
+ boxSize,
93
+ fileOffset,
94
+ };
95
+ };
96
+ exports.parseMdatPartially = parseMdatPartially;
97
+ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options, signal, logLevel, fields, }) => {
98
+ const fileOffset = iterator.counter.getOffset();
99
+ const bytesRemaining = iterator.bytesRemaining();
100
+ const boxSizeRaw = iterator.getFourByteNumber();
101
+ // If `boxSize === 1`, the 8 bytes after the box type are the size of the box.
102
+ if ((boxSizeRaw === 1 && iterator.bytesRemaining() < 12) ||
103
+ iterator.bytesRemaining() < 4) {
104
+ iterator.counter.decrement(iterator.counter.getOffset() - fileOffset);
105
+ if (allowIncompleteBoxes) {
106
+ return {
107
+ type: 'incomplete',
108
+ };
109
+ }
110
+ throw new Error(`Expected box size of ${bytesRemaining}, got ${boxSizeRaw}. Incomplete boxes are not allowed.`);
111
+ }
112
+ if (boxSizeRaw === 0) {
113
+ return {
114
+ type: 'complete',
115
+ box: {
116
+ type: 'void-box',
117
+ boxSize: 0,
118
+ },
119
+ size: 4,
120
+ skipTo: null,
121
+ };
122
+ }
123
+ const boxType = iterator.getByteString(4);
124
+ const boxSize = boxSizeRaw === 1 ? iterator.getEightByteNumber() : boxSizeRaw;
125
+ if (bytesRemaining < boxSize) {
126
+ if (boxType === 'mdat') {
127
+ // Check if the moov atom is at the end
128
+ const shouldSkip = options.parserState.maySkipVideoData() ||
129
+ (!(0, get_tracks_1.hasTracks)({ type: 'iso-base-media', boxes: parsedBoxes }, options.parserState) &&
130
+ options.supportsContentRange);
131
+ if (shouldSkip) {
132
+ const skipTo = fileOffset + boxSize;
133
+ const bytesToSkip = skipTo - iterator.counter.getOffset();
134
+ // If there is a huge mdat chunk, we can skip it because we don't need it for the metadata
135
+ if (bytesToSkip > 1000000) {
136
+ return {
137
+ type: 'complete',
138
+ box: {
139
+ type: 'mdat-box',
140
+ boxSize,
141
+ fileOffset,
142
+ status: 'samples-skipped',
143
+ },
144
+ size: boxSize,
145
+ skipTo: fileOffset + boxSize,
146
+ };
147
+ }
148
+ }
149
+ else {
150
+ return (0, exports.parseMdatPartially)({
151
+ iterator,
152
+ boxSize,
153
+ fileOffset,
154
+ parsedBoxes,
155
+ options,
156
+ signal,
157
+ });
158
+ }
159
+ }
160
+ iterator.counter.decrement(iterator.counter.getOffset() - fileOffset);
161
+ if (allowIncompleteBoxes) {
162
+ return {
163
+ type: 'incomplete',
164
+ };
165
+ }
166
+ throw new Error(`Expected box size of ${bytesRemaining}, got ${boxSize}. Incomplete boxes are not allowed.`);
167
+ }
168
+ if (boxType === 'ftyp') {
169
+ const box = (0, ftyp_1.parseFtyp)({ iterator, size: boxSize, offset: fileOffset });
170
+ return {
171
+ type: 'complete',
172
+ box,
173
+ size: boxSize,
174
+ skipTo: null,
175
+ };
176
+ }
177
+ if (boxType === 'colr') {
178
+ const box = (0, colr_1.parseColorParameterBox)({
179
+ iterator,
180
+ size: boxSize,
181
+ });
182
+ return {
183
+ type: 'complete',
184
+ box,
185
+ size: boxSize,
186
+ skipTo: null,
187
+ };
188
+ }
189
+ if (boxType === 'mvhd') {
190
+ const box = (0, mvhd_1.parseMvhd)({ iterator, offset: fileOffset, size: boxSize });
191
+ return {
192
+ type: 'complete',
193
+ box,
194
+ size: boxSize,
195
+ skipTo: null,
196
+ };
197
+ }
198
+ if (boxType === 'tkhd') {
199
+ const box = (0, tkhd_1.parseTkhd)({ iterator, offset: fileOffset, size: boxSize });
200
+ return {
201
+ type: 'complete',
202
+ box,
203
+ size: boxSize,
204
+ skipTo: null,
205
+ };
206
+ }
207
+ if (boxType === 'trun') {
208
+ const box = (0, trun_1.parseTrun)({ iterator, offset: fileOffset, size: boxSize });
209
+ return {
210
+ type: 'complete',
211
+ box,
212
+ size: boxSize,
213
+ skipTo: null,
214
+ };
215
+ }
216
+ if (boxType === 'tfdt') {
217
+ const box = (0, tfdt_1.parseTfdt)({ iterator, size: boxSize, offset: fileOffset });
218
+ return {
219
+ type: 'complete',
220
+ box,
221
+ size: boxSize,
222
+ skipTo: null,
223
+ };
224
+ }
225
+ if (boxType === 'stsd') {
226
+ const box = await (0, stsd_1.parseStsd)({
227
+ iterator,
228
+ offset: fileOffset,
229
+ size: boxSize,
230
+ options,
231
+ signal,
232
+ fields,
233
+ });
234
+ return {
235
+ type: 'complete',
236
+ box,
237
+ size: boxSize,
238
+ skipTo: null,
239
+ };
240
+ }
241
+ if (boxType === 'stsz') {
242
+ const box = (0, stsz_1.parseStsz)({
243
+ iterator,
244
+ offset: fileOffset,
245
+ size: boxSize,
246
+ });
247
+ return {
248
+ type: 'complete',
249
+ box,
250
+ size: boxSize,
251
+ skipTo: null,
252
+ };
253
+ }
254
+ if (boxType === 'stco' || boxType === 'co64') {
255
+ const box = (0, stco_1.parseStco)({
256
+ iterator,
257
+ offset: fileOffset,
258
+ size: boxSize,
259
+ mode64Bit: boxType === 'co64',
260
+ });
261
+ return {
262
+ type: 'complete',
263
+ box,
264
+ size: boxSize,
265
+ skipTo: null,
266
+ };
267
+ }
268
+ if (boxType === 'pasp') {
269
+ const box = (0, pasp_1.parsePasp)({
270
+ iterator,
271
+ offset: fileOffset,
272
+ size: boxSize,
273
+ });
274
+ return {
275
+ type: 'complete',
276
+ box,
277
+ size: boxSize,
278
+ skipTo: null,
279
+ };
280
+ }
281
+ if (boxType === 'stss') {
282
+ const box = (0, stss_1.parseStss)({
283
+ iterator,
284
+ offset: fileOffset,
285
+ boxSize,
286
+ });
287
+ return {
288
+ type: 'complete',
289
+ box,
290
+ size: boxSize,
291
+ skipTo: null,
292
+ };
293
+ }
294
+ if (boxType === 'ctts') {
295
+ const box = (0, ctts_1.parseCtts)({
296
+ iterator,
297
+ offset: fileOffset,
298
+ size: boxSize,
299
+ });
300
+ return {
301
+ type: 'complete',
302
+ box,
303
+ size: boxSize,
304
+ skipTo: null,
305
+ };
306
+ }
307
+ if (boxType === 'stsc') {
308
+ const box = (0, stsc_1.parseStsc)({
309
+ iterator,
310
+ offset: fileOffset,
311
+ size: boxSize,
312
+ });
313
+ return {
314
+ type: 'complete',
315
+ box,
316
+ size: boxSize,
317
+ skipTo: null,
318
+ };
319
+ }
320
+ if (boxType === 'mebx') {
321
+ const box = await (0, mebx_1.parseMebx)({
322
+ iterator,
323
+ offset: fileOffset,
324
+ size: boxSize,
325
+ options,
326
+ signal,
327
+ fields,
328
+ });
329
+ return {
330
+ type: 'complete',
331
+ box,
332
+ size: boxSize,
333
+ skipTo: null,
334
+ };
335
+ }
336
+ if (boxType === 'hdlr') {
337
+ const box = await (0, hdlr_1.parseHdlr)({ iterator, size: boxSize, offset: fileOffset });
338
+ return {
339
+ type: 'complete',
340
+ box,
341
+ size: boxSize,
342
+ skipTo: null,
343
+ };
344
+ }
345
+ if (boxType === 'keys') {
346
+ const box = (0, keys_1.parseKeys)({ iterator, size: boxSize, offset: fileOffset });
347
+ return {
348
+ type: 'complete',
349
+ box,
350
+ size: boxSize,
351
+ skipTo: null,
352
+ };
353
+ }
354
+ if (boxType === 'ilst') {
355
+ const box = (0, ilst_1.parseIlstBox)({
356
+ iterator,
357
+ offset: fileOffset,
358
+ size: boxSize,
359
+ });
360
+ return {
361
+ type: 'complete',
362
+ box,
363
+ size: boxSize,
364
+ skipTo: null,
365
+ };
366
+ }
367
+ if (boxType === 'moov') {
368
+ const box = await (0, moov_1.parseMoov)({
369
+ iterator,
370
+ offset: fileOffset,
371
+ size: boxSize,
372
+ options,
373
+ signal,
374
+ logLevel,
375
+ fields,
376
+ });
377
+ options.parserState.tracks.setIsDone();
378
+ return {
379
+ type: 'complete',
380
+ box,
381
+ size: boxSize,
382
+ skipTo: null,
383
+ };
384
+ }
385
+ if (boxType === 'trak') {
386
+ const box = await (0, trak_1.parseTrak)({
387
+ data: iterator,
388
+ size: boxSize,
389
+ offsetAtStart: fileOffset,
390
+ options,
391
+ signal,
392
+ logLevel,
393
+ fields,
394
+ });
395
+ const transformedTrack = (0, make_track_1.makeBaseMediaTrack)(box);
396
+ if (transformedTrack) {
397
+ await (0, register_track_1.registerTrack)({
398
+ options,
399
+ state: options.parserState,
400
+ track: transformedTrack,
401
+ });
402
+ }
403
+ return {
404
+ type: 'complete',
405
+ box,
406
+ size: boxSize,
407
+ skipTo: null,
408
+ };
409
+ }
410
+ if (boxType === 'stts') {
411
+ const box = (0, stts_1.parseStts)({
412
+ data: iterator,
413
+ size: boxSize,
414
+ fileOffset,
415
+ });
416
+ return {
417
+ type: 'complete',
418
+ box,
419
+ size: boxSize,
420
+ skipTo: null,
421
+ };
422
+ }
423
+ if (boxType === 'avcC') {
424
+ const box = (0, avcc_1.parseAvcc)({
425
+ data: iterator,
426
+ size: boxSize,
427
+ });
428
+ return {
429
+ type: 'complete',
430
+ box,
431
+ size: boxSize,
432
+ skipTo: null,
433
+ };
434
+ }
435
+ if (boxType === 'av1C') {
436
+ const box = (0, av1c_1.parseAv1C)({
437
+ data: iterator,
438
+ size: boxSize,
439
+ });
440
+ return {
441
+ type: 'complete',
442
+ box,
443
+ size: boxSize,
444
+ skipTo: null,
445
+ };
446
+ }
447
+ if (boxType === 'hvcC') {
448
+ const box = (0, hvcc_1.parseHvcc)({
449
+ data: iterator,
450
+ size: boxSize,
451
+ offset: fileOffset,
452
+ });
453
+ return {
454
+ type: 'complete',
455
+ box,
456
+ size: boxSize,
457
+ skipTo: null,
458
+ };
459
+ }
460
+ if (boxType === 'tfhd') {
461
+ const box = (0, tfhd_1.getTfhd)({
462
+ iterator,
463
+ offset: fileOffset,
464
+ size: boxSize,
465
+ });
466
+ return {
467
+ type: 'complete',
468
+ box,
469
+ size: boxSize,
470
+ skipTo: null,
471
+ };
472
+ }
473
+ if (boxType === 'mdhd') {
474
+ const box = (0, mdhd_1.parseMdhd)({
475
+ data: iterator,
476
+ size: boxSize,
477
+ fileOffset,
478
+ });
479
+ return {
480
+ type: 'complete',
481
+ box,
482
+ size: boxSize,
483
+ skipTo: null,
484
+ };
485
+ }
486
+ if (boxType === 'esds') {
487
+ const box = (0, esds_1.parseEsds)({
488
+ data: iterator,
489
+ size: boxSize,
490
+ fileOffset,
491
+ });
492
+ return {
493
+ type: 'complete',
494
+ box,
495
+ size: boxSize,
496
+ skipTo: null,
497
+ };
498
+ }
499
+ if (boxType === 'mdat') {
500
+ const box = await (0, mdat_1.parseMdat)({
501
+ data: iterator,
502
+ size: boxSize,
503
+ fileOffset,
504
+ existingBoxes: parsedBoxes,
505
+ options,
506
+ signal,
507
+ maySkipSampleProcessing: options.supportsContentRange,
508
+ });
509
+ if (box === null) {
510
+ throw new Error('Unexpected null');
511
+ }
512
+ return {
513
+ type: 'complete',
514
+ box,
515
+ size: boxSize,
516
+ skipTo: null,
517
+ };
518
+ }
519
+ const bytesRemainingInBox = boxSize - (iterator.counter.getOffset() - fileOffset);
520
+ const children = await getChildren({
521
+ boxType,
522
+ iterator,
523
+ bytesRemainingInBox,
524
+ options,
525
+ signal,
526
+ logLevel,
527
+ fields,
528
+ });
529
+ return {
530
+ type: 'complete',
531
+ box: {
532
+ type: 'regular-box',
533
+ boxType,
534
+ boxSize,
535
+ children,
536
+ offset: fileOffset,
537
+ },
538
+ size: boxSize,
539
+ skipTo: null,
540
+ };
541
+ };
542
+ exports.processBox = processBox;
543
+ const parseIsoBaseMediaBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBoxes, options, continueMdat, signal, logLevel, fields, }) => {
544
+ const structure = {
545
+ type: 'iso-base-media',
546
+ boxes: initialBoxes,
547
+ };
548
+ const initialOffset = iterator.counter.getOffset();
549
+ const alreadyHasMdat = structure.boxes.find((b) => b.type === 'mdat-box');
550
+ while (iterator.bytesRemaining() > 0 &&
551
+ iterator.counter.getOffset() - initialOffset < maxBytes) {
552
+ const result = continueMdat
553
+ ? await (0, exports.parseMdatPartially)({
554
+ iterator,
555
+ boxSize: continueMdat.boxSize,
556
+ fileOffset: continueMdat.fileOffset,
557
+ parsedBoxes: initialBoxes,
558
+ options,
559
+ signal,
560
+ })
561
+ : await (0, exports.processBox)({
562
+ iterator,
563
+ allowIncompleteBoxes,
564
+ parsedBoxes: initialBoxes,
565
+ options,
566
+ signal,
567
+ logLevel,
568
+ fields,
569
+ });
570
+ if (result.type === 'incomplete') {
571
+ if (Number.isFinite(maxBytes)) {
572
+ throw new Error('maxBytes must be Infinity for top-level boxes');
573
+ }
574
+ return {
575
+ status: 'incomplete',
576
+ segments: structure,
577
+ continueParsing: () => {
578
+ return (0, exports.parseIsoBaseMediaBoxes)({
579
+ iterator,
580
+ maxBytes,
581
+ allowIncompleteBoxes,
582
+ initialBoxes: structure.boxes,
583
+ options,
584
+ continueMdat: false,
585
+ signal,
586
+ logLevel,
587
+ fields,
588
+ });
589
+ },
590
+ skipTo: null,
591
+ };
592
+ }
593
+ if (result.type === 'partial-mdat-box') {
594
+ return {
595
+ status: 'incomplete',
596
+ segments: structure,
597
+ continueParsing: () => {
598
+ return Promise.resolve((0, exports.parseIsoBaseMediaBoxes)({
599
+ iterator,
600
+ maxBytes,
601
+ allowIncompleteBoxes,
602
+ initialBoxes: structure.boxes,
603
+ options,
604
+ continueMdat: result,
605
+ signal,
606
+ logLevel,
607
+ fields,
608
+ }));
609
+ },
610
+ skipTo: null,
611
+ };
612
+ }
613
+ if (result.box.type === 'mdat-box' && alreadyHasMdat) {
614
+ structure.boxes = structure.boxes.filter((b) => b.type !== 'mdat-box');
615
+ structure.boxes.push(result.box);
616
+ iterator.allowDiscard();
617
+ if (result.box.status !== 'samples-processed') {
618
+ throw new Error('unexpected');
619
+ }
620
+ break;
621
+ }
622
+ else {
623
+ structure.boxes.push(result.box);
624
+ if ((0, has_all_info_1.hasAllInfo)({ fields, state: options.parserState, structure })) {
625
+ return {
626
+ status: 'done',
627
+ segments: structure,
628
+ };
629
+ }
630
+ }
631
+ if (result.skipTo !== null) {
632
+ if (!options.supportsContentRange) {
633
+ throw new Error('Content-Range header is not supported by the reader, but was asked to seek');
634
+ }
635
+ return {
636
+ status: 'incomplete',
637
+ segments: structure,
638
+ continueParsing: () => {
639
+ return (0, exports.parseIsoBaseMediaBoxes)({
640
+ iterator,
641
+ maxBytes,
642
+ allowIncompleteBoxes,
643
+ initialBoxes: structure.boxes,
644
+ options,
645
+ continueMdat: false,
646
+ signal,
647
+ logLevel,
648
+ fields,
649
+ });
650
+ },
651
+ skipTo: result.skipTo,
652
+ };
653
+ }
654
+ if (iterator.bytesRemaining() < 0) {
655
+ return {
656
+ status: 'incomplete',
657
+ segments: structure,
658
+ continueParsing: () => {
659
+ return (0, exports.parseIsoBaseMediaBoxes)({
660
+ iterator,
661
+ maxBytes,
662
+ allowIncompleteBoxes,
663
+ initialBoxes: structure.boxes,
664
+ options,
665
+ continueMdat: false,
666
+ signal,
667
+ logLevel,
668
+ fields,
669
+ });
670
+ },
671
+ skipTo: null,
672
+ };
673
+ }
674
+ iterator.removeBytesRead();
675
+ }
676
+ const mdatState = (0, traversal_1.getMdatBox)(structure.boxes);
677
+ const skipped = (mdatState === null || mdatState === void 0 ? void 0 : mdatState.status) === 'samples-skipped' &&
678
+ !options.parserState.maySkipVideoData() &&
679
+ options.supportsContentRange;
680
+ const buffered = (mdatState === null || mdatState === void 0 ? void 0 : mdatState.status) === 'samples-buffered' &&
681
+ !options.parserState.maySkipVideoData();
682
+ if (skipped || buffered) {
683
+ return {
684
+ status: 'incomplete',
685
+ segments: structure,
686
+ continueParsing: () => {
687
+ if (buffered) {
688
+ iterator.skipTo(mdatState.fileOffset, false);
689
+ }
690
+ return (0, exports.parseIsoBaseMediaBoxes)({
691
+ iterator,
692
+ maxBytes,
693
+ allowIncompleteBoxes: false,
694
+ initialBoxes: structure.boxes,
695
+ options,
696
+ continueMdat: false,
697
+ signal,
698
+ logLevel,
699
+ fields,
700
+ });
701
+ },
702
+ skipTo: skipped ? mdatState.fileOffset : null,
703
+ };
704
+ }
705
+ return {
706
+ status: 'done',
707
+ segments: structure,
708
+ };
709
+ };
710
+ exports.parseIsoBaseMediaBoxes = parseIsoBaseMediaBoxes;
@@ -0,0 +1,9 @@
1
+ import type { BufferIterator } from '../../../buffer-iterator';
2
+ export interface Av1CBox {
3
+ type: 'av1C-box';
4
+ privateData: Uint8Array;
5
+ }
6
+ export declare const parseAv1C: ({ data, size, }: {
7
+ data: BufferIterator;
8
+ size: number;
9
+ }) => Av1CBox;