@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,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseVideo = void 0;
4
+ const process_box_1 = require("./boxes/iso-base-media/process-box");
5
+ const parse_box_1 = require("./boxes/riff/parse-box");
6
+ const parse_webm_header_1 = require("./boxes/webm/parse-webm-header");
7
+ const log_1 = require("./log");
8
+ const parseVideo = ({ iterator, options, signal, logLevel, fields, }) => {
9
+ if (iterator.bytesRemaining() === 0) {
10
+ return Promise.reject(new Error('no bytes'));
11
+ }
12
+ if (iterator.isRiff()) {
13
+ log_1.Log.verbose(logLevel, 'Detected RIFF container');
14
+ return Promise.resolve((0, parse_box_1.parseRiff)({ iterator, options, fields }));
15
+ }
16
+ if (iterator.isIsoBaseMedia()) {
17
+ log_1.Log.verbose(logLevel, 'Detected ISO Base Media container');
18
+ return (0, process_box_1.parseIsoBaseMediaBoxes)({
19
+ iterator,
20
+ maxBytes: Infinity,
21
+ allowIncompleteBoxes: true,
22
+ initialBoxes: [],
23
+ options,
24
+ continueMdat: false,
25
+ signal,
26
+ logLevel,
27
+ fields,
28
+ });
29
+ }
30
+ if (iterator.isWebm()) {
31
+ log_1.Log.verbose(logLevel, 'Detected Matroska container');
32
+ return (0, parse_webm_header_1.parseWebm)({ counter: iterator, parserContext: options, fields });
33
+ }
34
+ if (iterator.isMp3()) {
35
+ return Promise.reject(new Error('MP3 files are not yet supported'));
36
+ }
37
+ return Promise.reject(new Error('Unknown video format'));
38
+ };
39
+ exports.parseVideo = parseVideo;
@@ -0,0 +1,10 @@
1
+ import type { ParserState } from './state/parser-state';
2
+ import type { OnAudioTrack, OnVideoTrack } from './webcodec-sample-types';
3
+ export type ParserContext = {
4
+ onAudioTrack: OnAudioTrack | null;
5
+ onVideoTrack: OnVideoTrack | null;
6
+ parserState: ParserState;
7
+ nullifySamples: boolean;
8
+ supportsContentRange: boolean;
9
+ nextTrackIndex: number;
10
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,22 @@
1
+ import type { OnTrackEntrySegment } from './boxes/webm/segments';
2
+ import type { TrackInfo } from './boxes/webm/segments/track-entry';
3
+ import type { AudioSample, OnAudioSample, OnVideoSample, VideoSample } from './webcodec-sample-types';
4
+ export type InternalStats = {};
5
+ export declare const makeParserState: ({ hasAudioCallbacks, hasVideoCallbacks, signal, }: {
6
+ hasAudioCallbacks: boolean;
7
+ hasVideoCallbacks: boolean;
8
+ signal: AbortSignal | undefined;
9
+ }) => {
10
+ onTrackEntrySegment: OnTrackEntrySegment;
11
+ getTrackInfoByNumber: (id: number) => TrackInfo;
12
+ registerVideoSampleCallback: (id: number, callback: OnVideoSample | null) => Promise<void>;
13
+ setTimestampOffset: (byteOffset: number, timestamp: number) => void;
14
+ getTimestampOffsetForByteOffset: (byteOffset: number) => number | undefined;
15
+ registerAudioSampleCallback: (id: number, callback: OnAudioSample | null) => Promise<void>;
16
+ onAudioSample: (trackId: number, audioSample: AudioSample) => Promise<void>;
17
+ onVideoSample: (trackId: number, videoSample: VideoSample) => Promise<void>;
18
+ getInternalStats: () => {};
19
+ getTimescale: () => number;
20
+ setTimescale: (newTimescale: number) => void;
21
+ };
22
+ export type ParserState = ReturnType<typeof makeParserState>;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeParserState = void 0;
4
+ const traversal_1 = require("./boxes/webm/traversal");
5
+ const makeParserState = ({ hasAudioCallbacks, hasVideoCallbacks, signal, }) => {
6
+ const trackEntries = {};
7
+ const onTrackEntrySegment = (trackEntry) => {
8
+ var _a;
9
+ const trackId = (0, traversal_1.getTrackId)(trackEntry);
10
+ if (!trackId) {
11
+ throw new Error('Expected track id');
12
+ }
13
+ if (trackEntries[trackId]) {
14
+ return;
15
+ }
16
+ const codec = (0, traversal_1.getTrackCodec)(trackEntry);
17
+ if (!codec) {
18
+ throw new Error('Expected codec');
19
+ }
20
+ const trackTimescale = (0, traversal_1.getTrackTimestampScale)(trackEntry);
21
+ trackEntries[trackId] = {
22
+ codec: codec.value,
23
+ trackTimescale: (_a = trackTimescale === null || trackTimescale === void 0 ? void 0 : trackTimescale.value) !== null && _a !== void 0 ? _a : null,
24
+ };
25
+ };
26
+ const videoSampleCallbacks = {};
27
+ const audioSampleCallbacks = {};
28
+ const queuedAudioSamples = {};
29
+ const queuedVideoSamples = {};
30
+ const declinedTrackNumbers = [];
31
+ let timescale = null;
32
+ const getTimescale = () => {
33
+ // https://www.matroska.org/technical/notes.html
34
+ // When using the default value of TimestampScale of “1,000,000”, one Segment Tick represents one millisecond.
35
+ if (timescale === null) {
36
+ return 1000000;
37
+ }
38
+ return timescale;
39
+ };
40
+ const setTimescale = (newTimescale) => {
41
+ timescale = newTimescale;
42
+ };
43
+ const timestampMap = new Map();
44
+ const setTimestampOffset = (byteOffset, timestamp) => {
45
+ timestampMap.set(byteOffset, timestamp);
46
+ };
47
+ const getTimestampOffsetForByteOffset = (byteOffset) => {
48
+ const entries = Array.from(timestampMap.entries());
49
+ const sortedByByteOffset = entries
50
+ .sort((a, b) => {
51
+ return a[0] - b[0];
52
+ })
53
+ .reverse();
54
+ for (const [offset, timestamp] of sortedByByteOffset) {
55
+ if (offset >= byteOffset) {
56
+ continue;
57
+ }
58
+ return timestamp;
59
+ }
60
+ return timestampMap.get(byteOffset);
61
+ };
62
+ return {
63
+ onTrackEntrySegment,
64
+ getTrackInfoByNumber: (id) => trackEntries[id],
65
+ registerVideoSampleCallback: async (id, callback) => {
66
+ var _a;
67
+ if (callback === null) {
68
+ delete videoSampleCallbacks[id];
69
+ declinedTrackNumbers.push(id);
70
+ return;
71
+ }
72
+ videoSampleCallbacks[id] = callback;
73
+ for (const queued of (_a = queuedVideoSamples[id]) !== null && _a !== void 0 ? _a : []) {
74
+ await callback(queued);
75
+ }
76
+ queuedVideoSamples[id] = [];
77
+ },
78
+ setTimestampOffset,
79
+ getTimestampOffsetForByteOffset,
80
+ registerAudioSampleCallback: async (id, callback) => {
81
+ var _a;
82
+ if (callback === null) {
83
+ delete audioSampleCallbacks[id];
84
+ declinedTrackNumbers.push(id);
85
+ return;
86
+ }
87
+ audioSampleCallbacks[id] = callback;
88
+ for (const queued of (_a = queuedAudioSamples[id]) !== null && _a !== void 0 ? _a : []) {
89
+ await callback(queued);
90
+ }
91
+ queuedAudioSamples[id] = [];
92
+ },
93
+ onAudioSample: async (trackId, audioSample) => {
94
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
95
+ throw new Error('Aborted');
96
+ }
97
+ const callback = audioSampleCallbacks[trackId];
98
+ if (callback) {
99
+ await callback(audioSample);
100
+ }
101
+ else {
102
+ if (declinedTrackNumbers.includes(trackId)) {
103
+ return;
104
+ }
105
+ if (!hasAudioCallbacks) {
106
+ throw new Error('No audio callbacks registered');
107
+ }
108
+ }
109
+ },
110
+ onVideoSample: async (trackId, videoSample) => {
111
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
112
+ throw new Error('Aborted');
113
+ }
114
+ const callback = videoSampleCallbacks[trackId];
115
+ if (callback) {
116
+ await callback(videoSample);
117
+ }
118
+ else {
119
+ if (declinedTrackNumbers.includes(trackId)) {
120
+ return;
121
+ }
122
+ if (!hasVideoCallbacks) {
123
+ throw new Error('No video callbacks registered');
124
+ }
125
+ }
126
+ },
127
+ getInternalStats: () => ({}),
128
+ getTimescale,
129
+ setTimescale,
130
+ };
131
+ };
132
+ exports.makeParserState = makeParserState;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "4.0.255";
1
+ export declare const VERSION = "4.0.256";
package/dist/version.js CHANGED
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Automatically generated on publish
5
- exports.VERSION = '4.0.255';
5
+ exports.VERSION = '4.0.256';
@@ -0,0 +1,2 @@
1
+ import type { CreateContent } from '../writer';
2
+ export declare const createContent: CreateContent;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createContent = void 0;
4
+ const createContent = ({ filename, mimeType }) => {
5
+ const buf = new ArrayBuffer(0, {
6
+ // TODO: Educate that the buffer is limited to 2GB
7
+ maxByteLength: 2000000000,
8
+ });
9
+ if (!buf.resize) {
10
+ throw new Error('Could not create buffer writer');
11
+ }
12
+ const write = (newData) => {
13
+ const oldLength = buf.byteLength;
14
+ const newLength = oldLength + newData.byteLength;
15
+ buf.resize(newLength);
16
+ const newArray = new Uint8Array(buf);
17
+ newArray.set(newData, oldLength);
18
+ };
19
+ const updateDataAt = (position, newData) => {
20
+ const newArray = new Uint8Array(buf);
21
+ newArray.set(newData, position);
22
+ };
23
+ let writPromise = Promise.resolve();
24
+ let removed = false;
25
+ const writer = {
26
+ write: (arr) => {
27
+ writPromise = writPromise.then(() => write(arr));
28
+ return writPromise;
29
+ },
30
+ save: () => {
31
+ if (removed) {
32
+ return Promise.reject(new Error('Already called .remove() on the result'));
33
+ }
34
+ const arr = new Uint8Array(buf);
35
+ return Promise.resolve(
36
+ // TODO: Unhardcode MIME type and file name
37
+ new File([arr.slice()], filename, { type: mimeType }));
38
+ },
39
+ remove() {
40
+ removed = true;
41
+ return Promise.resolve();
42
+ },
43
+ getWrittenByteCount: () => buf.byteLength,
44
+ updateDataAt: (position, newData) => {
45
+ writPromise = writPromise.then(() => updateDataAt(position, newData));
46
+ return writPromise;
47
+ },
48
+ waitForFinish: async () => {
49
+ await writPromise;
50
+ },
51
+ };
52
+ return Promise.resolve(writer);
53
+ };
54
+ exports.createContent = createContent;
@@ -0,0 +1,2 @@
1
+ import type { WriterInterface } from './writer';
2
+ export declare const bufferWriter: WriterInterface;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bufferWriter = void 0;
4
+ const writer_1 = require("./buffer-implementation/writer");
5
+ exports.bufferWriter = {
6
+ createContent: writer_1.createContent,
7
+ };
@@ -0,0 +1,3 @@
1
+ import type { WriterInterface } from './writer';
2
+ export declare const webFsWriter: WriterInterface;
3
+ export declare const canUseWebFsWriter: () => Promise<boolean>;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canUseWebFsWriter = exports.webFsWriter = void 0;
4
+ const createContent = async ({ filename }) => {
5
+ const directoryHandle = await navigator.storage.getDirectory();
6
+ directoryHandle.removeEntry(filename);
7
+ const fileHandle = await directoryHandle.getFileHandle(filename, {
8
+ create: true,
9
+ });
10
+ const writable = await fileHandle.createWritable();
11
+ let written = 0;
12
+ let writPromise = Promise.resolve();
13
+ const write = async (arr) => {
14
+ await writable.write(arr);
15
+ written += arr.byteLength;
16
+ };
17
+ const updateDataAt = async (position, data) => {
18
+ await writable.seek(position);
19
+ await writable.write(data);
20
+ await writable.seek(written);
21
+ };
22
+ const remove = async () => {
23
+ await directoryHandle.removeEntry(filename, {
24
+ recursive: true,
25
+ });
26
+ };
27
+ const writer = {
28
+ write: (arr) => {
29
+ writPromise = writPromise.then(() => write(arr));
30
+ return writPromise;
31
+ },
32
+ save: async () => {
33
+ try {
34
+ await writable.close();
35
+ }
36
+ catch (_a) {
37
+ // Ignore, could already be closed
38
+ }
39
+ const newHandle = await directoryHandle.getFileHandle(filename, {
40
+ create: true,
41
+ });
42
+ const newFile = await newHandle.getFile();
43
+ return newFile;
44
+ },
45
+ getWrittenByteCount: () => written,
46
+ updateDataAt: (position, data) => {
47
+ writPromise = writPromise.then(() => updateDataAt(position, data));
48
+ return writPromise;
49
+ },
50
+ waitForFinish: async () => {
51
+ await writPromise;
52
+ },
53
+ remove,
54
+ };
55
+ return writer;
56
+ };
57
+ exports.webFsWriter = {
58
+ createContent,
59
+ };
60
+ const canUseWebFsWriter = async () => {
61
+ if (!('storage' in navigator)) {
62
+ return false;
63
+ }
64
+ if (!('getDirectory' in navigator.storage)) {
65
+ return false;
66
+ }
67
+ const directoryHandle = await navigator.storage.getDirectory();
68
+ const fileHandle = await directoryHandle.getFileHandle('remotion-probe-web-fs-support', {
69
+ create: true,
70
+ });
71
+ const canUse = fileHandle.createWritable !== undefined;
72
+ return canUse;
73
+ };
74
+ exports.canUseWebFsWriter = canUseWebFsWriter;
package/package.json CHANGED
@@ -3,14 +3,14 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-parser"
4
4
  },
