@remotion/media-parser 4.0.256 → 4.0.257

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/abort.d.ts +1 -0
  2. package/dist/abort.js +7 -0
  3. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  4. package/dist/controller.d.ts +17 -0
  5. package/dist/controller.js +31 -0
  6. package/dist/esm/index.mjs +1 -1
  7. package/dist/parse-and-download-media.d.ts +2 -0
  8. package/dist/parse-and-download-media.js +57 -0
  9. package/dist/version.d.ts +1 -1
  10. package/dist/version.js +1 -1
  11. package/package.json +3 -3
  12. package/dist/add-new-matroska-tracks.d.ts +0 -8
  13. package/dist/add-new-matroska-tracks.js +0 -14
  14. package/dist/boxes/avc/parse-avc.d.ts +0 -18
  15. package/dist/boxes/avc/parse-avc.js +0 -96
  16. package/dist/boxes/iso-base-media/base-type.d.ts +0 -4
  17. package/dist/boxes/iso-base-media/base-type.js +0 -2
  18. package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +0 -14
  19. package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +0 -38
  20. package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +0 -29
  21. package/dist/boxes/iso-base-media/esds/esds-descriptors.js +0 -82
  22. package/dist/boxes/iso-base-media/esds/esds.d.ts +0 -15
  23. package/dist/boxes/iso-base-media/esds/esds.js +0 -27
  24. package/dist/boxes/iso-base-media/ftyp.d.ts +0 -13
  25. package/dist/boxes/iso-base-media/ftyp.js +0 -22
  26. package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +0 -13
  27. package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +0 -22
  28. package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +0 -4
  29. package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +0 -54
  30. package/dist/boxes/iso-base-media/make-track.d.ts +0 -3
  31. package/dist/boxes/iso-base-media/make-track.js +0 -107
  32. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -25
  33. package/dist/boxes/iso-base-media/mdat/mdat.js +0 -122
  34. package/dist/boxes/iso-base-media/mdhd.d.ts +0 -16
  35. package/dist/boxes/iso-base-media/mdhd.js +0 -32
  36. package/dist/boxes/iso-base-media/meta/hdlr.d.ts +0 -12
  37. package/dist/boxes/iso-base-media/meta/hdlr.js +0 -33
  38. package/dist/boxes/iso-base-media/meta/ilst.d.ts +0 -28
  39. package/dist/boxes/iso-base-media/meta/ilst.js +0 -86
  40. package/dist/boxes/iso-base-media/moov/moov.d.ts +0 -19
  41. package/dist/boxes/iso-base-media/moov/moov.js +0 -27
  42. package/dist/boxes/iso-base-media/mvhd.d.ts +0 -30
  43. package/dist/boxes/iso-base-media/mvhd.js +0 -65
  44. package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +0 -36
  45. package/dist/boxes/iso-base-media/parse-icc-profile.js +0 -115
  46. package/dist/boxes/iso-base-media/process-box.d.ts +0 -34
  47. package/dist/boxes/iso-base-media/process-box.js +0 -710
  48. package/dist/boxes/iso-base-media/stsd/av1c.d.ts +0 -9
  49. package/dist/boxes/iso-base-media/stsd/av1c.js +0 -10
  50. package/dist/boxes/iso-base-media/stsd/avcc.d.ts +0 -10
  51. package/dist/boxes/iso-base-media/stsd/avcc.js +0 -21
  52. package/dist/boxes/iso-base-media/stsd/colr.d.ts +0 -21
  53. package/dist/boxes/iso-base-media/stsd/colr.js +0 -47
  54. package/dist/boxes/iso-base-media/stsd/ctts.d.ts +0 -19
  55. package/dist/boxes/iso-base-media/stsd/ctts.js +0 -34
  56. package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +0 -11
  57. package/dist/boxes/iso-base-media/stsd/hvcc.js +0 -17
  58. package/dist/boxes/iso-base-media/stsd/keys.d.ts +0 -19
  59. package/dist/boxes/iso-base-media/stsd/keys.js +0 -35
  60. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +0 -19
  61. package/dist/boxes/iso-base-media/stsd/mebx.js +0 -32
  62. package/dist/boxes/iso-base-media/stsd/pasp.d.ts +0 -12
  63. package/dist/boxes/iso-base-media/stsd/pasp.js +0 -17
  64. package/dist/boxes/iso-base-media/stsd/samples.d.ts +0 -68
  65. package/dist/boxes/iso-base-media/stsd/samples.js +0 -320
  66. package/dist/boxes/iso-base-media/stsd/stco.d.ts +0 -15
  67. package/dist/boxes/iso-base-media/stsd/stco.js +0 -30
  68. package/dist/boxes/iso-base-media/stsd/stsc.d.ts +0 -19
  69. package/dist/boxes/iso-base-media/stsd/stsc.js +0 -34
  70. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +0 -18
  71. package/dist/boxes/iso-base-media/stsd/stsd.js +0 -33
  72. package/dist/boxes/iso-base-media/stsd/stss.d.ts +0 -13
  73. package/dist/boxes/iso-base-media/stsd/stss.js +0 -28
  74. package/dist/boxes/iso-base-media/stsd/stsz.d.ts +0 -21
  75. package/dist/boxes/iso-base-media/stsd/stsz.js +0 -44
  76. package/dist/boxes/iso-base-media/stsd/stts.d.ts +0 -15
  77. package/dist/boxes/iso-base-media/stsd/stts.js +0 -35
  78. package/dist/boxes/iso-base-media/tfdt.d.ts +0 -12
  79. package/dist/boxes/iso-base-media/tfdt.js +0 -20
  80. package/dist/boxes/iso-base-media/tfhd.d.ts +0 -16
  81. package/dist/boxes/iso-base-media/tfhd.js +0 -41
  82. package/dist/boxes/iso-base-media/tkhd.d.ts +0 -25
  83. package/dist/boxes/iso-base-media/tkhd.js +0 -87
  84. package/dist/boxes/iso-base-media/to-date.d.ts +0 -2
  85. package/dist/boxes/iso-base-media/to-date.js +0 -19
  86. package/dist/boxes/iso-base-media/trak/trak.d.ts +0 -19
  87. package/dist/boxes/iso-base-media/trak/trak.js +0 -27
  88. package/dist/boxes/iso-base-media/traversal.d.ts +0 -39
  89. package/dist/boxes/iso-base-media/traversal.js +0 -201
  90. package/dist/boxes/iso-base-media/trun.d.ts +0 -21
  91. package/dist/boxes/iso-base-media/trun.js +0 -44
  92. package/dist/boxes/iso-base-media/void-box.d.ts +0 -4
  93. package/dist/boxes/iso-base-media/void-box.js +0 -2
  94. package/dist/boxes/riff/expect-riff-box.d.ts +0 -17
  95. package/dist/boxes/riff/expect-riff-box.js +0 -49
  96. package/dist/boxes/riff/get-tracks-from-avi.d.ts +0 -22
  97. package/dist/boxes/riff/get-tracks-from-avi.js +0 -114
  98. package/dist/boxes/riff/is-movi.d.ts +0 -2
  99. package/dist/boxes/riff/is-movi.js +0 -12
  100. package/dist/boxes/riff/parse-avih.d.ts +0 -6
  101. package/dist/boxes/riff/parse-avih.js +0 -32
  102. package/dist/boxes/riff/parse-box.d.ts +0 -15
  103. package/dist/boxes/riff/parse-box.js +0 -146
  104. package/dist/boxes/riff/parse-fmt-box.d.ts +0 -7
  105. package/dist/boxes/riff/parse-fmt-box.js +0 -33
  106. package/dist/boxes/riff/parse-isft.d.ts +0 -6
  107. package/dist/boxes/riff/parse-isft.js +0 -17
  108. package/dist/boxes/riff/parse-list-box.d.ts +0 -8
  109. package/dist/boxes/riff/parse-list-box.js +0 -30
  110. package/dist/boxes/riff/parse-movi.d.ts +0 -17
  111. package/dist/boxes/riff/parse-movi.js +0 -133
  112. package/dist/boxes/riff/parse-riff-box.d.ts +0 -10
  113. package/dist/boxes/riff/parse-riff-box.js +0 -37
  114. package/dist/boxes/riff/parse-strf.d.ts +0 -7
  115. package/dist/boxes/riff/parse-strf.js +0 -67
  116. package/dist/boxes/riff/parse-strh.d.ts +0 -6
  117. package/dist/boxes/riff/parse-strh.js +0 -46
  118. package/dist/boxes/riff/riff-box.d.ts +0 -85
  119. package/dist/boxes/riff/riff-box.js +0 -2
  120. package/dist/boxes/riff/timescale.d.ts +0 -1
  121. package/dist/boxes/riff/timescale.js +0 -4
  122. package/dist/boxes/riff/traversal.d.ts +0 -8
  123. package/dist/boxes/riff/traversal.js +0 -36
  124. package/dist/boxes/webm/allowed-partial-segments.d.ts +0 -1
  125. package/dist/boxes/webm/allowed-partial-segments.js +0 -4
  126. package/dist/boxes/webm/av1-codec-private.d.ts +0 -2
  127. package/dist/boxes/webm/av1-codec-private.js +0 -95
  128. package/dist/boxes/webm/color.d.ts +0 -4
  129. package/dist/boxes/webm/color.js +0 -127
  130. package/dist/boxes/webm/description.d.ts +0 -2
  131. package/dist/boxes/webm/description.js +0 -83
  132. package/dist/boxes/webm/ebml.d.ts +0 -2
  133. package/dist/boxes/webm/ebml.js +0 -94
  134. package/dist/boxes/webm/get-ready-tracks.d.ts +0 -3
  135. package/dist/boxes/webm/get-ready-tracks.js +0 -29
  136. package/dist/boxes/webm/get-sample-from-block.d.ts +0 -17
  137. package/dist/boxes/webm/get-sample-from-block.js +0 -81
  138. package/dist/boxes/webm/make-header.d.ts +0 -8
  139. package/dist/boxes/webm/make-header.js +0 -187
  140. package/dist/boxes/webm/make-track.d.ts +0 -9
  141. package/dist/boxes/webm/make-track.js +0 -261
  142. package/dist/boxes/webm/parse-ebml.d.ts +0 -12
  143. package/dist/boxes/webm/parse-ebml.js +0 -185
  144. package/dist/boxes/webm/parse-webm-header.d.ts +0 -9
  145. package/dist/boxes/webm/parse-webm-header.js +0 -36
  146. package/dist/boxes/webm/segments/all-segments.d.ts +0 -976
  147. package/dist/boxes/webm/segments/all-segments.js +0 -724
  148. package/dist/boxes/webm/segments/block-simple-block-flags.d.ts +0 -9
  149. package/dist/boxes/webm/segments/block-simple-block-flags.js +0 -38
  150. package/dist/boxes/webm/segments/parse-children.d.ts +0 -23
  151. package/dist/boxes/webm/segments/parse-children.js +0 -145
  152. package/dist/boxes/webm/segments/track-entry.d.ts +0 -9
  153. package/dist/boxes/webm/segments/track-entry.js +0 -24
  154. package/dist/boxes/webm/segments.d.ts +0 -15
  155. package/dist/boxes/webm/segments.js +0 -161
  156. package/dist/boxes/webm/traversal.d.ts +0 -33
  157. package/dist/boxes/webm/traversal.js +0 -265
  158. package/dist/create/cluster-segment.d.ts +0 -10
  159. package/dist/create/cluster-segment.js +0 -39
  160. package/dist/create/cluster.d.ts +0 -19
  161. package/dist/create/cluster.js +0 -55
  162. package/dist/create/create-media.d.ts +0 -15
  163. package/dist/create/create-media.js +0 -165
  164. package/dist/create/event-emitter.d.ts +0 -31
  165. package/dist/create/event-emitter.js +0 -25
  166. package/dist/create/iso-base-media/codec-specific/avc1.d.ts +0 -2
  167. package/dist/create/iso-base-media/codec-specific/avc1.js +0 -48
  168. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +0 -22
  169. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +0 -36
  170. package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +0 -2
  171. package/dist/create/iso-base-media/codec-specific/mp4a.js +0 -74
  172. package/dist/create/iso-base-media/create-colr.d.ts +0 -6
  173. package/dist/create/iso-base-media/create-colr.js +0 -26
  174. package/dist/create/iso-base-media/create-ftyp.d.ts +0 -10
  175. package/dist/create/iso-base-media/create-ftyp.js +0 -22
  176. package/dist/create/iso-base-media/create-ilst.d.ts +0 -1
  177. package/dist/create/iso-base-media/create-ilst.js +0 -14
  178. package/dist/create/iso-base-media/create-iso-base-media.d.ts +0 -2
  179. package/dist/create/iso-base-media/create-iso-base-media.js +0 -165
  180. package/dist/create/iso-base-media/create-mdia.d.ts +0 -5
  181. package/dist/create/iso-base-media/create-mdia.js +0 -18
  182. package/dist/create/iso-base-media/create-moov.d.ts +0 -5
  183. package/dist/create/iso-base-media/create-moov.js +0 -18
  184. package/dist/create/iso-base-media/create-mvhd.d.ts +0 -10
  185. package/dist/create/iso-base-media/create-mvhd.js +0 -48
  186. package/dist/create/iso-base-media/create-trak.d.ts +0 -4
  187. package/dist/create/iso-base-media/create-trak.js +0 -17
  188. package/dist/create/iso-base-media/create-udta.d.ts +0 -1
  189. package/dist/create/iso-base-media/create-udta.js +0 -14
  190. package/dist/create/iso-base-media/create-url.d.ts +0 -1
  191. package/dist/create/iso-base-media/create-url.js +0 -16
  192. package/dist/create/iso-base-media/example-stts.d.ts +0 -3
  193. package/dist/create/iso-base-media/example-stts.js +0 -2797
  194. package/dist/create/iso-base-media/ilst/create-cmt.d.ts +0 -1
  195. package/dist/create/iso-base-media/ilst/create-cmt.js +0 -26
  196. package/dist/create/iso-base-media/ilst/create-too.d.ts +0 -1
  197. package/dist/create/iso-base-media/ilst/create-too.js +0 -27
  198. package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +0 -6
  199. package/dist/create/iso-base-media/mdia/create-mdhd.js +0 -33
  200. package/dist/create/iso-base-media/mp4-header.d.ts +0 -6
  201. package/dist/create/iso-base-media/mp4-header.js +0 -48
  202. package/dist/create/iso-base-media/primitives.d.ts +0 -15
  203. package/dist/create/iso-base-media/primitives.js +0 -133
  204. package/dist/create/iso-base-media/serialize-track.d.ts +0 -9
  205. package/dist/create/iso-base-media/serialize-track.js +0 -63
  206. package/dist/create/iso-base-media/trak/create-tkhd.d.ts +0 -27
  207. package/dist/create/iso-base-media/trak/create-tkhd.js +0 -97
  208. package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +0 -4
  209. package/dist/create/iso-base-media/trak/mdia/create-minf.js +0 -19
  210. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +0 -1
  211. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +0 -22
  212. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +0 -1
  213. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +0 -20
  214. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +0 -6
  215. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +0 -35
  216. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +0 -1
  217. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +0 -20
  218. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +0 -2
  219. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +0 -45
  220. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +0 -2
  221. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +0 -28
  222. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +0 -2
  223. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +0 -56
  224. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +0 -2
  225. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +0 -23
  226. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +0 -2
  227. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +0 -25
  228. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +0 -2
  229. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +0 -48
  230. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +0 -1
  231. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +0 -20
  232. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +0 -1
  233. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +0 -16
  234. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +0 -1
  235. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +0 -13
  236. package/dist/create/iso-base-media/udta/create-meta.d.ts +0 -4
  237. package/dist/create/iso-base-media/udta/create-meta.js +0 -20
  238. package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +0 -1
  239. package/dist/create/iso-base-media/udta/meta/create-hdlr.js +0 -32
  240. package/dist/create/make-duration-with-padding.d.ts +0 -1
  241. package/dist/create/make-duration-with-padding.js +0 -15
  242. package/dist/create/make-track-info.d.ts +0 -20
  243. package/dist/create/make-track-info.js +0 -2
  244. package/dist/create/matroska/cluster-segment.d.ts +0 -10
  245. package/dist/create/matroska/cluster-segment.js +0 -39
  246. package/dist/create/matroska/cluster.d.ts +0 -25
  247. package/dist/create/matroska/cluster.js +0 -77
  248. package/dist/create/matroska/create-matroska-media.d.ts +0 -2
  249. package/dist/create/matroska/create-matroska-media.js +0 -187
  250. package/dist/create/matroska/make-duration-with-padding.d.ts +0 -1
  251. package/dist/create/matroska/make-duration-with-padding.js +0 -15
  252. package/dist/create/matroska/matroska-cues.d.ts +0 -6
  253. package/dist/create/matroska/matroska-cues.js +0 -49
  254. package/dist/create/matroska/matroska-header.d.ts +0 -1
  255. package/dist/create/matroska/matroska-header.js +0 -66
  256. package/dist/create/matroska/matroska-info.d.ts +0 -3
  257. package/dist/create/matroska/matroska-info.js +0 -33
  258. package/dist/create/matroska/matroska-seek.d.ts +0 -6
  259. package/dist/create/matroska/matroska-seek.js +0 -32
  260. package/dist/create/matroska/matroska-segment.d.ts +0 -3
  261. package/dist/create/matroska/matroska-segment.js +0 -13
  262. package/dist/create/matroska/matroska-trackentry.d.ts +0 -10
  263. package/dist/create/matroska/matroska-trackentry.js +0 -249
  264. package/dist/create/matroska-cues.d.ts +0 -6
  265. package/dist/create/matroska-cues.js +0 -49
  266. package/dist/create/matroska-header.d.ts +0 -1
  267. package/dist/create/matroska-header.js +0 -66
  268. package/dist/create/matroska-info.d.ts +0 -3
  269. package/dist/create/matroska-info.js +0 -33
  270. package/dist/create/matroska-seek.d.ts +0 -6
  271. package/dist/create/matroska-seek.js +0 -32
  272. package/dist/create/matroska-segment.d.ts +0 -3
  273. package/dist/create/matroska-segment.js +0 -13
  274. package/dist/create/matroska-trackentry.d.ts +0 -27
  275. package/dist/create/matroska-trackentry.js +0 -243
  276. package/dist/create/media-fn.d.ts +0 -33
  277. package/dist/create/media-fn.js +0 -2
  278. package/dist/create/progress-tracker.d.ts +0 -7
  279. package/dist/create/progress-tracker.js +0 -43
  280. package/dist/create/timescale.d.ts +0 -1
  281. package/dist/create/timescale.js +0 -4
  282. package/dist/create/wav/create-wav.d.ts +0 -2
  283. package/dist/create/wav/create-wav.js +0 -110
  284. package/dist/create/with-resolvers.d.ts +0 -10
  285. package/dist/create/with-resolvers.js +0 -28
  286. package/dist/esm/buffer.mjs +0 -56
  287. package/dist/esm/web-fs.mjs +0 -73
  288. package/dist/parse-video.d.ts +0 -25
  289. package/dist/parse-video.js +0 -39
  290. package/dist/parser-context.d.ts +0 -10
  291. package/dist/parser-context.js +0 -2
  292. package/dist/parser-state.d.ts +0 -22
  293. package/dist/parser-state.js +0 -132
  294. package/dist/writers/buffer-implementation/writer.d.ts +0 -2
  295. package/dist/writers/buffer-implementation/writer.js +0 -54
  296. package/dist/writers/buffer.d.ts +0 -2
  297. package/dist/writers/buffer.js +0 -7
  298. package/dist/writers/web-fs.d.ts +0 -3
  299. package/dist/writers/web-fs.js +0 -74
