@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,94 @@
1
+ "use strict";
2
+ // https://github.com/Vanilagy/webm-muxer/blob/main/src/ebml.ts#L101
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getVariableInt = exports.measureEBMLVarInt = void 0;
5
+ const measureEBMLVarInt = (value) => {
6
+ if (value < (1 << 7) - 1) {
7
+ /** Top bit is set, leaving 7 bits to hold the integer, but we can't store
8
+ * 127 because "all bits set to one" is a reserved value. Same thing for the
9
+ * other cases below:
10
+ */
11
+ return 1;
12
+ }
13
+ if (value < (1 << 14) - 1) {
14
+ return 2;
15
+ }
16
+ if (value < (1 << 21) - 1) {
17
+ return 3;
18
+ }
19
+ if (value < (1 << 28) - 1) {
20
+ return 4;
21
+ }
22
+ if (value < 2 ** 35 - 1) {
23
+ return 5;
24
+ }
25
+ if (value < 2 ** 42 - 1) {
26
+ return 6;
27
+ }
28
+ throw new Error('EBML VINT size not supported ' + value);
29
+ };
30
+ exports.measureEBMLVarInt = measureEBMLVarInt;
31
+ const getVariableInt = (value, minWidth) => {
32
+ const width = Math.max((0, exports.measureEBMLVarInt)(value), minWidth !== null && minWidth !== void 0 ? minWidth : 0);
33
+ switch (width) {
34
+ case 1:
35
+ return new Uint8Array([(1 << 7) | value]);
36
+ case 2:
37
+ return new Uint8Array([(1 << 6) | (value >> 8), value]);
38
+ case 3:
39
+ return new Uint8Array([(1 << 5) | (value >> 16), value >> 8, value]);
40
+ case 4:
41
+ return new Uint8Array([
42
+ (1 << 4) | (value >> 24),
43
+ value >> 16,
44
+ value >> 8,
45
+ value,
46
+ ]);
47
+ case 5:
48
+ /**
49
+ * JavaScript converts its doubles to 32-bit integers for bitwise
50
+ * operations, so we need to do a division by 2^32 instead of a
51
+ * right-shift of 32 to retain those top 3 bits
52
+ */
53
+ return new Uint8Array([
54
+ (1 << 3) | ((value / 2 ** 32) & 0x7),
55
+ value >> 24,
56
+ value >> 16,
57
+ value >> 8,
58
+ value,
59
+ ]);
60
+ case 6:
61
+ return new Uint8Array([
62
+ (1 << 2) | ((value / 2 ** 40) & 0x3),
63
+ (value / 2 ** 32) | 0,
64
+ value >> 24,
65
+ value >> 16,
66
+ value >> 8,
67
+ value,
68
+ ]);
69
+ case 7:
70
+ return new Uint8Array([
71
+ (1 << 1) | ((value / 2 ** 48) & 0x1),
72
+ (value / 2 ** 40) | 0,
73
+ (value / 2 ** 32) | 0,
74
+ value >> 24,
75
+ value >> 16,
76
+ value >> 8,
77
+ value,
78
+ ]);
79
+ case 8:
80
+ return new Uint8Array([
81
+ (1 << 0) | ((value / 2 ** 56) & 0x1),
82
+ (value / 2 ** 48) | 0,
83
+ (value / 2 ** 40) | 0,
84
+ (value / 2 ** 32) | 0,
85
+ value >> 24,
86
+ value >> 16,
87
+ value >> 8,
88
+ value,
89
+ ]);
90
+ default:
91
+ throw new Error('Bad EBML VINT size ' + width);
92
+ }
93
+ };
94
+ exports.getVariableInt = getVariableInt;
@@ -0,0 +1,3 @@
1
+ import type { Track } from '../../get-tracks';
2
+ import type { MainSegment } from './segments/all-segments';
3
+ export declare const getTracksFromMatroska: (segment: MainSegment, timescale: number) => Track[];
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTracksFromMatroska = void 0;
4
+ const make_track_1 = require("./make-track");
5
+ const traversal_1 = require("./traversal");
6
+ const getTracksFromMatroska = (segment, timescale) => {
7
+ const tracksSegment = (0, traversal_1.getTracksSegment)(segment);
8
+ if (!tracksSegment) {
9
+ throw new Error('No tracks segment');
10
+ }
11
+ const tracks = [];
12
+ for (const trackEntrySegment of tracksSegment.value) {
13
+ if (trackEntrySegment.type === 'Crc32') {
14
+ continue;
15
+ }
16
+ if (trackEntrySegment.type !== 'TrackEntry') {
17
+ throw new Error('Expected track entry segment');
18
+ }
19
+ const track = (0, make_track_1.getTrack)({
20
+ track: trackEntrySegment,
21
+ timescale,
22
+ });
23
+ if (track) {
24
+ tracks.push(track);
25
+ }
26
+ }
27
+ return tracks;
28
+ };
29
+ exports.getTracksFromMatroska = getTracksFromMatroska;
@@ -0,0 +1,17 @@
1
+ import type { ParserContext } from '../../parser-context';
2
+ import type { AudioOrVideoSample } from '../../webcodec-sample-types';
3
+ import type { BlockSegment, SimpleBlockSegment } from './segments/all-segments';
4
+ type SampleResult = {
5
+ type: 'video-sample';
6
+ videoSample: AudioOrVideoSample;
7
+ } | {
8
+ type: 'audio-sample';
9
+ audioSample: AudioOrVideoSample;
10
+ } | {
11
+ type: 'partial-video-sample';
12
+ partialVideoSample: Omit<AudioOrVideoSample, 'type'>;
13
+ } | {
14
+ type: 'no-sample';
15
+ };
16
+ export declare const getSampleFromBlock: (ebml: BlockSegment | SimpleBlockSegment, parserContext: ParserContext, offset: number) => SampleResult;
17
+ export {};
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSampleFromBlock = void 0;
4
+ const buffer_iterator_1 = require("../../buffer-iterator");
5
+ const all_segments_1 = require("./segments/all-segments");
6
+ const block_simple_block_flags_1 = require("./segments/block-simple-block-flags");
7
+ const getSampleFromBlock = (ebml, parserContext, offset) => {
8
+ const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(ebml.value, ebml.value.length);
9
+ const trackNumber = iterator.getVint();
10
+ if (trackNumber === null) {
11
+ throw new Error('Not enough data to get track number, should not happen');
12
+ }
13
+ const timecodeRelativeToCluster = iterator.getInt16();
14
+ const { keyframe } = (0, block_simple_block_flags_1.parseBlockFlags)(iterator, ebml.type === 'SimpleBlock'
15
+ ? all_segments_1.matroskaElements.SimpleBlock
16
+ : all_segments_1.matroskaElements.Block);
17
+ const { codec, trackTimescale } = parserContext.parserState.getTrackInfoByNumber(trackNumber);
18
+ const clusterOffset = parserContext.parserState.getTimestampOffsetForByteOffset(offset);
19
+ const timescale = parserContext.parserState.getTimescale();
20
+ if (clusterOffset === undefined) {
21
+ throw new Error('Could not find offset for byte offset ' + offset);
22
+ }
23
+ // https://github.com/hubblec4/Matroska-Chapters-Specs/blob/master/notes.md/#timestampscale
24
+ // The TimestampScale Element is used to calculate the Raw Timestamp of a Block. The timestamp is obtained by adding the Block's timestamp to the Cluster's Timestamp Element, and then multiplying that result by the TimestampScale. The result will be the Block's Raw Timestamp in nanoseconds.
25
+ const timecodeInNanoSeconds = (timecodeRelativeToCluster + clusterOffset) *
26
+ timescale *
27
+ (trackTimescale !== null && trackTimescale !== void 0 ? trackTimescale : 1);
28
+ // Timecode should be in microseconds
29
+ const timecodeInMicroseconds = timecodeInNanoSeconds / 1000;
30
+ if (!codec) {
31
+ throw new Error(`Could not find codec for track ${trackNumber}`);
32
+ }
33
+ const remainingNow = ebml.value.length - iterator.counter.getOffset();
34
+ if (codec.startsWith('V_')) {
35
+ const partialVideoSample = {
36
+ data: iterator.getSlice(remainingNow),
37
+ cts: timecodeInMicroseconds,
38
+ dts: timecodeInMicroseconds,
39
+ duration: undefined,
40
+ trackId: trackNumber,
41
+ timestamp: timecodeInMicroseconds,
42
+ };
43
+ if (keyframe === null) {
44
+ iterator.destroy();
45
+ return {
46
+ type: 'partial-video-sample',
47
+ partialVideoSample,
48
+ };
49
+ }
50
+ const sample = {
51
+ ...partialVideoSample,
52
+ type: keyframe ? 'key' : 'delta',
53
+ };
54
+ iterator.destroy();
55
+ return {
56
+ type: 'video-sample',
57
+ videoSample: sample,
58
+ };
59
+ }
60
+ if (codec.startsWith('A_')) {
61
+ const audioSample = {
62
+ data: iterator.getSlice(remainingNow),
63
+ trackId: trackNumber,
64
+ timestamp: timecodeInMicroseconds,
65
+ type: 'key',
66
+ duration: undefined,
67
+ cts: timecodeInMicroseconds,
68
+ dts: timecodeInMicroseconds,
69
+ };
70
+ iterator.destroy();
71
+ return {
72
+ type: 'audio-sample',
73
+ audioSample,
74
+ };
75
+ }
76
+ iterator.destroy();
77
+ return {
78
+ type: 'no-sample',
79
+ };
80
+ };
81
+ exports.getSampleFromBlock = getSampleFromBlock;
@@ -0,0 +1,8 @@
1
+ import type { BytesAndOffset, PossibleEbmlOrUint8Array } from './segments/all-segments';
2
+ import { matroskaElements } from './segments/all-segments';
3
+ export declare const webmPattern: Uint8Array;
4
+ export declare const matroskaToHex: (matrId: (typeof matroskaElements)[keyof typeof matroskaElements]) => Uint8Array;
5
+ export declare const makeMatroskaBytes: (fields: PossibleEbmlOrUint8Array) => BytesAndOffset;
6
+ export declare const padMatroskaBytes: (fields: PossibleEbmlOrUint8Array, totalLength: number) => BytesAndOffset[];
7
+ export declare const combineUint8Arrays: (arrays: Uint8Array[]) => Uint8Array;
8
+ export declare function serializeUint16(value: number): Uint8Array;
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.combineUint8Arrays = exports.padMatroskaBytes = exports.makeMatroskaBytes = exports.matroskaToHex = exports.webmPattern = void 0;
4
+ exports.serializeUint16 = serializeUint16;
5
+ /* eslint-disable @typescript-eslint/no-use-before-define */
6
+ const ebml_1 = require("./ebml");
7
+ const all_segments_1 = require("./segments/all-segments");
8
+ exports.webmPattern = new Uint8Array([0x1a, 0x45, 0xdf, 0xa3]);
9
+ const matroskaToHex = (matrId) => {
10
+ const numbers = new Uint8Array((matrId.length - 2) / 2);
11
+ for (let i = 2; i < matrId.length; i += 2) {
12
+ const hex = matrId.substring(i, i + 2);
13
+ numbers[(i - 2) / 2] = parseInt(hex, 16);
14
+ }
15
+ return numbers;
16
+ };
17
+ exports.matroskaToHex = matroskaToHex;
18
+ function putUintDynamic(number, minimumLength) {
19
+ if (number < 0) {
20
+ throw new Error('This function is designed for non-negative integers only.');
21
+ }
22
+ // Calculate the minimum number of bytes needed to store the integer
23
+ const length = Math.max(minimumLength !== null && minimumLength !== void 0 ? minimumLength : 0, Math.ceil(Math.log2(number + 1) / 8));
24
+ const bytes = new Uint8Array(length);
25
+ for (let i = 0; i < length; i++) {
26
+ // Extract each byte from the number
27
+ bytes[length - 1 - i] = (number >> (8 * i)) & 0xff;
28
+ }
29
+ return bytes;
30
+ }
31
+ const makeFromStructure = (fields) => {
32
+ if ('bytes' in fields) {
33
+ return fields;
34
+ }
35
+ const arrays = [];
36
+ const struct = all_segments_1.ebmlMap[(0, all_segments_1.getIdForName)(fields.type)];
37
+ if (struct.type === 'uint8array') {
38
+ return {
39
+ bytes: fields.value,
40
+ offsets: { offset: 0, children: [], field: fields.type },
41
+ };
42
+ }
43
+ if (struct.type === 'children') {
44
+ const children = [];
45
+ let bytesWritten = 0;
46
+ for (const item of fields.value) {
47
+ const { bytes, offsets } = (0, exports.makeMatroskaBytes)(item);
48
+ arrays.push(bytes);
49
+ children.push((0, all_segments_1.incrementOffsetAndChildren)(offsets, bytesWritten));
50
+ bytesWritten += bytes.byteLength;
51
+ }
52
+ return {
53
+ bytes: (0, exports.combineUint8Arrays)(arrays),
54
+ offsets: { offset: 0, children, field: fields.type },
55
+ };
56
+ }
57
+ if (struct.type === 'string') {
58
+ return {
59
+ bytes: new TextEncoder().encode(fields.value),
60
+ offsets: {
61
+ children: [],
62
+ offset: 0,
63
+ field: fields.type,
64
+ },
65
+ };
66
+ }
67
+ if (struct.type === 'uint') {
68
+ return {
69
+ bytes: putUintDynamic(fields.value.value, fields.value.byteLength),
70
+ offsets: {
71
+ children: [],
72
+ offset: 0,
73
+ field: fields.type,
74
+ },
75
+ };
76
+ }
77
+ if (struct.type === 'hex-string') {
78
+ const hex = fields.value.substring(2);
79
+ const arr = new Uint8Array(hex.length / 2);
80
+ for (let i = 0; i < hex.length; i += 2) {
81
+ const byte = parseInt(hex.substring(i, i + 2), 16);
82
+ arr[i / 2] = byte;
83
+ }
84
+ return {
85
+ bytes: arr,
86
+ offsets: {
87
+ children: [],
88
+ offset: 0,
89
+ field: fields.type,
90
+ },
91
+ };
92
+ }
93
+ if (struct.type === 'float') {
94
+ const value = fields.value;
95
+ if (value.size === '32') {
96
+ const dataView = new DataView(new ArrayBuffer(4));
97
+ dataView.setFloat32(0, value.value);
98
+ return {
99
+ bytes: new Uint8Array(dataView.buffer),
100
+ offsets: {
101
+ children: [],
102
+ offset: 0,
103
+ field: fields.type,
104
+ },
105
+ };
106
+ }
107
+ const dataView2 = new DataView(new ArrayBuffer(8));
108
+ dataView2.setFloat64(0, value.value);
109
+ return {
110
+ bytes: new Uint8Array(dataView2.buffer),
111
+ offsets: {
112
+ children: [],
113
+ offset: 0,
114
+ field: fields.type,
115
+ },
116
+ };
117
+ }
118
+ throw new Error('Unexpected type');
119
+ };
120
+ const makeMatroskaBytes = (fields) => {
121
+ if ('bytes' in fields) {
122
+ return fields;
123
+ }
124
+ const value = makeFromStructure(fields);
125
+ const header = (0, exports.matroskaToHex)((0, all_segments_1.getIdForName)(fields.type));
126
+ const size = (0, ebml_1.getVariableInt)(value.bytes.length, fields.minVintWidth);
127
+ const bytes = (0, exports.combineUint8Arrays)([header, size, value.bytes]);
128
+ return {
129
+ bytes,
130
+ offsets: {
131
+ offset: value.offsets.offset,
132
+ field: value.offsets.field,
133
+ children: value.offsets.children.map((c) => {
134
+ return (0, all_segments_1.incrementOffsetAndChildren)(c, header.byteLength + size.byteLength);
135
+ }),
136
+ },
137
+ };
138
+ };
139
+ exports.makeMatroskaBytes = makeMatroskaBytes;
140
+ const padMatroskaBytes = (fields, totalLength) => {
141
+ const regular = (0, exports.makeMatroskaBytes)(fields);
142
+ const paddingLength = totalLength -
143
+ regular.bytes.byteLength -
144
+ (0, exports.matroskaToHex)(all_segments_1.matroskaElements.Void).byteLength;
145
+ if (paddingLength < 0) {
146
+ throw new Error('ooops');
147
+ }
148
+ const padding = (0, exports.makeMatroskaBytes)({
149
+ type: 'Void',
150
+ value: new Uint8Array(paddingLength).fill(0),
151
+ minVintWidth: null,
152
+ });
153
+ return [
154
+ regular,
155
+ {
156
+ bytes: padding.bytes,
157
+ offsets: (0, all_segments_1.incrementOffsetAndChildren)(padding.offsets, regular.bytes.length),
158
+ },
159
+ ];
160
+ };
161
+ exports.padMatroskaBytes = padMatroskaBytes;
162
+ const combineUint8Arrays = (arrays) => {
163
+ if (arrays.length === 0) {
164
+ return new Uint8Array([]);
165
+ }
166
+ if (arrays.length === 1) {
167
+ return arrays[0];
168
+ }
169
+ let totalLength = 0;
170
+ for (const array of arrays) {
171
+ totalLength += array.length;
172
+ }
173
+ const result = new Uint8Array(totalLength);
174
+ let offset = 0;
175
+ for (const array of arrays) {
176
+ result.set(array, offset);
177
+ offset += array.length;
178
+ }
179
+ return result;
180
+ };
181
+ exports.combineUint8Arrays = combineUint8Arrays;
182
+ function serializeUint16(value) {
183
+ const buffer = new ArrayBuffer(2);
184
+ const view = new DataView(buffer);
185
+ view.setUint16(0, value);
186
+ return new Uint8Array(buffer);
187
+ }
@@ -0,0 +1,9 @@
1
+ import type { AudioTrack, MediaParserAudioCodec, VideoTrack } from '../../get-tracks';
2
+ import type { TrackEntry } from './segments/all-segments';
3
+ export declare const getMatroskaAudioCodecWithoutConfigString: ({ track, }: {
4
+ track: TrackEntry;
5
+ }) => MediaParserAudioCodec;
6
+ export declare const getTrack: ({ timescale, track, }: {
7
+ timescale: number;
8
+ track: TrackEntry;
9
+ }) => VideoTrack | AudioTrack | null;