@remotion/media-parser 4.0.255 → 4.0.256

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/dist/add-new-matroska-tracks.d.ts +8 -0
  2. package/dist/add-new-matroska-tracks.js +14 -0
  3. package/dist/boxes/avc/parse-avc.d.ts +18 -0
  4. package/dist/boxes/avc/parse-avc.js +96 -0
  5. package/dist/boxes/iso-base-media/base-type.d.ts +4 -0
  6. package/dist/boxes/iso-base-media/base-type.js +2 -0
  7. package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +14 -0
  8. package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +38 -0
  9. package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +29 -0
  10. package/dist/boxes/iso-base-media/esds/esds-descriptors.js +82 -0
  11. package/dist/boxes/iso-base-media/esds/esds.d.ts +15 -0
  12. package/dist/boxes/iso-base-media/esds/esds.js +27 -0
  13. package/dist/boxes/iso-base-media/ftyp.d.ts +13 -0
  14. package/dist/boxes/iso-base-media/ftyp.js +22 -0
  15. package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +13 -0
  16. package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +22 -0
  17. package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +4 -0
  18. package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +54 -0
  19. package/dist/boxes/iso-base-media/make-track.d.ts +3 -0
  20. package/dist/boxes/iso-base-media/make-track.js +107 -0
  21. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +25 -0
  22. package/dist/boxes/iso-base-media/mdat/mdat.js +122 -0
  23. package/dist/boxes/iso-base-media/mdhd.d.ts +16 -0
  24. package/dist/boxes/iso-base-media/mdhd.js +32 -0
  25. package/dist/boxes/iso-base-media/meta/hdlr.d.ts +12 -0
  26. package/dist/boxes/iso-base-media/meta/hdlr.js +33 -0
  27. package/dist/boxes/iso-base-media/meta/ilst.d.ts +28 -0
  28. package/dist/boxes/iso-base-media/meta/ilst.js +86 -0
  29. package/dist/boxes/iso-base-media/moov/moov.d.ts +19 -0
  30. package/dist/boxes/iso-base-media/moov/moov.js +27 -0
  31. package/dist/boxes/iso-base-media/mvhd.d.ts +30 -0
  32. package/dist/boxes/iso-base-media/mvhd.js +65 -0
  33. package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +36 -0
  34. package/dist/boxes/iso-base-media/parse-icc-profile.js +115 -0
  35. package/dist/boxes/iso-base-media/process-box.d.ts +34 -0
  36. package/dist/boxes/iso-base-media/process-box.js +710 -0
  37. package/dist/boxes/iso-base-media/stsd/av1c.d.ts +9 -0
  38. package/dist/boxes/iso-base-media/stsd/av1c.js +10 -0
  39. package/dist/boxes/iso-base-media/stsd/avcc.d.ts +10 -0
  40. package/dist/boxes/iso-base-media/stsd/avcc.js +21 -0
  41. package/dist/boxes/iso-base-media/stsd/colr.d.ts +21 -0
  42. package/dist/boxes/iso-base-media/stsd/colr.js +47 -0
  43. package/dist/boxes/iso-base-media/stsd/ctts.d.ts +19 -0
  44. package/dist/boxes/iso-base-media/stsd/ctts.js +34 -0
  45. package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +11 -0
  46. package/dist/boxes/iso-base-media/stsd/hvcc.js +17 -0
  47. package/dist/boxes/iso-base-media/stsd/keys.d.ts +19 -0
  48. package/dist/boxes/iso-base-media/stsd/keys.js +35 -0
  49. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +19 -0
  50. package/dist/boxes/iso-base-media/stsd/mebx.js +32 -0
  51. package/dist/boxes/iso-base-media/stsd/pasp.d.ts +12 -0
  52. package/dist/boxes/iso-base-media/stsd/pasp.js +17 -0
  53. package/dist/boxes/iso-base-media/stsd/samples.d.ts +68 -0
  54. package/dist/boxes/iso-base-media/stsd/samples.js +320 -0
  55. package/dist/boxes/iso-base-media/stsd/stco.d.ts +15 -0
  56. package/dist/boxes/iso-base-media/stsd/stco.js +30 -0
  57. package/dist/boxes/iso-base-media/stsd/stsc.d.ts +19 -0
  58. package/dist/boxes/iso-base-media/stsd/stsc.js +34 -0
  59. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +18 -0
  60. package/dist/boxes/iso-base-media/stsd/stsd.js +33 -0
  61. package/dist/boxes/iso-base-media/stsd/stss.d.ts +13 -0
  62. package/dist/boxes/iso-base-media/stsd/stss.js +28 -0
  63. package/dist/boxes/iso-base-media/stsd/stsz.d.ts +21 -0
  64. package/dist/boxes/iso-base-media/stsd/stsz.js +44 -0
  65. package/dist/boxes/iso-base-media/stsd/stts.d.ts +15 -0
  66. package/dist/boxes/iso-base-media/stsd/stts.js +35 -0
  67. package/dist/boxes/iso-base-media/tfdt.d.ts +12 -0
  68. package/dist/boxes/iso-base-media/tfdt.js +20 -0
  69. package/dist/boxes/iso-base-media/tfhd.d.ts +16 -0
  70. package/dist/boxes/iso-base-media/tfhd.js +41 -0
  71. package/dist/boxes/iso-base-media/tkhd.d.ts +25 -0
  72. package/dist/boxes/iso-base-media/tkhd.js +87 -0
  73. package/dist/boxes/iso-base-media/to-date.d.ts +2 -0
  74. package/dist/boxes/iso-base-media/to-date.js +19 -0
  75. package/dist/boxes/iso-base-media/trak/trak.d.ts +19 -0
  76. package/dist/boxes/iso-base-media/trak/trak.js +27 -0
  77. package/dist/boxes/iso-base-media/traversal.d.ts +39 -0
  78. package/dist/boxes/iso-base-media/traversal.js +201 -0
  79. package/dist/boxes/iso-base-media/trun.d.ts +21 -0
  80. package/dist/boxes/iso-base-media/trun.js +44 -0
  81. package/dist/boxes/iso-base-media/void-box.d.ts +4 -0
  82. package/dist/boxes/iso-base-media/void-box.js +2 -0
  83. package/dist/boxes/riff/expect-riff-box.d.ts +17 -0
  84. package/dist/boxes/riff/expect-riff-box.js +49 -0
  85. package/dist/boxes/riff/get-tracks-from-avi.d.ts +22 -0
  86. package/dist/boxes/riff/get-tracks-from-avi.js +114 -0
  87. package/dist/boxes/riff/is-movi.d.ts +2 -0
  88. package/dist/boxes/riff/is-movi.js +12 -0
  89. package/dist/boxes/riff/parse-avih.d.ts +6 -0
  90. package/dist/boxes/riff/parse-avih.js +32 -0
  91. package/dist/boxes/riff/parse-box.d.ts +15 -0
  92. package/dist/boxes/riff/parse-box.js +146 -0
  93. package/dist/boxes/riff/parse-fmt-box.d.ts +7 -0
  94. package/dist/boxes/riff/parse-fmt-box.js +33 -0
  95. package/dist/boxes/riff/parse-isft.d.ts +6 -0
  96. package/dist/boxes/riff/parse-isft.js +17 -0
  97. package/dist/boxes/riff/parse-list-box.d.ts +8 -0
  98. package/dist/boxes/riff/parse-list-box.js +30 -0
  99. package/dist/boxes/riff/parse-movi.d.ts +17 -0
  100. package/dist/boxes/riff/parse-movi.js +133 -0
  101. package/dist/boxes/riff/parse-riff-box.d.ts +10 -0
  102. package/dist/boxes/riff/parse-riff-box.js +37 -0
  103. package/dist/boxes/riff/parse-strf.d.ts +7 -0
  104. package/dist/boxes/riff/parse-strf.js +67 -0
  105. package/dist/boxes/riff/parse-strh.d.ts +6 -0
  106. package/dist/boxes/riff/parse-strh.js +46 -0
  107. package/dist/boxes/riff/riff-box.d.ts +85 -0
  108. package/dist/boxes/riff/riff-box.js +2 -0
  109. package/dist/boxes/riff/timescale.d.ts +1 -0
  110. package/dist/boxes/riff/timescale.js +4 -0
  111. package/dist/boxes/riff/traversal.d.ts +8 -0
  112. package/dist/boxes/riff/traversal.js +36 -0
  113. package/dist/boxes/webm/allowed-partial-segments.d.ts +1 -0
  114. package/dist/boxes/webm/allowed-partial-segments.js +4 -0
  115. package/dist/boxes/webm/av1-codec-private.d.ts +2 -0
  116. package/dist/boxes/webm/av1-codec-private.js +95 -0
  117. package/dist/boxes/webm/color.d.ts +4 -0
  118. package/dist/boxes/webm/color.js +127 -0
  119. package/dist/boxes/webm/description.d.ts +2 -0
  120. package/dist/boxes/webm/description.js +83 -0
  121. package/dist/boxes/webm/ebml.d.ts +2 -0
  122. package/dist/boxes/webm/ebml.js +94 -0
  123. package/dist/boxes/webm/get-ready-tracks.d.ts +3 -0
  124. package/dist/boxes/webm/get-ready-tracks.js +29 -0
  125. package/dist/boxes/webm/get-sample-from-block.d.ts +17 -0
  126. package/dist/boxes/webm/get-sample-from-block.js +81 -0
  127. package/dist/boxes/webm/make-header.d.ts +8 -0
  128. package/dist/boxes/webm/make-header.js +187 -0
  129. package/dist/boxes/webm/make-track.d.ts +9 -0
  130. package/dist/boxes/webm/make-track.js +261 -0
  131. package/dist/boxes/webm/parse-ebml.d.ts +12 -0
  132. package/dist/boxes/webm/parse-ebml.js +185 -0
  133. package/dist/boxes/webm/parse-webm-header.d.ts +9 -0
  134. package/dist/boxes/webm/parse-webm-header.js +36 -0
  135. package/dist/boxes/webm/segments/all-segments.d.ts +976 -0
  136. package/dist/boxes/webm/segments/all-segments.js +724 -0
  137. package/dist/boxes/webm/segments/block-simple-block-flags.d.ts +9 -0
  138. package/dist/boxes/webm/segments/block-simple-block-flags.js +38 -0
  139. package/dist/boxes/webm/segments/parse-children.d.ts +23 -0
  140. package/dist/boxes/webm/segments/parse-children.js +145 -0
  141. package/dist/boxes/webm/segments/track-entry.d.ts +9 -0
  142. package/dist/boxes/webm/segments/track-entry.js +24 -0
  143. package/dist/boxes/webm/segments.d.ts +15 -0
  144. package/dist/boxes/webm/segments.js +161 -0
  145. package/dist/boxes/webm/traversal.d.ts +33 -0
  146. package/dist/boxes/webm/traversal.js +265 -0
  147. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  148. package/dist/create/cluster-segment.d.ts +10 -0
  149. package/dist/create/cluster-segment.js +39 -0
  150. package/dist/create/cluster.d.ts +19 -0
  151. package/dist/create/cluster.js +55 -0
  152. package/dist/create/create-media.d.ts +15 -0
  153. package/dist/create/create-media.js +165 -0
  154. package/dist/create/event-emitter.d.ts +31 -0
  155. package/dist/create/event-emitter.js +25 -0
  156. package/dist/create/iso-base-media/codec-specific/avc1.d.ts +2 -0
  157. package/dist/create/iso-base-media/codec-specific/avc1.js +48 -0
  158. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +22 -0
  159. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +36 -0
  160. package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +2 -0
  161. package/dist/create/iso-base-media/codec-specific/mp4a.js +74 -0
  162. package/dist/create/iso-base-media/create-colr.d.ts +6 -0
  163. package/dist/create/iso-base-media/create-colr.js +26 -0
  164. package/dist/create/iso-base-media/create-ftyp.d.ts +10 -0
  165. package/dist/create/iso-base-media/create-ftyp.js +22 -0
  166. package/dist/create/iso-base-media/create-ilst.d.ts +1 -0
  167. package/dist/create/iso-base-media/create-ilst.js +14 -0
  168. package/dist/create/iso-base-media/create-iso-base-media.d.ts +2 -0
  169. package/dist/create/iso-base-media/create-iso-base-media.js +165 -0
  170. package/dist/create/iso-base-media/create-mdia.d.ts +5 -0
  171. package/dist/create/iso-base-media/create-mdia.js +18 -0
  172. package/dist/create/iso-base-media/create-moov.d.ts +5 -0
  173. package/dist/create/iso-base-media/create-moov.js +18 -0
  174. package/dist/create/iso-base-media/create-mvhd.d.ts +10 -0
  175. package/dist/create/iso-base-media/create-mvhd.js +48 -0
  176. package/dist/create/iso-base-media/create-trak.d.ts +4 -0
  177. package/dist/create/iso-base-media/create-trak.js +17 -0
  178. package/dist/create/iso-base-media/create-udta.d.ts +1 -0
  179. package/dist/create/iso-base-media/create-udta.js +14 -0
  180. package/dist/create/iso-base-media/create-url.d.ts +1 -0
  181. package/dist/create/iso-base-media/create-url.js +16 -0
  182. package/dist/create/iso-base-media/example-stts.d.ts +3 -0
  183. package/dist/create/iso-base-media/example-stts.js +2797 -0
  184. package/dist/create/iso-base-media/ilst/create-cmt.d.ts +1 -0
  185. package/dist/create/iso-base-media/ilst/create-cmt.js +26 -0
  186. package/dist/create/iso-base-media/ilst/create-too.d.ts +1 -0
  187. package/dist/create/iso-base-media/ilst/create-too.js +27 -0
  188. package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +6 -0
  189. package/dist/create/iso-base-media/mdia/create-mdhd.js +33 -0
  190. package/dist/create/iso-base-media/mp4-header.d.ts +6 -0
  191. package/dist/create/iso-base-media/mp4-header.js +48 -0
  192. package/dist/create/iso-base-media/primitives.d.ts +15 -0
  193. package/dist/create/iso-base-media/primitives.js +133 -0
  194. package/dist/create/iso-base-media/serialize-track.d.ts +9 -0
  195. package/dist/create/iso-base-media/serialize-track.js +63 -0
  196. package/dist/create/iso-base-media/trak/create-tkhd.d.ts +27 -0
  197. package/dist/create/iso-base-media/trak/create-tkhd.js +97 -0
  198. package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +4 -0
  199. package/dist/create/iso-base-media/trak/mdia/create-minf.js +19 -0
  200. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +1 -0
  201. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +22 -0
  202. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +1 -0
  203. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +20 -0
  204. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +6 -0
  205. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +35 -0
  206. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +1 -0
  207. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +20 -0
  208. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +2 -0
  209. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +45 -0
  210. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +2 -0
  211. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +28 -0
  212. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +2 -0
  213. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +56 -0
  214. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +2 -0
  215. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +23 -0
  216. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +2 -0
  217. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +25 -0
  218. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +2 -0
  219. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +48 -0
  220. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +1 -0
  221. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +20 -0
  222. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +1 -0
  223. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +16 -0
  224. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +1 -0
  225. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +13 -0
  226. package/dist/create/iso-base-media/udta/create-meta.d.ts +4 -0
  227. package/dist/create/iso-base-media/udta/create-meta.js +20 -0
  228. package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +1 -0
  229. package/dist/create/iso-base-media/udta/meta/create-hdlr.js +32 -0
  230. package/dist/create/make-duration-with-padding.d.ts +1 -0
  231. package/dist/create/make-duration-with-padding.js +15 -0
  232. package/dist/create/make-track-info.d.ts +20 -0
  233. package/dist/create/make-track-info.js +2 -0
  234. package/dist/create/matroska/cluster-segment.d.ts +10 -0
  235. package/dist/create/matroska/cluster-segment.js +39 -0
  236. package/dist/create/matroska/cluster.d.ts +25 -0
  237. package/dist/create/matroska/cluster.js +77 -0
  238. package/dist/create/matroska/create-matroska-media.d.ts +2 -0
  239. package/dist/create/matroska/create-matroska-media.js +187 -0
  240. package/dist/create/matroska/make-duration-with-padding.d.ts +1 -0
  241. package/dist/create/matroska/make-duration-with-padding.js +15 -0
  242. package/dist/create/matroska/matroska-cues.d.ts +6 -0
  243. package/dist/create/matroska/matroska-cues.js +49 -0
  244. package/dist/create/matroska/matroska-header.d.ts +1 -0
  245. package/dist/create/matroska/matroska-header.js +66 -0
  246. package/dist/create/matroska/matroska-info.d.ts +3 -0
  247. package/dist/create/matroska/matroska-info.js +33 -0
  248. package/dist/create/matroska/matroska-seek.d.ts +6 -0
  249. package/dist/create/matroska/matroska-seek.js +32 -0
  250. package/dist/create/matroska/matroska-segment.d.ts +3 -0
  251. package/dist/create/matroska/matroska-segment.js +13 -0
  252. package/dist/create/matroska/matroska-trackentry.d.ts +10 -0
  253. package/dist/create/matroska/matroska-trackentry.js +249 -0
  254. package/dist/create/matroska-cues.d.ts +6 -0
  255. package/dist/create/matroska-cues.js +49 -0
  256. package/dist/create/matroska-header.d.ts +1 -0
  257. package/dist/create/matroska-header.js +66 -0
  258. package/dist/create/matroska-info.d.ts +3 -0
  259. package/dist/create/matroska-info.js +33 -0
  260. package/dist/create/matroska-seek.d.ts +6 -0
  261. package/dist/create/matroska-seek.js +32 -0
  262. package/dist/create/matroska-segment.d.ts +3 -0
  263. package/dist/create/matroska-segment.js +13 -0
  264. package/dist/create/matroska-trackentry.d.ts +27 -0
  265. package/dist/create/matroska-trackentry.js +243 -0
  266. package/dist/create/media-fn.d.ts +33 -0
  267. package/dist/create/media-fn.js +2 -0
  268. package/dist/create/progress-tracker.d.ts +7 -0
  269. package/dist/create/progress-tracker.js +43 -0
  270. package/dist/create/timescale.d.ts +1 -0
  271. package/dist/create/timescale.js +4 -0
  272. package/dist/create/wav/create-wav.d.ts +2 -0
  273. package/dist/create/wav/create-wav.js +110 -0
  274. package/dist/create/with-resolvers.d.ts +10 -0
  275. package/dist/create/with-resolvers.js +28 -0
  276. package/dist/esm/buffer.mjs +56 -0
  277. package/dist/esm/index.mjs +1 -1
  278. package/dist/esm/web-fs.mjs +73 -0
  279. package/dist/parse-video.d.ts +25 -0
  280. package/dist/parse-video.js +39 -0
  281. package/dist/parser-context.d.ts +10 -0
  282. package/dist/parser-context.js +2 -0
  283. package/dist/parser-state.d.ts +22 -0
  284. package/dist/parser-state.js +132 -0
  285. package/dist/version.d.ts +1 -1
  286. package/dist/version.js +1 -1
  287. package/dist/writers/buffer-implementation/writer.d.ts +2 -0
  288. package/dist/writers/buffer-implementation/writer.js +54 -0
  289. package/dist/writers/buffer.d.ts +2 -0
  290. package/dist/writers/buffer.js +7 -0
  291. package/dist/writers/web-fs.d.ts +3 -0
  292. package/dist/writers/web-fs.js +74 -0
  293. package/package.json +3 -3
  294. package/dist/abort.d.ts +0 -1
  295. package/dist/abort.js +0 -7
  296. package/dist/controller.d.ts +0 -17
  297. package/dist/controller.js +0 -31
  298. package/dist/parse-and-download-media.d.ts +0 -2
  299. package/dist/parse-and-download-media.js +0 -57