@@ -1,261 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTrack = exports.getMatroskaAudioCodecWithoutConfigString = void 0;
4
- const buffer_iterator_1 = require("../../buffer-iterator");
5
- const make_hvc1_codec_strings_1 = require("../../make-hvc1-codec-strings");
6
- const av1_codec_private_1 = require("./av1-codec-private");
7
- const color_1 = require("./color");
8
- const description_1 = require("./description");
9
- const track_entry_1 = require("./segments/track-entry");
10
- const traversal_1 = require("./traversal");
11
- const getDescription = (track) => {
12
- const codec = (0, traversal_1.getCodecSegment)(track);
13
- if (!codec) {
14
- return undefined;
15
- }
16
- if (codec.value === 'V_MPEG4/ISO/AVC' || codec.value === 'V_MPEGH/ISO/HEVC') {
17
- const priv = (0, traversal_1.getPrivateData)(track);
18
- if (priv) {
19
- return priv;
20
- }
21
- }
22
- return undefined;
23
- };
24
- const getMatroskaVideoCodecWithoutConfigString = ({ codecSegment: codec, }) => {
25
- if (codec.value === 'V_VP8') {
26
- return 'vp8';
27
- }
28
- if (codec.value === 'V_VP9') {
29
- return 'vp9';
30
- }
31
- if (codec.value === 'V_MPEG4/ISO/AVC') {
32
- return 'h264';
33
- }
34
- if (codec.value === 'V_AV1') {
35
- return 'av1';
36
- }
37
- if (codec.value === 'V_MPEGH/ISO/HEVC') {
38
- return 'h265';
39
- }
40
- throw new Error(`Unknown codec: ${codec.value}`);
41
- };
42
- const getMatroskaVideoCodecString = ({ track, codecSegment: codec, }) => {
43
- if (codec.value === 'V_VP8') {
44
- return 'vp8';
45
- }
46
- if (codec.value === 'V_VP9') {
47
- const priv = (0, traversal_1.getPrivateData)(track);
48
- if (priv) {
49
- throw new Error('@remotion/media-parser cannot handle the private data for VP9. Do you have an example file you could send so we can implement it?');
50
- }
51
- return 'vp09.00.10.08';
52
- }
53
- if (codec.value === 'V_MPEG4/ISO/AVC') {
54
- const priv = (0, traversal_1.getPrivateData)(track);
55
- if (priv) {
56
- return `avc1.${priv[1].toString(16).padStart(2, '0')}${priv[2].toString(16).padStart(2, '0')}${priv[3].toString(16).padStart(2, '0')}`;
57
- }
58
- throw new Error('Could not find a CodecPrivate field in TrackEntry');
59
- }
60
- if (codec.value === 'V_AV1') {
61
- const priv = (0, traversal_1.getPrivateData)(track);
62
- if (!priv) {
63
- throw new Error('Expected private data in AV1 track');
64
- }
65
- return (0, av1_codec_private_1.parseAv1PrivateData)(priv, null);
66
- }
67
- if (codec.value === 'V_MPEGH/ISO/HEVC') {
68
- const priv = (0, traversal_1.getPrivateData)(track);
69
- const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(priv, priv.length);
70
- return 'hvc1.' + (0, make_hvc1_codec_strings_1.getHvc1CodecString)(iterator);
71
- }
72
- throw new Error(`Unknown codec: ${codec.value}`);
73
- };
74
- const getMatroskaAudioCodecWithoutConfigString = ({ track, }) => {
75
- const codec = (0, traversal_1.getCodecSegment)(track);
76
- if (!codec) {
77
- throw new Error('Expected codec segment');
78
- }
79
- if (codec.value === 'A_OPUS') {
80
- return 'opus';
81
- }
82
- if (codec.value === 'A_VORBIS') {
83
- return 'vorbis';
84
- }
85
- if (codec.value === 'A_PCM/INT/LIT') {
86
- // https://github.com/ietf-wg-cellar/matroska-specification/issues/142#issuecomment-330004950
87
- // Audio samples MUST be considered as signed values, except if the audio bit depth is 8 which MUST be interpreted as unsigned values.
88
- const bitDepth = (0, traversal_1.getBitDepth)(track);
89
- if (bitDepth === null) {
90
- throw new Error('Expected bit depth');
91
- }
92
- if (bitDepth === 8) {
93
- return 'pcm-u8';
94
- }
95
- if (bitDepth === 16) {
96
- return 'pcm-s16';
97
- }
98
- if (bitDepth === 24) {
99
- return 'pcm-s24';
100
- }
101
- throw new Error('Unknown audio format');
102
- }
103
- if (codec.value === 'A_AAC') {
104
- return `aac`;
105
- }
106
- if (codec.value === 'A_MPEG/L3') {
107
- return 'mp3';
108
- }
109
- throw new Error(`Unknown codec: ${codec.value}`);
110
- };
111
- exports.getMatroskaAudioCodecWithoutConfigString = getMatroskaAudioCodecWithoutConfigString;
112
- const getMatroskaAudioCodecString = (track) => {
113
- const codec = (0, traversal_1.getCodecSegment)(track);
114
- if (!codec) {
115
- throw new Error('Expected codec segment');
116
- }
117
- if (codec.value === 'A_OPUS') {
118
- return 'opus';
119
- }
120
- if (codec.value === 'A_VORBIS') {
121
- return 'vorbis';
122
- }
123
- if (codec.value === 'A_PCM/INT/LIT') {
124
- // https://github.com/ietf-wg-cellar/matroska-specification/issues/142#issuecomment-330004950
125
- // Audio samples MUST be considered as signed values, except if the audio bit depth is 8 which MUST be interpreted as unsigned values.
126
- const bitDepth = (0, traversal_1.getBitDepth)(track);
127
- if (bitDepth === null) {
128
- throw new Error('Expected bit depth');
129
- }
130
- if (bitDepth === 8) {
131
- return 'pcm-u8';
132
- }
133
- return 'pcm-s' + bitDepth;
134
- }
135
- if (codec.value === 'A_AAC') {
136
- const priv = (0, traversal_1.getPrivateData)(track);
137
- const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(priv, priv.length);
138
- iterator.startReadingBits();
139
- /**
140
- * ChatGPT
141
- * ▪ The first 5 bits represent the AOT.
142
- ▪ Common values:
143
- ◦ 1 for AAC Main
144
- ◦ 2 for AAC LC (Low Complexity)
145
- ◦ 3 for AAC SSR (Scalable Sample Rate)
146
- ◦ 4 for AAC LTP (Long Term Prediction)
147
- ◦ 5 for SBR (Spectral Band Replication)
148
- ◦ 29 for HE-AAC (which uses SBR with AAC LC)
149
- */
150
- /**
151
- * Fully qualified codec:
152
- * This codec has multiple possible codec strings:
153
- "mp4a.40.2" — MPEG-4 AAC LC
154
- "mp4a.40.02" — MPEG-4 AAC LC, leading 0 for Aud-OTI compatibility
155
- "mp4a.40.5" — MPEG-4 HE-AAC v1 (AAC LC + SBR)
156
- "mp4a.40.05" — MPEG-4 HE-AAC v1 (AAC LC + SBR), leading 0 for Aud-OTI compatibility
157
- "mp4a.40.29" — MPEG-4 HE-AAC v2 (AAC LC + SBR + PS)
158
- "mp4a.67" — MPEG-2 AAC LC
159
- */
160
- const profile = iterator.getBits(5);
161
- iterator.stopReadingBits();
162
- iterator.destroy();
163
- return `mp4a.40.${profile.toString().padStart(2, '0')}`;
164
- }
165
- if (codec.value === 'A_MPEG/L3') {
166
- return 'mp3';
167
- }
168
- throw new Error(`Unknown codec: ${codec.value}`);
169
- };
170
- const getTrack = ({ timescale, track, }) => {
171
- const trackType = (0, traversal_1.getTrackTypeSegment)(track);
172
- if (!trackType) {
173
- throw new Error('Expected track type segment');
174
- }
175
- const trackId = (0, traversal_1.getTrackId)(track);
176
- if ((0, track_entry_1.trackTypeToString)(trackType.value.value) === 'video') {
177
- const width = (0, traversal_1.getWidthSegment)(track);
178
- if (width === null) {
179
- throw new Error('Expected width segment');
180
- }
181
- const height = (0, traversal_1.getHeightSegment)(track);
182
- if (height === null) {
183
- throw new Error('Expected height segment');
184
- }
185
- const displayHeight = (0, traversal_1.getDisplayHeightSegment)(track);
186
- const displayWidth = (0, traversal_1.getDisplayWidthSegment)(track);
187
- const codec = (0, traversal_1.getCodecSegment)(track);
188
- if (!codec) {
189
- return null;
190
- }
191
- const codecPrivate = (0, traversal_1.getPrivateData)(track);
192
- const codecString = getMatroskaVideoCodecString({
193
- track,
194
- codecSegment: codec,
195
- });
196
- const colour = (0, traversal_1.getColourSegment)(track);
197
- if (!codecString) {
198
- return null;
199
- }
200
- return {
201
- type: 'video',
202
- trackId,
203
- codec: codecString,
204
- description: getDescription(track),
205
- height: displayHeight ? displayHeight.value.value : height.value.value,
206
- width: displayWidth ? displayWidth.value.value : width.value.value,
207
- sampleAspectRatio: {
208
- numerator: 1,
209
- denominator: 1,
210
- },
211
- timescale,
212
- codedHeight: height.value.value,
213
- codedWidth: width.value.value,
214
- displayAspectHeight: displayHeight
215
- ? displayHeight.value.value
216
- : height.value.value,
217
- displayAspectWidth: displayWidth
218
- ? displayWidth.value.value
219
- : width.value.value,
220
- rotation: 0,
221
- trakBox: null,
222
- codecPrivate,
223
- color: colour
224
- ? (0, color_1.parseColorSegment)(colour)
225
- : {
226
- fullRange: null,
227
- matrixCoefficients: null,
228
- primaries: null,
229
- transferCharacteristics: null,
230
- },
231
- codecWithoutConfig: getMatroskaVideoCodecWithoutConfigString({
232
- codecSegment: codec,
233
- }),
234
- fps: null,
235
- };
236
- }
237
- if ((0, track_entry_1.trackTypeToString)(trackType.value.value) === 'audio') {
238
- const sampleRate = (0, traversal_1.getSampleRate)(track);
239
- const numberOfChannels = (0, traversal_1.getNumberOfChannels)(track);
240
- const codecPrivate = (0, traversal_1.getPrivateData)(track);
241
- if (sampleRate === null) {
242
- throw new Error('Could not find sample rate or number of channels');
243
- }
244
- return {
245
- type: 'audio',
246
- trackId,
247
- codec: getMatroskaAudioCodecString(track),
248
- timescale,
249
- numberOfChannels,
250
- sampleRate,
251
- description: (0, description_1.getAudioDescription)(track),
252
- trakBox: null,
253
- codecPrivate,
254
- codecWithoutConfig: (0, exports.getMatroskaAudioCodecWithoutConfigString)({
255
- track,
256
- }),
257
- };
258
- }
259
- return null;
260
- };
261
- exports.getTrack = getTrack;
@@ -1,12 +0,0 @@
1
- import { type BufferIterator } from '../../buffer-iterator';
2
- import type { ParserContext } from '../../parser-context';
3
- import type { PossibleEbml } from './segments/all-segments';
4
- export type Prettify<T> = {
5
- [K in keyof T]: T[K];
6
- } & {};
7
- export declare const parseEbml: (iterator: BufferIterator, parserContext: ParserContext) => Promise<Prettify<PossibleEbml>>;
8
- export declare const postprocessEbml: ({ offset, ebml, parserContext, }: {
9
- offset: number;
10
- ebml: Prettify<PossibleEbml>;
11
- parserContext: ParserContext;
12
- }) => Promise<Prettify<PossibleEbml>>;
@@ -1,185 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.postprocessEbml = exports.parseEbml = void 0;
4
- const register_track_1 = require("../../register-track");
5
- const get_sample_from_block_1 = require("./get-sample-from-block");
6
- const make_track_1 = require("./make-track");
7
- const all_segments_1 = require("./segments/all-segments");
8
- const parseEbml = async (iterator, parserContext) => {
9
- const hex = iterator.getMatroskaSegmentId();
10
- if (hex === null) {
11
- throw new Error('Not enough bytes left to parse EBML - this should not happen');
12
- }
13
- const hasInMap = all_segments_1.ebmlMap[hex];
14
- if (!hasInMap) {
15
- throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
16
- }
17
- const off = iterator.counter.getOffset();
18
- const size = iterator.getVint();
19
- const minVintWidth = iterator.counter.getOffset() - off;
20
- if (size === null) {
21
- throw new Error('Not enough bytes left to parse EBML - this should not happen');
22
- }
23
- if (hasInMap.type === 'uint') {
24
- const beforeUintOffset = iterator.counter.getOffset();
25
- const value = size === 0 ? 0 : iterator.getUint(size);
26
- const { name } = hasInMap;
27
- return {
28
- // To work around TS limit
29
- type: name,
30
- value: {
31
- value,
32
- byteLength: iterator.counter.getOffset() - beforeUintOffset,
33
- },
34
- minVintWidth,
35
- };
36
- }
37
- if (hasInMap.type === 'string') {
38
- const value = iterator.getByteString(size);
39
- return {
40
- type: hasInMap.name,
41
- value,
42
- minVintWidth,
43
- };
44
- }
45
- if (hasInMap.type === 'float') {
46
- const value = size === 0
47
- ? 0.0
48
- : size === 4
49
- ? iterator.getFloat32()
50
- : iterator.getFloat64();
51
- return {
52
- type: hasInMap.name,
53
- value: {
54
- value,
55
- size: size === 4 ? '32' : '64',
56
- },
57
- minVintWidth,
58
- };
59
- }
60
- if (hasInMap.type === 'hex-string') {
61
- return {
62
- type: hasInMap.name,
63
- value: '0x' +
64
- [...iterator.getSlice(size)]
65
- .map((b) => b.toString(16).padStart(2, '0'))
66
- .join('')
67
- .replace(new RegExp('^' + hex), ''),
68
- minVintWidth,
69
- };
70
- }
71
- if (hasInMap.type === 'uint8array') {
72
- return {
73
- type: hasInMap.name,
74
- value: iterator.getSlice(size),
75
- minVintWidth,
76
- };
77
- }
78
- if (hasInMap.type === 'children') {
79
- const children = [];
80
- const startOffset = iterator.counter.getOffset();
81
- while (true) {
82
- if (size === 0) {
83
- break;
84
- }
85
- const offset = iterator.counter.getOffset();
86
- const value = await (0, exports.parseEbml)(iterator, parserContext);
87
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
88
- const remapped = await (0, exports.postprocessEbml)({
89
- offset,
90
- ebml: value,
91
- parserContext,
92
- });
93
- children.push(remapped);
94
- const offsetNow = iterator.counter.getOffset();
95
- if (offsetNow - startOffset > size) {
96
- throw new Error(`Offset ${offsetNow - startOffset} is larger than the length of the hex ${size}`);
97
- }
98
- if (offsetNow - startOffset === size) {
99
- break;
100
- }
101
- }
102
- return { type: hasInMap.name, value: children, minVintWidth };
103
- }
104
- // @ts-expect-error
105
- throw new Error(`Unknown segment type ${hasInMap.type}`);
106
- };
107
- exports.parseEbml = parseEbml;
108
- const postprocessEbml = async ({ offset, ebml, parserContext, }) => {
109
- if (ebml.type === 'TimestampScale') {
110
- parserContext.parserState.setTimescale(ebml.value.value);
111
- }
112
- if (ebml.type === 'TrackEntry') {
113
- parserContext.parserState.onTrackEntrySegment(ebml);
114
- const track = (0, make_track_1.getTrack)({
115
- track: ebml,
116
- timescale: parserContext.parserState.getTimescale(),
117
- });
118
- if (track) {
119
- await (0, register_track_1.registerTrack)({
120
- state: parserContext.parserState,
121
- options: parserContext,
122
- track,
123
- });
124
- }
125
- }
126
- if (ebml.type === 'Timestamp') {
127
- parserContext.parserState.setTimestampOffset(offset, ebml.value.value);
128
- }
129
- if (ebml.type === 'Block' || ebml.type === 'SimpleBlock') {
130
- const sample = (0, get_sample_from_block_1.getSampleFromBlock)(ebml, parserContext, offset);
131
- if (sample.type === 'video-sample' && parserContext.nullifySamples) {
132
- await parserContext.parserState.onVideoSample(sample.videoSample.trackId, sample.videoSample);
133
- return {
134
- type: 'Block',
135
- value: new Uint8Array([]),
136
- minVintWidth: ebml.minVintWidth,
137
- };
138
- }
139
- if (sample.type === 'audio-sample' && parserContext.nullifySamples) {
140
- await parserContext.parserState.onAudioSample(sample.audioSample.trackId, sample.audioSample);
141
- return {
142
- type: 'Block',
143
- value: new Uint8Array([]),
144
- minVintWidth: ebml.minVintWidth,
145
- };
146
- }
147
- if (sample.type === 'no-sample' && parserContext.nullifySamples) {
148
- return {
149
- type: 'Block',
150
- value: new Uint8Array([]),
151
- minVintWidth: ebml.minVintWidth,
152
- };
153
- }
154
- }
155
- if (ebml.type === 'BlockGroup') {
156
- // Blocks don't have information about keyframes.
157
- // https://ffmpeg.org/pipermail/ffmpeg-devel/2015-June/173825.html
158
- // "For Blocks, keyframes is
159
- // inferred by the absence of ReferenceBlock element (as done by matroskadec).""
160
- const block = ebml.value.find((c) => c.type === 'SimpleBlock' || c.type === 'Block');
161
- if (!block || (block.type !== 'SimpleBlock' && block.type !== 'Block')) {
162
- throw new Error('Expected block segment');
163
- }
164
- const hasReferenceBlock = ebml.value.find((c) => c.type === 'ReferenceBlock');
165
- const sample = block.value.length === 0
166
- ? null
167
- : (0, get_sample_from_block_1.getSampleFromBlock)(block, parserContext, offset);
168
- if (sample && sample.type === 'partial-video-sample') {
169
- const completeFrame = {
170
- ...sample.partialVideoSample,
171
- type: hasReferenceBlock ? 'delta' : 'key',
172
- };
173
- await parserContext.parserState.onVideoSample(sample.partialVideoSample.trackId, completeFrame);
174
- }
175
- if (parserContext.nullifySamples) {
176
- return {
177
- type: 'BlockGroup',
178
- value: [],
179
- minVintWidth: ebml.minVintWidth,
180
- };
181
- }
182
- }
183
- return ebml;
184
- };
185
- exports.postprocessEbml = postprocessEbml;
@@ -1,9 +0,0 @@
1
- import type { BufferIterator } from '../../buffer-iterator';
2
- import type { Options, ParseMediaFields } from '../../options';
3
- import type { MatroskaStructure, ParseResult } from '../../parse-result';
4
- import type { ParserContext } from '../../parser-context';
5
- export declare const parseWebm: ({ counter, parserContext, fields, }: {
6
- counter: BufferIterator;
7
- parserContext: ParserContext;
8
- fields: Options<ParseMediaFields>;
9
- }) => Promise<ParseResult<MatroskaStructure>>;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseWebm = void 0;
4
- const parse_children_1 = require("./segments/parse-children");
5
- const continueAfterMatroskaResult = (result, structure) => {
6
- if (result.status === 'done') {
7
- return {
8
- status: 'done',
9
- segments: structure,
10
- };
11
- }
12
- return {
13
- status: 'incomplete',
14
- segments: structure,
15
- continueParsing: async () => {
16
- const newResult = await result.continueParsing();
17
- return continueAfterMatroskaResult(newResult, structure);
18
- },
19
- skipTo: null,
20
- };
21
- };
22
- // Parsing according to https://darkcoding.net/software/reading-mediarecorders-webm-opus-output/
23
- const parseWebm = async ({ counter, parserContext, fields, }) => {
24
- const structure = { type: 'matroska', boxes: [] };
25
- const results = await (0, parse_children_1.expectChildren)({
26
- iterator: counter,
27
- length: Infinity,
28
- children: structure.boxes,
29
- parserContext,
30
- startOffset: counter.counter.getOffset(),
31
- fields,
32
- topLevelStructure: structure,
33
- });
34
- return continueAfterMatroskaResult(results, structure);
35
- };
36
- exports.parseWebm = parseWebm;