5
5
  "name": "@remotion/media-parser",
6
- "version": "4.0.255",
6
+ "version": "4.0.256",
7
7
  "main": "dist/index.js",
8
8
  "sideEffects": false,
9
9
  "devDependencies": {
10
10
  "@types/wicg-file-system-access": "2023.10.5",
11
11
  "eslint": "9.14.0",
12
- "@remotion/example-videos": "4.0.255",
13
- "@remotion/eslint-config-internal": "4.0.255"
12
+ "@remotion/example-videos": "4.0.256",
13
+ "@remotion/eslint-config-internal": "4.0.256"
14
14
  },
15
15
  "publishConfig": {
16
16
  "access": "public"
package/dist/abort.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const hasBeenAborted: (error: unknown) => error is MediaParserAbortError;
package/dist/abort.js DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasBeenAborted = void 0;
4
- const hasBeenAborted = (error) => {
5
- return error instanceof MediaParserAbortError;
6
- };
7
- exports.hasBeenAborted = hasBeenAborted;
@@ -1,17 +0,0 @@
1
- import { MediaParserEmitter } from './emitter';
2
- import type { PauseSignal } from './pause-signal';
3
- export type MediaParserController = {
4
- abort: (reason?: any) => void;
5
- pause: PauseSignal['pause'];
6
- resume: PauseSignal['resume'];
7
- addEventListener: MediaParserEmitter['addEventListener'];
8
- removeEventListener: MediaParserEmitter['removeEventListener'];
9
- /**
10
- * @deprecated Not public API
11
- */
12
- _internals: {
13
- signal: AbortSignal;
14
- checkForAbortAndPause: () => Promise<void>;
15
- };
16
- };
17
- export declare const mediaParserController: () => MediaParserController;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mediaParserController = void 0;
4
- const emitter_1 = require("./emitter");
5
- const pause_signal_1 = require("./pause-signal");
6
- const mediaParserController = () => {
7
- const abortController = new AbortController();
8
- const emitter = new emitter_1.MediaParserEmitter();
9
- const pauseSignal = (0, pause_signal_1.makePauseSignal)(emitter);
10
- const checkForAbortAndPause = async () => {
11
- if (abortController.signal.aborted) {
12
- throw new Error('Aborted');
13
- }
14
- await pauseSignal.waitUntilResume();
15
- };
16
- return {
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- abort: (reason) => {
19
- abortController.abort(reason);
20
- },
21
- pause: pauseSignal.pause,
22
- resume: pauseSignal.resume,
23
- addEventListener: emitter.addEventListener,
24
- removeEventListener: emitter.removeEventListener,
25
- _internals: {
26
- signal: abortController.signal,
27
- checkForAbortAndPause,
28
- },
29
- };
30
- };
31
- exports.mediaParserController = mediaParserController;
@@ -1,2 +0,0 @@
1
- import type { DownloadAndParseMedia } from './options';
2
- export declare const parseAndDownloadMedia: DownloadAndParseMedia;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseAndDownloadMedia = void 0;
4
- const internal_parse_media_1 = require("./internal-parse-media");
5
- const from_fetch_1 = require("./readers/from-fetch");
6
- const parseAndDownloadMedia = async (options) => {
7
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
8
- const content = await options.writer.createContent({
9
- filename: 'hmm',
10
- mimeType: 'shouldnotmatter',
11
- });
12
- const returnValue = await (0, internal_parse_media_1.internalParseMedia)({
13
- fields: (_a = options.fields) !== null && _a !== void 0 ? _a : null,
14
- logLevel: (_b = options.logLevel) !== null && _b !== void 0 ? _b : 'info',
15
- mode: 'download',
16
- onAudioCodec: (_c = options.onAudioCodec) !== null && _c !== void 0 ? _c : null,
17
- onAudioTrack: null,
18
- onContainer: (_d = options.onContainer) !== null && _d !== void 0 ? _d : null,
19
- onDimensions: (_e = options.onDimensions) !== null && _e !== void 0 ? _e : null,
20
- onDiscardedData: async (data) => {
21
- await content.write(data);
22
- },
23
- onDurationInSeconds: (_f = options.onDurationInSeconds) !== null && _f !== void 0 ? _f : null,
24
- onFps: (_g = options.onFps) !== null && _g !== void 0 ? _g : null,
25
- onImages: (_h = options.onImages) !== null && _h !== void 0 ? _h : null,
26
- onInternalStats: (_j = options.onInternalStats) !== null && _j !== void 0 ? _j : null,
27
- onIsHdr: (_k = options.onIsHdr) !== null && _k !== void 0 ? _k : null,
28
- onKeyframes: (_l = options.onKeyframes) !== null && _l !== void 0 ? _l : null,
29
- onLocation: (_m = options.onLocation) !== null && _m !== void 0 ? _m : null,
30
- onMetadata: (_o = options.onMetadata) !== null && _o !== void 0 ? _o : null,
31
- onMimeType: (_p = options.onMimeType) !== null && _p !== void 0 ? _p : null,
32
- onName: (_q = options.onName) !== null && _q !== void 0 ? _q : null,
33
- onNumberOfAudioChannels: (_r = options.onNumberOfAudioChannels) !== null && _r !== void 0 ? _r : null,
34
- onParseProgress: (_s = options.onParseProgress) !== null && _s !== void 0 ? _s : null,
35
- onRotation: (_t = options.onRotation) !== null && _t !== void 0 ? _t : null,
36
- onSampleRate: (_u = options.onSampleRate) !== null && _u !== void 0 ? _u : null,
37
- onSize: (_v = options.onSize) !== null && _v !== void 0 ? _v : null,
38
- onSlowAudioBitrate: (_w = options.onSlowAudioBitrate) !== null && _w !== void 0 ? _w : null,
39
- onSlowDurationInSeconds: (_x = options.onSlowDurationInSeconds) !== null && _x !== void 0 ? _x : null,
40
- onSlowFps: (_y = options.onSlowFps) !== null && _y !== void 0 ? _y : null,
41
- onSlowKeyframes: (_z = options.onSlowKeyframes) !== null && _z !== void 0 ? _z : null,
42
- onSlowNumberOfFrames: (_0 = options.onSlowNumberOfFrames) !== null && _0 !== void 0 ? _0 : null,
43
- onSlowVideoBitrate: (_1 = options.onSlowVideoBitrate) !== null && _1 !== void 0 ? _1 : null,
44
- onStructure: (_2 = options.onStructure) !== null && _2 !== void 0 ? _2 : null,
45
- onTracks: (_3 = options.onTracks) !== null && _3 !== void 0 ? _3 : null,
46
- onUnrotatedDimensions: (_4 = options.onUnrotatedDimensions) !== null && _4 !== void 0 ? _4 : null,
47
- onVideoCodec: (_5 = options.onVideoCodec) !== null && _5 !== void 0 ? _5 : null,
48
- onVideoTrack: null,
49
- progressIntervalInMs: (_6 = options.progressIntervalInMs) !== null && _6 !== void 0 ? _6 : null,
50
- reader: (_7 = options.reader) !== null && _7 !== void 0 ? _7 : from_fetch_1.fetchReader,
51
- signal: (_8 = options.signal) !== null && _8 !== void 0 ? _8 : undefined,
52
- src: options.src,
53
- });
54
- await content.finish();
55
- return returnValue;
56
- };
57
- exports.parseAndDownloadMedia = parseAndDownloadMedia;