@@ -0,0 +1,8 @@
1
+ import type { Track } from './get-tracks';
2
+ import type { ParserContext } from './parser-context';
3
+ import type { ParserState } from './parser-state';
4
+ export declare const registerTrack: ({ state, options, track, }: {
5
+ state: ParserState;
6
+ options: ParserContext;
7
+ track: Track;
8
+ }) => Promise<void>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerTrack = void 0;
4
+ const registerTrack = async ({ state, options, track, }) => {
5
+ if (track.type === 'video' && options.onVideoTrack) {
6
+ const callback = await options.onVideoTrack(track);
7
+ await state.registerVideoSampleCallback(track.trackId, callback !== null && callback !== void 0 ? callback : null);
8
+ }
9
+ if (track.type === 'audio' && options.onAudioTrack) {
10
+ const callback = await options.onAudioTrack(track);
11
+ await state.registerAudioSampleCallback(track.trackId, callback !== null && callback !== void 0 ? callback : null);
12
+ }
13
+ };
14
+ exports.registerTrack = registerTrack;
@@ -0,0 +1,18 @@
1
+ export type AvcProfileInfo = {
2
+ profile: number;
3
+ level: number;
4
+ compatibility: number;
5
+ sps: Uint8Array;
6
+ type: 'avc-profile';
7
+ };
8
+ export type AvcPPs = {
9
+ type: 'avc-pps';
10
+ pps: Uint8Array;
11
+ };
12
+ type AvcInfo = AvcProfileInfo | AvcPPs | {
13
+ type: 'keyframe';
14
+ } | {
15
+ type: 'delta-frame';
16
+ };
17
+ export declare const parseAvc: (buffer: Uint8Array) => AvcInfo[];
18
+ export {};
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAvc = void 0;
4
+ const buffer_iterator_1 = require("../../buffer-iterator");
5
+ const readSps = (iterator) => {
6
+ const profile = iterator.getUint8();
7
+ const compatibility = iterator.getUint8();
8
+ const level = iterator.getUint8();
9
+ return {
10
+ profile,
11
+ compatibility,
12
+ level,
13
+ };
14
+ };
15
+ const findEnd = (buffer) => {
16
+ let zeroesInARow = 0;
17
+ for (let i = 0; i < buffer.length; i++) {
18
+ const val = buffer[i];
19
+ if (val === 0) {
20
+ zeroesInARow++;
21
+ continue;
22
+ }
23
+ if (zeroesInARow >= 2 && val === 1) {
24
+ return i - zeroesInARow;
25
+ }
26
+ zeroesInARow = 0;
27
+ }
28
+ return null;
29
+ };
30
+ const inspect = (buffer) => {
31
+ const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(buffer, buffer.byteLength);
32
+ iterator.startReadingBits();
33
+ iterator.getBits(1);
34
+ iterator.getBits(2);
35
+ const type = iterator.getBits(5);
36
+ iterator.stopReadingBits();
37
+ if (type === 7) {
38
+ const end = findEnd(buffer);
39
+ const data = readSps(iterator);
40
+ const sps = buffer.slice(1, end === null ? Infinity : end);
41
+ return {
42
+ level: data.level,
43
+ profile: data.profile,
44
+ compatibility: data.compatibility,
45
+ sps,
46
+ type: 'avc-profile',
47
+ };
48
+ }
49
+ if (type === 5) {
50
+ return {
51
+ type: 'keyframe',
52
+ };
53
+ }
54
+ if (type === 8) {
55
+ const end = findEnd(buffer);
56
+ const pps = buffer.slice(0, end === null ? Infinity : end);
57
+ return {
58
+ type: 'avc-pps',
59
+ pps,
60
+ };
61
+ }
62
+ if (type === 1) {
63
+ return {
64
+ type: 'delta-frame',
65
+ };
66
+ }
67
+ iterator.destroy();
68
+ return null;
69
+ };
70
+ // https://stackoverflow.com/questions/24884827/possible-locations-for-sequence-picture-parameter-sets-for-h-264-stream
71
+ const parseAvc = (buffer) => {
72
+ let zeroesInARow = 0;
73
+ const infos = [];
74
+ for (let i = 0; i < buffer.length; i++) {
75
+ const val = buffer[i];
76
+ if (val === 0) {
77
+ zeroesInARow++;
78
+ continue;
79
+ }
80
+ if (zeroesInARow >= 2 && val === 1) {
81
+ zeroesInARow = 0;
82
+ const info = inspect(buffer.slice(i + 1, i + 100));
83
+ if (info) {
84
+ infos.push(info);
85
+ if (info.type === 'keyframe' || info.type === 'delta-frame') {
86
+ break;
87
+ }
88
+ }
89
+ }
90
+ if (val !== 1) {
91
+ zeroesInARow = 0;
92
+ }
93
+ }
94
+ return infos;
95
+ };
96
+ exports.parseAvc = parseAvc;
@@ -0,0 +1,4 @@
1
+ export interface BaseBox {
2
+ boxSize: number;
3
+ offset: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import type { BufferIterator } from '../../../buffer-iterator';
2
+ type UnknownDecoderSpecificConfig = {
3
+ type: 'unknown-decoder-specific-config';
4
+ };
5
+ type AudioSpecificConfig = {
6
+ type: 'mp4a-specific-config';
7
+ audioObjectType: number;
8
+ samplingFrequencyIndex: number;
9
+ channelConfiguration: number;
10
+ asBytes: Uint8Array;
11
+ };
12
+ export type DecoderSpecificConfig = UnknownDecoderSpecificConfig | AudioSpecificConfig;
13
+ export declare const parseDecoderSpecificConfig: (iterator: BufferIterator) => DecoderSpecificConfig;
14
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDecoderSpecificConfig = void 0;
4
+ const parseDecoderSpecificConfig = (iterator) => {
5
+ const layerTag = iterator.getUint8();
6
+ const layerSize = iterator.getPaddedFourByteNumber();
7
+ const start = iterator.counter.getOffset();
8
+ if (layerTag !== 5) {
9
+ iterator.discard(layerSize);
10
+ return {
11
+ type: 'unknown-decoder-specific-config',
12
+ };
13
+ }
14
+ // https://csclub.uwaterloo.ca/~pbarfuss/ISO14496-3-2009.pdf
15
+ // 1.6.2.1 AudioSpecificConfig
16
+ const bytes = iterator.getSlice(layerSize);
17
+ iterator.counter.decrement(layerSize);
18
+ iterator.startReadingBits();
19
+ const audioObjectType = iterator.getBits(5);
20
+ const samplingFrequencyIndex = iterator.getBits(4);
21
+ if (samplingFrequencyIndex === 0xf) {
22
+ iterator.getBits(24);
23
+ }
24
+ const channelConfiguration = iterator.getBits(4);
25
+ iterator.stopReadingBits();
26
+ const read = iterator.counter.getOffset() - start;
27
+ if (read < layerSize) {
28
+ iterator.discard(layerSize - read);
29
+ }
30
+ return {
31
+ type: 'mp4a-specific-config',
32
+ audioObjectType,
33
+ samplingFrequencyIndex,
34
+ channelConfiguration,
35
+ asBytes: bytes,
36
+ };
37
+ };
38
+ exports.parseDecoderSpecificConfig = parseDecoderSpecificConfig;
@@ -0,0 +1,29 @@
1
+ import type { BufferIterator } from '../../../buffer-iterator';
2
+ import type { DecoderSpecificConfig } from './decoder-specific-config';
3
+ type AudioObjectType = 'aac' | 'mp3' | 'unknown';
4
+ type DecoderConfigDescriptor = {
5
+ type: 'decoder-config-descriptor';
6
+ objectTypeIndication: AudioObjectType;
7
+ asNumber: number;
8
+ streamType: number;
9
+ upStream: number;
10
+ bufferSizeDB: number;
11
+ maxBitrate: number;
12
+ avgBitrate: number;
13
+ decoderSpecificConfigs: DecoderSpecificConfig[];
14
+ };
15
+ type SlConfigDescriptor = {
16
+ type: 'sl-config-descriptor';
17
+ };
18
+ type UnknownDescriptor = {
19
+ type: 'unknown-descriptor';
20
+ };
21
+ export type Descriptor = DecoderConfigDescriptor | SlConfigDescriptor | UnknownDescriptor;
22
+ type DescriptorAndNext = {
23
+ descriptor: Descriptor | null;
24
+ };
25
+ export declare const processDescriptor: ({ iterator, }: {
26
+ iterator: BufferIterator;
27
+ }) => DescriptorAndNext;
28
+ export declare const parseDescriptors: (iterator: BufferIterator, maxBytes: number) => Descriptor[];
29
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDescriptors = exports.processDescriptor = void 0;
4
+ const decoder_specific_config_1 = require("./decoder-specific-config");
5
+ const mapToObjectAudioIndicator = (num) => {
6
+ // https://chromium.googlesource.com/chromium/src/media/+/master/formats/mp4/es_descriptor.h
7
+ // http://netmedia.zju.edu.cn/multimedia2013/mpeg-4/ISO%20IEC%2014496-1%20MPEG-4%20System%20Standard.pdf
8
+ // Page 42, table 8
9
+ if (num === 0x40) {
10
+ return 'aac';
11
+ }
12
+ if (num === 0x6b) {
13
+ return 'mp3';
14
+ }
15
+ return 'unknown';
16
+ };
17
+ const processDescriptor = ({ iterator, }) => {
18
+ const tag = iterator.getUint8();
19
+ if (tag === 4) {
20
+ const size = iterator.getPaddedFourByteNumber();
21
+ const initialOffset = iterator.counter.getOffset();
22
+ const objectTypeIndication = iterator.getUint8();
23
+ iterator.startReadingBits();
24
+ const streamType = iterator.getBits(6);
25
+ const upStream = iterator.getBits(1);
26
+ // reserved
27
+ iterator.getBits(1);
28
+ const bufferSizeDB = iterator.getBits(24);
29
+ iterator.stopReadingBits();
30
+ const maxBitrate = iterator.getUint32();
31
+ const avgBitrate = iterator.getUint32();
32
+ const decoderSpecificConfigs = [];
33
+ while (size - (iterator.counter.getOffset() - initialOffset) > 0) {
34
+ const decoderSpecificConfig = (0, decoder_specific_config_1.parseDecoderSpecificConfig)(iterator);
35
+ decoderSpecificConfigs.push(decoderSpecificConfig);
36
+ }
37
+ return {
38
+ descriptor: {
39
+ type: 'decoder-config-descriptor',
40
+ objectTypeIndication: mapToObjectAudioIndicator(objectTypeIndication),
41
+ asNumber: objectTypeIndication,
42
+ bufferSizeDB,
43
+ streamType,
44
+ upStream,
45
+ avgBitrate,
46
+ maxBitrate,
47
+ decoderSpecificConfigs,
48
+ },
49
+ };
50
+ }
51
+ if (tag === 6) {
52
+ const size = iterator.getPaddedFourByteNumber();
53
+ iterator.discard(size);
54
+ return {
55
+ descriptor: {
56
+ type: 'sl-config-descriptor',
57
+ },
58
+ };
59
+ }
60
+ return {
61
+ descriptor: null,
62
+ };
63
+ };
64
+ exports.processDescriptor = processDescriptor;
65
+ const parseDescriptors = (iterator, maxBytes) => {
66
+ const descriptors = [];
67
+ const initialOffset = iterator.counter.getOffset();
68
+ while (iterator.bytesRemaining() > 0 &&
69
+ iterator.counter.getOffset() - initialOffset < maxBytes) {
70
+ const { descriptor } = (0, exports.processDescriptor)({
71
+ iterator,
72
+ });
73
+ if (descriptor) {
74
+ descriptors.push(descriptor);
75
+ }
76
+ else {
77
+ break;
78
+ }
79
+ }
80
+ return descriptors;
81
+ };
82
+ exports.parseDescriptors = parseDescriptors;
@@ -0,0 +1,15 @@
1
+ import type { BufferIterator } from '../../../buffer-iterator';
2
+ import type { Descriptor } from './esds-descriptors';
3
+ export interface EsdsBox {
4
+ type: 'esds-box';
5
+ version: number;
6
+ tag: number;
7
+ sizeOfInstance: number;
8
+ esId: number;
9
+ descriptors: Descriptor[];
10
+ }
11
+ export declare const parseEsds: ({ data, size, fileOffset, }: {
12
+ data: BufferIterator;
13
+ size: number;
14
+ fileOffset: number;
15
+ }) => EsdsBox;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseEsds = void 0;
4
+ const esds_descriptors_1 = require("./esds-descriptors");
5
+ const parseEsds = ({ data, size, fileOffset, }) => {
6
+ const version = data.getUint8();
7
+ // Flags, we discard them
8
+ data.discard(3);
9
+ const tag = data.getUint8();
10
+ const sizeOfInstance = data.getPaddedFourByteNumber();
11
+ const esId = data.getUint16();
12
+ // disard 1 byte, currently unknown
13
+ data.discard(1);
14
+ const remaining = size - (data.counter.getOffset() - fileOffset);
15
+ const descriptors = (0, esds_descriptors_1.parseDescriptors)(data, remaining);
16
+ const remainingNow = size - (data.counter.getOffset() - fileOffset);
17
+ data.discard(remainingNow);
18
+ return {
19
+ type: 'esds-box',
20
+ version,
21
+ tag,
22
+ sizeOfInstance,
23
+ esId,
24
+ descriptors,
25
+ };
26
+ };
27
+ exports.parseEsds = parseEsds;
@@ -0,0 +1,13 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { BaseBox } from './base-type';
3
+ export interface FtypBox extends BaseBox {
4
+ type: 'ftyp-box';
5
+ majorBrand: string;
6
+ minorVersion: number;
7
+ compatibleBrands: string[];
8
+ }
9
+ export declare const parseFtyp: ({ iterator, size, offset, }: {
10
+ iterator: BufferIterator;
11
+ size: number;
12
+ offset: number;
13
+ }) => FtypBox;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFtyp = void 0;
4
+ const parseFtyp = ({ iterator, size, offset, }) => {
5
+ const majorBrand = iterator.getByteString(4);
6
+ const minorVersion = iterator.getFourByteNumber();
7
+ const types = (size - iterator.counter.getOffset()) / 4;
8
+ const compatibleBrands = [];
9
+ for (let i = 0; i < types; i++) {
10
+ compatibleBrands.push(iterator.getByteString(4).trim());
11
+ }
12
+ const offsetAtEnd = iterator.counter.getOffset();
13
+ return {
14
+ type: 'ftyp-box',
15
+ majorBrand,
16
+ minorVersion,
17
+ compatibleBrands,
18
+ offset,
19
+ boxSize: offsetAtEnd - offset,
20
+ };
21
+ };
22
+ exports.parseFtyp = parseFtyp;
@@ -0,0 +1,13 @@
1
+ import type { MediaParserAudioCodec } from '../../get-tracks';
2
+ type AudioDecoderConfig = {
3
+ numberOfChannels: number;
4
+ sampleRate: number;
5
+ codecPrivate: Uint8Array | null;
6
+ };
7
+ export declare const getActualDecoderParameters: ({ audioCodec, codecPrivate, numberOfChannels, sampleRate, }: {
8
+ audioCodec: MediaParserAudioCodec;
9
+ codecPrivate: Uint8Array | null;
10
+ numberOfChannels: number;
11
+ sampleRate: number;
12
+ }) => AudioDecoderConfig;
13
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getActualDecoderParameters = void 0;
4
+ const aac_codecprivate_1 = require("../../aac-codecprivate");
5
+ // Example video: 'https://remotion-assets.s3.eu-central-1.amazonaws.com/example-videos/riverside.mp4';
6
+ // This video has `numberOfChannels = 2`, but the actual number of channels is `1` according to Codec Private.
7
+ // Therefore, prioritizing Codec Private over `numberOfChannels`.
8
+ const getActualDecoderParameters = ({ audioCodec, codecPrivate, numberOfChannels, sampleRate, }) => {
9
+ if (audioCodec !== 'aac') {
10
+ return { numberOfChannels, sampleRate, codecPrivate };
11
+ }
12
+ if (codecPrivate === null) {
13
+ return { numberOfChannels, sampleRate, codecPrivate };
14
+ }
15
+ const parsed = (0, aac_codecprivate_1.parseAacCodecPrivate)(codecPrivate);
16
+ return {
17
+ numberOfChannels: parsed.channelConfiguration,
18
+ sampleRate: parsed.sampleRate,
19
+ codecPrivate: (0, aac_codecprivate_1.createAacCodecPrivate)(parsed),
20
+ };
21
+ };
22
+ exports.getActualDecoderParameters = getActualDecoderParameters;
@@ -0,0 +1,4 @@
1
+ import type { SamplePosition } from '../../get-sample-positions';
2
+ import type { IsoBaseMediaBox } from '../../parse-result';
3
+ import type { TrakBox } from './trak/trak';
4
+ export declare const getSamplePositionsFromTrack: (trakBox: TrakBox, moofBox: IsoBaseMediaBox | null) => SamplePosition[];
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSamplePositionsFromTrack = void 0;
4
+ const get_audio_codec_1 = require("../../get-audio-codec");
5
+ const get_fps_1 = require("../../get-fps");
6
+ const get_sample_positions_1 = require("../../get-sample-positions");
7
+ const get_sample_positions_from_lpcm_1 = require("../../get-sample-positions-from-lpcm");
8
+ const samples_from_moof_1 = require("../../samples-from-moof");
9
+ const traversal_1 = require("./traversal");
10
+ const getSamplePositionsFromTrack = (trakBox, moofBox) => {
11
+ const isLpcm = (0, get_audio_codec_1.isLpcmAudioCodec)(trakBox);
12
+ const timescaleAndDuration = (0, get_fps_1.getTimescaleAndDuration)(trakBox);
13
+ if (isLpcm) {
14
+ return (0, get_sample_positions_from_lpcm_1.getSamplePositionsFromLpcm)(trakBox);
15
+ }
16
+ const stszBox = (0, traversal_1.getStszBox)(trakBox);
17
+ const stcoBox = (0, traversal_1.getStcoBox)(trakBox);
18
+ const stscBox = (0, traversal_1.getStscBox)(trakBox);
19
+ const stssBox = (0, traversal_1.getStssBox)(trakBox);
20
+ const sttsBox = (0, traversal_1.getSttsBox)(trakBox);
21
+ const tkhdBox = (0, traversal_1.getTkhdBox)(trakBox);
22
+ const cttsBox = (0, traversal_1.getCttsBox)(trakBox);
23
+ if (!tkhdBox) {
24
+ throw new Error('Expected tkhd box in trak box');
25
+ }
26
+ if (!stszBox) {
27
+ throw new Error('Expected stsz box in trak box');
28
+ }
29
+ if (!stcoBox) {
30
+ throw new Error('Expected stco box in trak box');
31
+ }
32
+ if (!stscBox) {
33
+ throw new Error('Expected stsc box in trak box');
34
+ }
35
+ if (!sttsBox) {
36
+ throw new Error('Expected stts box in trak box');
37
+ }
38
+ if (!timescaleAndDuration) {
39
+ throw new Error('Expected timescale and duration in trak box');
40
+ }
41
+ let samplePositions = (0, get_sample_positions_1.getSamplePositions)({
42
+ stcoBox,
43
+ stscBox,
44
+ stszBox,
45
+ stssBox,
46
+ sttsBox,
47
+ cttsBox,
48
+ });
49
+ if (samplePositions.length === 0 && moofBox) {
50
+ samplePositions = (0, samples_from_moof_1.getSamplesFromMoof)({ moofBox, trackId: tkhdBox.trackId });
51
+ }
52
+ return samplePositions;
53
+ };
54
+ exports.getSamplePositionsFromTrack = getSamplePositionsFromTrack;
@@ -0,0 +1,3 @@
1
+ import type { AudioTrack, OtherTrack, VideoTrack } from '../../get-tracks';
2
+ import type { TrakBox } from './trak/trak';
3
+ export declare const makeBaseMediaTrack: (trakBox: TrakBox) => VideoTrack | AudioTrack | OtherTrack | null;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeBaseMediaTrack = void 0;
4
+ const get_audio_codec_1 = require("../../get-audio-codec");
5
+ const get_fps_1 = require("../../get-fps");
6
+ const get_sample_aspect_ratio_1 = require("../../get-sample-aspect-ratio");
7
+ const get_video_codec_1 = require("../../get-video-codec");
8
+ const get_actual_number_of_channels_1 = require("./get-actual-number-of-channels");
9
+ const traversal_1 = require("./traversal");
10
+ const makeBaseMediaTrack = (trakBox) => {
11
+ var _a, _b, _c, _d;
12
+ const tkhdBox = (0, traversal_1.getTkhdBox)(trakBox);
13
+ const videoDescriptors = (0, traversal_1.getVideoDescriptors)(trakBox);
14
+ const timescaleAndDuration = (0, get_fps_1.getTimescaleAndDuration)(trakBox);
15
+ if (!tkhdBox) {
16
+ throw new Error('Expected tkhd box in trak box');
17
+ }
18
+ if (!timescaleAndDuration) {
19
+ throw new Error('Expected timescale and duration in trak box');
20
+ }
21
+ if ((0, get_fps_1.trakBoxContainsAudio)(trakBox)) {
22
+ const numberOfChannels = (0, get_audio_codec_1.getNumberOfChannelsFromTrak)(trakBox);
23
+ if (numberOfChannels === null) {
24
+ throw new Error('Could not find number of channels');
25
+ }
26
+ const sampleRate = (0, get_audio_codec_1.getSampleRate)(trakBox);
27
+ if (sampleRate === null) {
28
+ throw new Error('Could not find sample rate');
29
+ }
30
+ const { codecString, description } = (0, get_audio_codec_1.getAudioCodecStringFromTrak)(trakBox);
31
+ const codecPrivate = (_b = (_a = (0, get_audio_codec_1.getCodecPrivateFromTrak)(trakBox)) !== null && _a !== void 0 ? _a : description) !== null && _b !== void 0 ? _b : null;
32
+ const codecWithoutConfig = (0, get_audio_codec_1.getAudioCodecFromTrack)(trakBox);
33
+ const actual = (0, get_actual_number_of_channels_1.getActualDecoderParameters)({
34
+ audioCodec: codecWithoutConfig,
35
+ codecPrivate,
36
+ numberOfChannels,
37
+ sampleRate,
38
+ });
39
+ return {
40
+ type: 'audio',
41
+ trackId: tkhdBox.trackId,
42
+ timescale: timescaleAndDuration.timescale,
43
+ codec: codecString,
44
+ numberOfChannels: actual.numberOfChannels,
45
+ sampleRate: actual.sampleRate,
46
+ description: (_c = actual.codecPrivate) !== null && _c !== void 0 ? _c : undefined,
47
+ trakBox,
48
+ codecPrivate: actual.codecPrivate,
49
+ codecWithoutConfig,
50
+ };
51
+ }
52
+ if (!(0, get_fps_1.trakBoxContainsVideo)(trakBox)) {
53
+ return {
54
+ type: 'other',
55
+ trackId: tkhdBox.trackId,
56
+ timescale: timescaleAndDuration.timescale,
57
+ trakBox,
58
+ };
59
+ }
60
+ const videoSample = (0, get_sample_aspect_ratio_1.getStsdVideoConfig)(trakBox);
61
+ if (!videoSample) {
62
+ throw new Error('No video sample');
63
+ }
64
+ const sampleAspectRatio = (0, get_sample_aspect_ratio_1.getSampleAspectRatio)(trakBox);
65
+ const aspectRatioApplied = (0, get_sample_aspect_ratio_1.applyAspectRatios)({
66
+ dimensions: videoSample,
67
+ sampleAspectRatio,
68
+ displayAspectRatio: (0, get_sample_aspect_ratio_1.getDisplayAspectRatio)({
69
+ sampleAspectRatio,
70
+ nativeDimensions: videoSample,
71
+ }),
72
+ });
73
+ const { displayAspectHeight, displayAspectWidth, height, rotation, width } = (0, get_sample_aspect_ratio_1.applyTkhdBox)(aspectRatioApplied, tkhdBox);
74
+ const codec = (0, get_video_codec_1.getVideoCodecString)(trakBox);
75
+ if (!codec) {
76
+ throw new Error('Could not find video codec');
77
+ }
78
+ const privateData = (0, get_video_codec_1.getVideoPrivateData)(trakBox);
79
+ const track = {
80
+ type: 'video',
81
+ trackId: tkhdBox.trackId,
82
+ description: videoDescriptors !== null && videoDescriptors !== void 0 ? videoDescriptors : undefined,
83
+ timescale: timescaleAndDuration.timescale,
84
+ codec,
85
+ sampleAspectRatio: (0, get_sample_aspect_ratio_1.getSampleAspectRatio)(trakBox),
86
+ width,
87
+ height,
88
+ codedWidth: videoSample.width,
89
+ codedHeight: videoSample.height,
90
+ // Repeating those keys because they get picked up by VideoDecoder
91
+ displayAspectWidth,
92
+ displayAspectHeight,
93
+ rotation,
94
+ trakBox,
95
+ codecPrivate: privateData,
96
+ color: (_d = (0, get_video_codec_1.getIsoBmColrConfig)(trakBox)) !== null && _d !== void 0 ? _d : {
97
+ fullRange: null,
98
+ matrixCoefficients: null,
99
+ primaries: null,
100
+ transferCharacteristics: null,
101
+ },
102
+ codecWithoutConfig: (0, get_video_codec_1.getVideoCodecFromIsoTrak)(trakBox),
103
+ fps: (0, get_fps_1.getFpsFromMp4TrakBox)(trakBox),
104
+ };
105
+ return track;
106
+ };
107
+ exports.makeBaseMediaTrack = makeBaseMediaTrack;
@@ -0,0 +1,25 @@
1
+ import type { BufferIterator } from '../../../buffer-iterator';
2
+ import type { IsoBaseMediaBox } from '../../../parse-result';
3
+ import type { ParserContext } from '../../../parser-context';
4
+ type MdatStatus = {
5
+ status: 'samples-buffered';
6
+ } | {
7
+ status: 'samples-skipped';
8
+ } | {
9
+ status: 'samples-processed';
10
+ };
11
+ export type MdatBox = {
12
+ type: 'mdat-box';
13
+ boxSize: number;
14
+ fileOffset: number;
15
+ } & MdatStatus;
16
+ export declare const parseMdat: ({ data, size, fileOffset, existingBoxes, options, signal, maySkipSampleProcessing, }: {
17
+ data: BufferIterator;
18
+ size: number;
19
+ fileOffset: number;
20
+ existingBoxes: IsoBaseMediaBox[];
21
+ options: ParserContext;
22
+ signal: AbortSignal | null;
23
+ maySkipSampleProcessing: boolean;
24
+ }) => Promise<MdatBox>;
25
+ export {};