@remotion/media-parser 4.0.254 → 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,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMatroskaMedia = void 0;
4
+ const ebml_1 = require("../../boxes/webm/ebml");
5
+ const make_header_1 = require("../../boxes/webm/make-header");
6
+ const all_segments_1 = require("../../boxes/webm/segments/all-segments");
7
+ const cluster_1 = require("./cluster");
8
+ const make_duration_with_padding_1 = require("./make-duration-with-padding");
9
+ const matroska_cues_1 = require("./matroska-cues");
10
+ const matroska_header_1 = require("./matroska-header");
11
+ const matroska_info_1 = require("./matroska-info");
12
+ const matroska_seek_1 = require("./matroska-seek");
13
+ const matroska_segment_1 = require("./matroska-segment");
14
+ const matroska_trackentry_1 = require("./matroska-trackentry");
15
+ const timescale = 1000000;
16
+ const createMatroskaMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, filename, logLevel, progressTracker, }) => {
17
+ var _a, _b, _c, _d, _e, _f, _g;
18
+ const header = (0, matroska_header_1.makeMatroskaHeader)();
19
+ const w = await writer.createContent({ filename, mimeType: 'video/webm' });
20
+ await w.write(header.bytes);
21
+ const matroskaInfo = (0, matroska_info_1.makeMatroskaInfo)({
22
+ timescale,
23
+ });
24
+ const currentTracks = [];
25
+ const seeks = [];
26
+ const cues = [];
27
+ const trackNumbers = [];
28
+ const matroskaSegment = (0, matroska_segment_1.createMatroskaSegment)([
29
+ ...(0, matroska_seek_1.createMatroskaSeekHead)(seeks),
30
+ matroskaInfo,
31
+ ...(0, matroska_trackentry_1.makeMatroskaTracks)(currentTracks),
32
+ ]);
33
+ const infoSegment = matroskaSegment.offsets.children.find((o) => o.field === 'Info');
34
+ const durationOffset = ((_b = (_a = infoSegment === null || infoSegment === void 0 ? void 0 : infoSegment.children.find((c) => c.field === 'Duration')) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0) +
35
+ w.getWrittenByteCount();
36
+ const tracksOffset = ((_d = (_c = matroskaSegment.offsets.children.find((o) => o.field === 'Tracks')) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0) + w.getWrittenByteCount();
37
+ const seekHeadOffset = ((_f = (_e = matroskaSegment.offsets.children.find((o) => o.field === 'SeekHead')) === null || _e === void 0 ? void 0 : _e.offset) !== null && _f !== void 0 ? _f : 0) + w.getWrittenByteCount();
38
+ const infoOffset = ((_g = infoSegment === null || infoSegment === void 0 ? void 0 : infoSegment.offset) !== null && _g !== void 0 ? _g : 0) + w.getWrittenByteCount();
39
+ if (!seekHeadOffset) {
40
+ throw new Error('could not get seek offset');
41
+ }
42
+ if (!durationOffset) {
43
+ throw new Error('could not get duration offset');
44
+ }
45
+ if (!tracksOffset) {
46
+ throw new Error('could not get tracks offset');
47
+ }
48
+ if (!infoOffset) {
49
+ throw new Error('could not get tracks offset');
50
+ }
51
+ seeks.push({
52
+ hexString: all_segments_1.matroskaElements.Info,
53
+ byte: infoOffset - seekHeadOffset,
54
+ });
55
+ seeks.push({
56
+ hexString: all_segments_1.matroskaElements.Tracks,
57
+ byte: tracksOffset - seekHeadOffset,
58
+ });
59
+ const updateSeekWrite = async () => {
60
+ const updatedSeek = (0, matroska_seek_1.createMatroskaSeekHead)(seeks);
61
+ await w.updateDataAt(seekHeadOffset, (0, make_header_1.combineUint8Arrays)(updatedSeek.map((b) => b.bytes)));
62
+ onBytesProgress(w.getWrittenByteCount());
63
+ };
64
+ const segmentOffset = w.getWrittenByteCount();
65
+ const updateSegmentSize = async (size) => {
66
+ const data = (0, ebml_1.getVariableInt)(size, matroska_segment_1.MATROSKA_SEGMENT_MIN_VINT_WIDTH);
67
+ await w.updateDataAt(segmentOffset + (0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Segment).byteLength, data);
68
+ onBytesProgress(w.getWrittenByteCount());
69
+ };
70
+ await w.write(matroskaSegment.bytes);
71
+ const clusterOffset = w.getWrittenByteCount();
72
+ let currentCluster = await (0, cluster_1.makeCluster)({
73
+ writer: w,
74
+ clusterStartTimestamp: 0,
75
+ timescale,
76
+ logLevel,
77
+ });
78
+ seeks.push({
79
+ hexString: all_segments_1.matroskaElements.Cluster,
80
+ byte: clusterOffset - seekHeadOffset,
81
+ });
82
+ const getClusterOrMakeNew = async ({ chunk, isVideo, }) => {
83
+ // In Safari, samples can arrive out of order, e.g public/bigbuckbunny.mp4
84
+ // Therefore, only updating track number progress if it is a keyframe
85
+ // to allow for timestamps to be lower than the previous one
86
+ const smallestProgress = progressTracker.getSmallestProgress();
87
+ if (!currentCluster.shouldMakeNewCluster({
88
+ newT: smallestProgress,
89
+ isVideo,
90
+ chunk,
91
+ })) {
92
+ return { cluster: currentCluster, isNew: false, smallestProgress };
93
+ }
94
+ currentCluster = await (0, cluster_1.makeCluster)({
95
+ writer: w,
96
+ clusterStartTimestamp: smallestProgress,
97
+ timescale,
98
+ logLevel,
99
+ });
100
+ return { cluster: currentCluster, isNew: true, smallestProgress };
101
+ };
102
+ const updateDuration = async (newDuration) => {
103
+ const blocks = (0, make_duration_with_padding_1.makeDurationWithPadding)(newDuration);
104
+ await w.updateDataAt(durationOffset, blocks.bytes);
105
+ onBytesProgress(w.getWrittenByteCount());
106
+ };
107
+ const addSample = async ({ chunk, trackNumber, isVideo, }) => {
108
+ var _a;
109
+ const { cluster, isNew, smallestProgress } = await getClusterOrMakeNew({
110
+ chunk,
111
+ isVideo,
112
+ });
113
+ const newDuration = Math.round((chunk.timestamp + ((_a = chunk.duration) !== null && _a !== void 0 ? _a : 0)) / 1000);
114
+ await updateDuration(newDuration);
115
+ const { timecodeRelativeToCluster } = await cluster.addSample(chunk, trackNumber);
116
+ if (isNew) {
117
+ const newCluster = w.getWrittenByteCount();
118
+ cues.push({
119
+ time: (0, cluster_1.timestampToClusterTimestamp)(smallestProgress, timescale) +
120
+ timecodeRelativeToCluster,
121
+ clusterPosition: newCluster - seekHeadOffset,
122
+ trackNumber,
123
+ });
124
+ }
125
+ if (chunk.type === 'key') {
126
+ progressTracker.updateTrackProgress(trackNumber, chunk.timestamp);
127
+ }
128
+ onBytesProgress(w.getWrittenByteCount());
129
+ onMillisecondsProgress(newDuration);
130
+ };
131
+ const addTrack = async (track) => {
132
+ currentTracks.push(track);
133
+ const newTracks = (0, matroska_trackentry_1.makeMatroskaTracks)(currentTracks);
134
+ progressTracker.registerTrack(track.trackNumber);
135
+ await w.updateDataAt(tracksOffset, (0, make_header_1.combineUint8Arrays)(newTracks.map((b) => b.bytes)));
136
+ };
137
+ const operationProm = { current: Promise.resolve() };
138
+ const waitForFinishPromises = [];
139
+ return {
140
+ updateTrackSampleRate: ({ sampleRate, trackNumber }) => {
141
+ currentTracks.forEach((track) => {
142
+ if (track.trackNumber === trackNumber) {
143
+ if (track.type !== 'audio') {
144
+ throw new Error('track is not audio');
145
+ }
146
+ track.sampleRate = sampleRate;
147
+ }
148
+ });
149
+ },
150
+ save: () => {
151
+ return w.save();
152
+ },
153
+ remove: async () => {
154
+ await w.remove();
155
+ },
156
+ addSample: ({ chunk, trackNumber, isVideo }) => {
157
+ operationProm.current = operationProm.current.then(() => addSample({ chunk, trackNumber, isVideo }));
158
+ return operationProm.current;
159
+ },
160
+ addTrack: (track) => {
161
+ const trackNumber = currentTracks.length + 1;
162
+ operationProm.current = operationProm.current.then(() => addTrack({ ...track, trackNumber }));
163
+ trackNumbers.push(trackNumber);
164
+ return operationProm.current.then(() => ({ trackNumber }));
165
+ },
166
+ addWaitForFinishPromise: (promise) => {
167
+ waitForFinishPromises.push(promise);
168
+ },
169
+ async waitForFinish() {
170
+ await Promise.all(waitForFinishPromises.map((p) => p()));
171
+ await operationProm.current;
172
+ seeks.push({
173
+ hexString: all_segments_1.matroskaElements.Cues,
174
+ byte: w.getWrittenByteCount() - seekHeadOffset,
175
+ });
176
+ await updateSeekWrite();
177
+ await w.write((0, matroska_cues_1.createMatroskaCues)(cues).bytes);
178
+ await w.waitForFinish();
179
+ const segmentSize = w.getWrittenByteCount() -
180
+ segmentOffset -
181
+ (0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Segment).byteLength -
182
+ matroska_segment_1.MATROSKA_SEGMENT_MIN_VINT_WIDTH;
183
+ await updateSegmentSize(segmentSize);
184
+ },
185
+ };
186
+ };
187
+ exports.createMatroskaMedia = createMatroskaMedia;
@@ -0,0 +1 @@
1
+ export declare const makeDurationWithPadding: (newDuration: number) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeDurationWithPadding = void 0;
4
+ const make_header_1 = require("../../boxes/webm/make-header");
5
+ const makeDurationWithPadding = (newDuration) => {
6
+ return (0, make_header_1.makeMatroskaBytes)({
7
+ type: 'Duration',
8
+ value: {
9
+ value: newDuration,
10
+ size: '64',
11
+ },
12
+ minVintWidth: 8,
13
+ });
14
+ };
15
+ exports.makeDurationWithPadding = makeDurationWithPadding;
@@ -0,0 +1,6 @@
1
+ export type Cue = {
2
+ time: number;
3
+ clusterPosition: number;
4
+ trackNumber: number;
5
+ };
6
+ export declare const createMatroskaCues: (cues: Cue[]) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMatroskaCues = void 0;
4
+ const make_header_1 = require("../../boxes/webm/make-header");
5
+ const createMatroskaCues = (cues) => {
6
+ return (0, make_header_1.makeMatroskaBytes)({
7
+ type: 'Cues',
8
+ minVintWidth: null,
9
+ value: cues.map((cue) => {
10
+ return {
11
+ type: 'CuePoint',
12
+ value: [
13
+ {
14
+ type: 'CueTime',
15
+ minVintWidth: null,
16
+ value: {
17
+ value: cue.time,
18
+ byteLength: null,
19
+ },
20
+ },
21
+ {
22
+ type: 'CueTrackPositions',
23
+ value: [
24
+ {
25
+ type: 'CueTrack',
26
+ minVintWidth: null,
27
+ value: {
28
+ value: cue.trackNumber,
29
+ byteLength: null,
30
+ },
31
+ },
32
+ {
33
+ type: 'CueClusterPosition',
34
+ minVintWidth: null,
35
+ value: {
36
+ value: cue.clusterPosition,
37
+ byteLength: null,
38
+ },
39
+ },
40
+ ],
41
+ minVintWidth: null,
42
+ },
43
+ ],
44
+ minVintWidth: null,
45
+ };
46
+ }),
47
+ });
48
+ };
49
+ exports.createMatroskaCues = createMatroskaCues;
@@ -0,0 +1 @@
1
+ export declare const makeMatroskaHeader: () => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeMatroskaHeader = void 0;
4
+ const make_header_1 = require("../../boxes/webm/make-header");
5
+ const makeMatroskaHeader = () => {
6
+ return (0, make_header_1.makeMatroskaBytes)({
7
+ type: 'Header',
8
+ value: [
9
+ {
10
+ minVintWidth: null,
11
+ type: 'EBMLVersion',
12
+ value: {
13
+ value: 1,
14
+ byteLength: null,
15
+ },
16
+ },
17
+ {
18
+ minVintWidth: null,
19
+ type: 'EBMLReadVersion',
20
+ value: {
21
+ value: 1,
22
+ byteLength: null,
23
+ },
24
+ },
25
+ {
26
+ type: 'EBMLMaxIDLength',
27
+ value: {
28
+ byteLength: null,
29
+ value: 4,
30
+ },
31
+ minVintWidth: null,
32
+ },
33
+ {
34
+ type: 'EBMLMaxSizeLength',
35
+ value: {
36
+ byteLength: null,
37
+ value: 8,
38
+ },
39
+ minVintWidth: null,
40
+ },
41
+ {
42
+ type: 'DocType',
43
+ value: 'webm',
44
+ minVintWidth: null,
45
+ },
46
+ {
47
+ type: 'DocTypeVersion',
48
+ value: {
49
+ byteLength: null,
50
+ value: 4,
51
+ },
52
+ minVintWidth: null,
53
+ },
54
+ {
55
+ type: 'DocTypeReadVersion',
56
+ value: {
57
+ byteLength: null,
58
+ value: 2,
59
+ },
60
+ minVintWidth: null,
61
+ },
62
+ ],
63
+ minVintWidth: null,
64
+ });
65
+ };
66
+ exports.makeMatroskaHeader = makeMatroskaHeader;
@@ -0,0 +1,3 @@
1
+ export declare const makeMatroskaInfo: ({ timescale }: {
2
+ timescale: number;
3
+ }) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeMatroskaInfo = void 0;
4
+ const make_header_1 = require("../../boxes/webm/make-header");
5
+ const make_duration_with_padding_1 = require("./make-duration-with-padding");
6
+ const makeMatroskaInfo = ({ timescale }) => {
7
+ return (0, make_header_1.makeMatroskaBytes)({
8
+ type: 'Info',
9
+ value: [
10
+ {
11
+ type: 'TimestampScale',
12
+ value: {
13
+ value: timescale,
14
+ byteLength: null,
15
+ },
16
+ minVintWidth: null,
17
+ },
18
+ {
19
+ type: 'MuxingApp',
20
+ value: '@remotion/media-parser',
21
+ minVintWidth: null,
22
+ },
23
+ {
24
+ type: 'WritingApp',
25
+ value: '@remotion/media-parser',
26
+ minVintWidth: null,
27
+ },
28
+ (0, make_duration_with_padding_1.makeDurationWithPadding)(0),
29
+ ],
30
+ minVintWidth: null,
31
+ });
32
+ };
33
+ exports.makeMatroskaInfo = makeMatroskaInfo;
@@ -0,0 +1,6 @@
1
+ import type { MatroskaElement } from '../../boxes/webm/segments/all-segments';
2
+ export type Seek = {
3
+ hexString: MatroskaElement;
4
+ byte: number;
5
+ };
6
+ export declare const createMatroskaSeekHead: (seeks: Seek[]) => import("../../boxes/webm/segments/all-segments").BytesAndOffset[];
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMatroskaSeekHead = void 0;
4
+ const make_header_1 = require("../../boxes/webm/make-header");
5
+ const createMatroskaSeekHead = (seeks) => {
6
+ return (0, make_header_1.padMatroskaBytes)((0, make_header_1.makeMatroskaBytes)({
7
+ type: 'SeekHead',
8
+ minVintWidth: null,
9
+ value: seeks.map((seek) => {
10
+ return {
11
+ type: 'Seek',
12
+ minVintWidth: null,
13
+ value: [
14
+ {
15
+ type: 'SeekID',
16
+ minVintWidth: null,
17
+ value: seek.hexString,
18
+ },
19
+ {
20
+ type: 'SeekPosition',
21
+ minVintWidth: null,
22
+ value: {
23
+ value: seek.byte,
24
+ byteLength: null,
25
+ },
26
+ },
27
+ ],
28
+ };
29
+ }),
30
+ }), 200);
31
+ };
32
+ exports.createMatroskaSeekHead = createMatroskaSeekHead;
@@ -0,0 +1,3 @@
1
+ import type { BytesAndOffset } from '../../boxes/webm/segments/all-segments';
2
+ export declare const MATROSKA_SEGMENT_MIN_VINT_WIDTH = 8;
3
+ export declare const createMatroskaSegment: (children: BytesAndOffset[]) => BytesAndOffset;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMatroskaSegment = exports.MATROSKA_SEGMENT_MIN_VINT_WIDTH = void 0;
4
+ const make_header_1 = require("../../boxes/webm/make-header");
5
+ exports.MATROSKA_SEGMENT_MIN_VINT_WIDTH = 8;
6
+ const createMatroskaSegment = (children) => {
7
+ return (0, make_header_1.makeMatroskaBytes)({
8
+ type: 'Segment',
9
+ value: children,
10
+ minVintWidth: exports.MATROSKA_SEGMENT_MIN_VINT_WIDTH,
11
+ });
12
+ };
13
+ exports.createMatroskaSegment = createMatroskaSegment;
@@ -0,0 +1,10 @@
1
+ import type { VideoTrackColorParams } from '../../get-tracks';
2
+ import type { MakeTrackAudio, MakeTrackVideo } from '../make-track-info';
3
+ export declare const makeMatroskaVideoBytes: ({ color, width, height, }: {
4
+ color: VideoTrackColorParams;
5
+ width: number;
6
+ height: number;
7
+ }) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
8
+ export declare const makeMatroskaAudioTrackEntryBytes: ({ trackNumber, codec, numberOfChannels, sampleRate, codecPrivate, }: MakeTrackAudio) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
9
+ export declare const makeMatroskaVideoTrackEntryBytes: ({ color, width, height, trackNumber, codec, codecPrivate, }: MakeTrackVideo) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
10
+ export declare const makeMatroskaTracks: (tracks: (MakeTrackAudio | MakeTrackVideo)[]) => import("../../boxes/webm/segments/all-segments").BytesAndOffset[];