@remotion/media-parser 4.0.249 → 4.0.251

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 (405) hide show
  1. package/dist/add-avc-profile-to-track.js +2 -2
  2. package/dist/buffer-iterator.d.ts +3 -5
  3. package/dist/buffer-iterator.js +66 -50
  4. package/dist/containers/aac/parse-aac.d.ts +3 -0
  5. package/dist/containers/aac/parse-aac.js +83 -0
  6. package/dist/containers/aac/types.d.ts +4 -0
  7. package/dist/{boxes → containers}/avc/key.d.ts +1 -1
  8. package/dist/containers/flac/get-block-size.d.ts +2 -0
  9. package/dist/containers/flac/get-block-size.js +26 -0
  10. package/dist/containers/flac/get-channel-count.d.ts +2 -0
  11. package/dist/containers/flac/get-channel-count.js +36 -0
  12. package/dist/containers/flac/get-duration-from-flac.d.ts +2 -0
  13. package/dist/containers/flac/get-duration-from-flac.js +15 -0
  14. package/dist/containers/flac/get-metadata-from-flac.d.ts +2 -0
  15. package/dist/containers/flac/get-metadata-from-flac.js +11 -0
  16. package/dist/containers/flac/get-sample-rate.d.ts +3 -0
  17. package/dist/containers/flac/get-sample-rate.js +60 -0
  18. package/dist/containers/flac/parse-flac-frame.d.ts +15 -0
  19. package/dist/containers/flac/parse-flac-frame.js +175 -0
  20. package/dist/{boxes/riff/parse-box.d.ts → containers/flac/parse-flac.d.ts} +1 -3
  21. package/dist/containers/flac/parse-flac.js +54 -0
  22. package/dist/{boxes/mp3/parse-mpeg-header.d.ts → containers/flac/parse-header.d.ts} +4 -3
  23. package/dist/containers/flac/parse-header.js +10 -0
  24. package/dist/{boxes/mp3/parse-mp3.d.ts → containers/flac/parse-metadata.d.ts} +4 -4
  25. package/dist/containers/flac/parse-metadata.js +24 -0
  26. package/dist/{boxes/webm/parse-webm-header.d.ts → containers/flac/parse-streaminfo.d.ts} +2 -4
  27. package/dist/containers/flac/parse-streaminfo.js +53 -0
  28. package/dist/containers/flac/parse-unknown-block.d.ts +8 -0
  29. package/dist/containers/flac/parse-unknown-block.js +11 -0
  30. package/dist/containers/flac/types.d.ts +26 -0
  31. package/dist/containers/iso-base-media/base-media-box.d.ts +40 -0
  32. package/dist/containers/iso-base-media/get-children.d.ts +6 -0
  33. package/dist/containers/iso-base-media/get-children.js +21 -0
  34. package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.d.ts +1 -1
  35. package/dist/containers/iso-base-media/mdat/mdat.d.ts +2 -0
  36. package/dist/containers/iso-base-media/mdat/mdat.js +91 -0
  37. package/dist/containers/iso-base-media/moov/moov.d.ts +12 -0
  38. package/dist/containers/iso-base-media/moov/moov.js +17 -0
  39. package/dist/containers/iso-base-media/parse-boxes.d.ts +3 -0
  40. package/dist/containers/iso-base-media/parse-boxes.js +40 -0
  41. package/dist/containers/iso-base-media/process-box.d.ts +3 -0
  42. package/dist/{boxes → containers}/iso-base-media/process-box.js +49 -147
  43. package/dist/{boxes → containers}/iso-base-media/stsd/mebx.d.ts +1 -6
  44. package/dist/containers/iso-base-media/stsd/mebx.js +22 -0
  45. package/dist/{boxes → containers}/iso-base-media/stsd/samples.d.ts +6 -16
  46. package/dist/{boxes → containers}/iso-base-media/stsd/samples.js +26 -71
  47. package/dist/{boxes → containers}/iso-base-media/stsd/stsd.d.ts +1 -6
  48. package/dist/{boxes → containers}/iso-base-media/stsd/stsd.js +3 -6
  49. package/dist/containers/iso-base-media/trak/trak.d.ts +12 -0
  50. package/dist/containers/iso-base-media/trak/trak.js +17 -0
  51. package/dist/{boxes → containers}/iso-base-media/traversal.d.ts +2 -3
  52. package/dist/{boxes → containers}/iso-base-media/traversal.js +1 -12
  53. package/dist/containers/iso-base-media/void-box.js +2 -0
  54. package/dist/containers/mp3/get-tracks-from-mp3.d.ts +4 -0
  55. package/dist/{boxes → containers}/mp3/get-tracks-from-mp3.js +6 -6
  56. package/dist/containers/mp3/id3.d.ts +4 -0
  57. package/dist/{boxes → containers}/mp3/id3.js +8 -5
  58. package/dist/containers/mp3/parse-mp3.d.ts +3 -0
  59. package/dist/{boxes → containers}/mp3/parse-mp3.js +4 -20
  60. package/dist/containers/mp3/parse-mpeg-header.d.ts +4 -0
  61. package/dist/{boxes → containers}/mp3/parse-mpeg-header.js +2 -1
  62. package/dist/containers/riff/expect-riff-box.d.ts +7 -0
  63. package/dist/containers/riff/expect-riff-box.js +72 -0
  64. package/dist/containers/riff/get-duration.d.ts +3 -0
  65. package/dist/containers/riff/get-duration.js +33 -0
  66. package/dist/{boxes → containers}/riff/get-tracks-from-avi.d.ts +2 -3
  67. package/dist/{boxes → containers}/riff/get-tracks-from-avi.js +6 -10
  68. package/dist/containers/riff/parse-list-box.d.ts +6 -0
  69. package/dist/containers/riff/parse-list-box.js +29 -0
  70. package/dist/containers/riff/parse-movi.d.ts +11 -0
  71. package/dist/{boxes → containers}/riff/parse-movi.js +37 -57
  72. package/dist/containers/riff/parse-riff-body.d.ts +3 -0
  73. package/dist/containers/riff/parse-riff-body.js +22 -0
  74. package/dist/containers/riff/parse-riff-box.d.ts +7 -0
  75. package/dist/{boxes → containers}/riff/parse-riff-box.js +3 -10
  76. package/dist/containers/riff/parse-riff-header.d.ts +3 -0
  77. package/dist/containers/riff/parse-riff-header.js +23 -0
  78. package/dist/containers/riff/parse-riff.d.ts +3 -0
  79. package/dist/containers/riff/parse-riff.js +12 -0
  80. package/dist/containers/riff/parse-strf.d.ts +7 -0
  81. package/dist/{boxes → containers}/riff/parse-strf.js +4 -8
  82. package/dist/{boxes → containers}/riff/parse-strh.js +11 -0
  83. package/dist/containers/riff/parse-video-section.d.ts +2 -0
  84. package/dist/containers/riff/parse-video-section.js +19 -0
  85. package/dist/{boxes → containers}/riff/riff-box.d.ts +8 -14
  86. package/dist/containers/riff/riff-box.js +2 -0
  87. package/dist/{boxes → containers}/riff/traversal.d.ts +1 -3
  88. package/dist/{boxes → containers}/riff/traversal.js +1 -6
  89. package/dist/containers/transport-stream/boxes.js +2 -0
  90. package/dist/containers/transport-stream/get-tracks.d.ts +4 -0
  91. package/dist/{boxes → containers}/transport-stream/get-tracks.js +4 -3
  92. package/dist/containers/transport-stream/parse-packet.d.ts +5 -0
  93. package/dist/{boxes → containers}/transport-stream/parse-packet.js +4 -5
  94. package/dist/containers/transport-stream/parse-stream-packet.d.ts +9 -0
  95. package/dist/{boxes → containers}/transport-stream/parse-stream-packet.js +11 -12
  96. package/dist/containers/transport-stream/parse-transport-stream.d.ts +3 -0
  97. package/dist/{boxes → containers}/transport-stream/parse-transport-stream.js +8 -37
  98. package/dist/{boxes → containers}/transport-stream/process-stream-buffers.d.ts +1 -2
  99. package/dist/{boxes → containers}/transport-stream/process-stream-buffers.js +3 -3
  100. package/dist/containers/wav/get-duration-from-wav.d.ts +3 -0
  101. package/dist/containers/wav/get-duration-from-wav.js +29 -0
  102. package/dist/containers/wav/get-metadata-from-wav.d.ts +3 -0
  103. package/dist/containers/wav/get-metadata-from-wav.js +11 -0
  104. package/dist/containers/wav/parse-data.d.ts +5 -0
  105. package/dist/containers/wav/parse-data.js +25 -0
  106. package/dist/containers/wav/parse-fmt.d.ts +5 -0
  107. package/dist/containers/wav/parse-fmt.js +56 -0
  108. package/dist/containers/wav/parse-header.d.ts +5 -0
  109. package/dist/containers/wav/parse-header.js +17 -0
  110. package/dist/containers/wav/parse-id3.d.ts +5 -0
  111. package/dist/containers/wav/parse-id3.js +17 -0
  112. package/dist/containers/wav/parse-list.d.ts +5 -0
  113. package/dist/containers/wav/parse-list.js +32 -0
  114. package/dist/containers/wav/parse-video-section.d.ts +5 -0
  115. package/dist/containers/wav/parse-video-section.js +37 -0
  116. package/dist/containers/wav/parse-wav.d.ts +3 -0
  117. package/dist/containers/wav/parse-wav.js +36 -0
  118. package/dist/containers/wav/types.d.ts +30 -0
  119. package/dist/containers/wav/types.js +2 -0
  120. package/dist/{boxes → containers}/webm/parse-ebml.d.ts +1 -2
  121. package/dist/{boxes → containers}/webm/parse-ebml.js +6 -2
  122. package/dist/containers/webm/parse-webm-header.d.ts +3 -0
  123. package/dist/containers/webm/parse-webm-header.js +53 -0
  124. package/dist/containers/webm/segments.d.ts +9 -0
  125. package/dist/containers/webm/segments.js +80 -0
  126. package/dist/emit-available-info.d.ts +1 -3
  127. package/dist/emit-available-info.js +86 -76
  128. package/dist/errors.d.ts +1 -1
  129. package/dist/esm/from-node.mjs +8 -9
  130. package/dist/esm/index.mjs +4951 -4693
  131. package/dist/file-types/detect-file-type.d.ts +5 -1
  132. package/dist/file-types/detect-file-type.js +10 -3
  133. package/dist/file-types/index.js +3 -0
  134. package/dist/get-audio-codec.d.ts +4 -5
  135. package/dist/get-audio-codec.js +5 -5
  136. package/dist/get-container.d.ts +2 -2
  137. package/dist/get-container.js +10 -1
  138. package/dist/get-dimensions.d.ts +2 -3
  139. package/dist/get-dimensions.js +14 -10
  140. package/dist/get-duration.d.ts +5 -5
  141. package/dist/get-duration.js +29 -27
  142. package/dist/get-fields-from-callbacks.js +4 -0
  143. package/dist/get-fps.d.ts +1 -1
  144. package/dist/get-fps.js +12 -4
  145. package/dist/get-is-hdr.d.ts +2 -3
  146. package/dist/get-is-hdr.js +4 -4
  147. package/dist/get-keyframes.d.ts +1 -1
  148. package/dist/get-keyframes.js +4 -3
  149. package/dist/get-number-of-audio-channels.d.ts +3 -0
  150. package/dist/get-number-of-audio-channels.js +14 -0
  151. package/dist/get-sample-aspect-ratio.d.ts +8 -8
  152. package/dist/get-sample-aspect-ratio.js +1 -1
  153. package/dist/get-sample-positions-from-lpcm.d.ts +1 -1
  154. package/dist/get-sample-positions-from-lpcm.js +1 -1
  155. package/dist/get-sample-positions.d.ts +6 -6
  156. package/dist/get-sample-rate.d.ts +3 -0
  157. package/dist/get-sample-rate.js +14 -0
  158. package/dist/get-tracks.d.ts +9 -8
  159. package/dist/get-tracks.js +36 -22
  160. package/dist/get-video-codec.d.ts +3 -4
  161. package/dist/get-video-codec.js +6 -6
  162. package/dist/has-all-info.js +26 -15
  163. package/dist/index.d.ts +145 -41
  164. package/dist/index.js +8 -8
  165. package/dist/init-video.d.ts +7 -0
  166. package/dist/init-video.js +114 -0
  167. package/dist/is-audio-structure.d.ts +2 -0
  168. package/dist/is-audio-structure.js +31 -0
  169. package/dist/metadata/get-metadata.js +16 -1
  170. package/dist/metadata/metadata-from-iso.d.ts +2 -1
  171. package/dist/metadata/metadata-from-iso.js +1 -1
  172. package/dist/metadata/metadata-from-matroska.js +1 -1
  173. package/dist/metadata/metadata-from-riff.d.ts +1 -1
  174. package/dist/options.d.ts +64 -38
  175. package/dist/parse-media.js +125 -43
  176. package/dist/parse-result.d.ts +8 -61
  177. package/dist/perform-seek.d.ts +13 -0
  178. package/dist/perform-seek.js +29 -0
  179. package/dist/readers/from-node.js +7 -8
  180. package/dist/readers/reader.d.ts +1 -1
  181. package/dist/register-track.d.ts +3 -3
  182. package/dist/run-parse-iteration.d.ts +8 -0
  183. package/dist/run-parse-iteration.js +48 -0
  184. package/dist/samples-from-moof.js +1 -1
  185. package/dist/state/aac-state.d.ts +13 -0
  186. package/dist/state/aac-state.js +17 -0
  187. package/dist/state/can-skip-tracks.d.ts +8 -1
  188. package/dist/state/can-skip-tracks.js +42 -27
  189. package/dist/state/emitted-fields.js +4 -0
  190. package/dist/state/flac-state.d.ts +4 -0
  191. package/dist/state/flac-state.js +13 -0
  192. package/dist/state/has-tracks-section.d.ts +2 -1
  193. package/dist/state/has-tracks-section.js +4 -1
  194. package/dist/state/iso-base-media/cached-sample-positions.d.ts +15 -0
  195. package/dist/state/iso-base-media/cached-sample-positions.js +42 -0
  196. package/dist/state/iso-base-media/iso-state.d.ts +8 -0
  197. package/dist/state/iso-base-media/iso-state.js +15 -0
  198. package/dist/{may-skip-video-data → state}/may-skip-video-data.d.ts +1 -1
  199. package/dist/{may-skip-video-data → state}/may-skip-video-data.js +6 -2
  200. package/dist/{may-skip-video-data → state}/need-samples-for-fields.js +4 -0
  201. package/dist/state/parser-state.d.ts +131 -17
  202. package/dist/state/parser-state.js +18 -5
  203. package/dist/state/sample-callbacks.d.ts +6 -2
  204. package/dist/state/sample-callbacks.js +5 -2
  205. package/dist/state/slow-duration-fps.d.ts +2 -0
  206. package/dist/state/slow-duration-fps.js +18 -0
  207. package/dist/state/transport-stream.d.ts +8 -0
  208. package/dist/state/transport-stream.js +11 -0
  209. package/dist/state/video-section.d.ts +16 -0
  210. package/dist/state/video-section.js +37 -0
  211. package/dist/state/webm.d.ts +17 -2
  212. package/dist/state/webm.js +33 -1
  213. package/dist/version.d.ts +1 -1
  214. package/dist/version.js +1 -1
  215. package/dist/webcodec-sample-types.d.ts +3 -3
  216. package/package.json +3 -3
  217. package/test.json +663 -0
  218. package/dist/boxes/iso-base-media/get-children.d.ts +0 -14
  219. package/dist/boxes/iso-base-media/get-children.js +0 -39
  220. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -26
  221. package/dist/boxes/iso-base-media/mdat/mdat.js +0 -141
  222. package/dist/boxes/iso-base-media/moov/moov.d.ts +0 -19
  223. package/dist/boxes/iso-base-media/moov/moov.js +0 -27
  224. package/dist/boxes/iso-base-media/parse-boxes.d.ts +0 -15
  225. package/dist/boxes/iso-base-media/parse-boxes.js +0 -129
  226. package/dist/boxes/iso-base-media/parse-mdat-partially.d.ts +0 -12
  227. package/dist/boxes/iso-base-media/parse-mdat-partially.js +0 -33
  228. package/dist/boxes/iso-base-media/process-box.d.ts +0 -15
  229. package/dist/boxes/iso-base-media/stsd/mebx.js +0 -32
  230. package/dist/boxes/iso-base-media/trak/trak.d.ts +0 -19
  231. package/dist/boxes/iso-base-media/trak/trak.js +0 -27
  232. package/dist/boxes/mp3/get-tracks-from-mp3.d.ts +0 -4
  233. package/dist/boxes/mp3/id3-v2.d.ts +0 -0
  234. package/dist/boxes/mp3/id3-v2.js +0 -1
  235. package/dist/boxes/mp3/id3.d.ts +0 -8
  236. package/dist/boxes/riff/continue-after-riff-result.d.ts +0 -13
  237. package/dist/boxes/riff/continue-after-riff-result.js +0 -34
  238. package/dist/boxes/riff/expect-riff-box.d.ts +0 -19
  239. package/dist/boxes/riff/expect-riff-box.js +0 -50
  240. package/dist/boxes/riff/parse-box.js +0 -35
  241. package/dist/boxes/riff/parse-fmt-box.d.ts +0 -7
  242. package/dist/boxes/riff/parse-fmt-box.js +0 -33
  243. package/dist/boxes/riff/parse-list-box.d.ts +0 -10
  244. package/dist/boxes/riff/parse-list-box.js +0 -31
  245. package/dist/boxes/riff/parse-movi.d.ts +0 -17
  246. package/dist/boxes/riff/parse-riff-body.d.ts +0 -11
  247. package/dist/boxes/riff/parse-riff-body.js +0 -105
  248. package/dist/boxes/riff/parse-riff-box.d.ts +0 -12
  249. package/dist/boxes/riff/parse-strf.d.ts +0 -7
  250. package/dist/boxes/transport-stream/get-tracks.d.ts +0 -5
  251. package/dist/boxes/transport-stream/parse-packet.d.ts +0 -13
  252. package/dist/boxes/transport-stream/parse-stream-packet.d.ts +0 -15
  253. package/dist/boxes/transport-stream/parse-transport-stream.d.ts +0 -13
  254. package/dist/boxes/webm/parse-webm-header.js +0 -37
  255. package/dist/boxes/webm/segments/parse-children.d.ts +0 -23
  256. package/dist/boxes/webm/segments/parse-children.js +0 -144
  257. package/dist/boxes/webm/segments.d.ts +0 -15
  258. package/dist/boxes/webm/segments.js +0 -161
  259. package/dist/continue-mdat-routine.d.ts +0 -17
  260. package/dist/continue-mdat-routine.js +0 -92
  261. package/dist/parse-video.d.ts +0 -28
  262. package/dist/parse-video.js +0 -130
  263. /package/dist/{boxes/iso-base-media/base-type.js → containers/aac/types.js} +0 -0
  264. /package/dist/{boxes → containers}/avc/codec-string.d.ts +0 -0
  265. /package/dist/{boxes → containers}/avc/codec-string.js +0 -0
  266. /package/dist/{boxes → containers}/avc/color.d.ts +0 -0
  267. /package/dist/{boxes → containers}/avc/color.js +0 -0
  268. /package/dist/{boxes → containers}/avc/create-sps-pps-data.d.ts +0 -0
  269. /package/dist/{boxes → containers}/avc/create-sps-pps-data.js +0 -0
  270. /package/dist/{boxes → containers}/avc/interpret-sps.d.ts +0 -0
  271. /package/dist/{boxes → containers}/avc/interpret-sps.js +0 -0
  272. /package/dist/{boxes → containers}/avc/key.js +0 -0
  273. /package/dist/{boxes → containers}/avc/parse-avc.d.ts +0 -0
  274. /package/dist/{boxes → containers}/avc/parse-avc.js +0 -0
  275. /package/dist/{boxes → containers}/avc/sps-and-pps.d.ts +0 -0
  276. /package/dist/{boxes → containers}/avc/sps-and-pps.js +0 -0
  277. /package/dist/{boxes/iso-base-media/void-box.js → containers/flac/types.js} +0 -0
  278. /package/dist/{boxes/riff/riff-box.js → containers/iso-base-media/base-media-box.js} +0 -0
  279. /package/dist/{boxes → containers}/iso-base-media/base-type.d.ts +0 -0
  280. /package/dist/{boxes/transport-stream/boxes.js → containers/iso-base-media/base-type.js} +0 -0
  281. /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.d.ts +0 -0
  282. /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.js +0 -0
  283. /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.d.ts +0 -0
  284. /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.js +0 -0
  285. /package/dist/{boxes → containers}/iso-base-media/esds/esds.d.ts +0 -0
  286. /package/dist/{boxes → containers}/iso-base-media/esds/esds.js +0 -0
  287. /package/dist/{boxes → containers}/iso-base-media/ftyp.d.ts +0 -0
  288. /package/dist/{boxes → containers}/iso-base-media/ftyp.js +0 -0
  289. /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.d.ts +0 -0
  290. /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.js +0 -0
  291. /package/dist/{boxes → containers}/iso-base-media/get-keyframes.d.ts +0 -0
  292. /package/dist/{boxes → containers}/iso-base-media/get-keyframes.js +0 -0
  293. /package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.js +0 -0
  294. /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.d.ts +0 -0
  295. /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.js +0 -0
  296. /package/dist/{boxes → containers}/iso-base-media/make-track.d.ts +0 -0
  297. /package/dist/{boxes → containers}/iso-base-media/make-track.js +0 -0
  298. /package/dist/{boxes → containers}/iso-base-media/mdhd.d.ts +0 -0
  299. /package/dist/{boxes → containers}/iso-base-media/mdhd.js +0 -0
  300. /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.d.ts +0 -0
  301. /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.js +0 -0
  302. /package/dist/{boxes → containers}/iso-base-media/meta/ilst.d.ts +0 -0
  303. /package/dist/{boxes → containers}/iso-base-media/meta/ilst.js +0 -0
  304. /package/dist/{boxes → containers}/iso-base-media/mvhd.d.ts +0 -0
  305. /package/dist/{boxes → containers}/iso-base-media/mvhd.js +0 -0
  306. /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.d.ts +0 -0
  307. /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.js +0 -0
  308. /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.d.ts +0 -0
  309. /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.js +0 -0
  310. /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.d.ts +0 -0
  311. /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.js +0 -0
  312. /package/dist/{boxes → containers}/iso-base-media/stsd/colr.d.ts +0 -0
  313. /package/dist/{boxes → containers}/iso-base-media/stsd/colr.js +0 -0
  314. /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.d.ts +0 -0
  315. /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.js +0 -0
  316. /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.d.ts +0 -0
  317. /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.js +0 -0
  318. /package/dist/{boxes → containers}/iso-base-media/stsd/keys.d.ts +0 -0
  319. /package/dist/{boxes → containers}/iso-base-media/stsd/keys.js +0 -0
  320. /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.d.ts +0 -0
  321. /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.js +0 -0
  322. /package/dist/{boxes → containers}/iso-base-media/stsd/stco.d.ts +0 -0
  323. /package/dist/{boxes → containers}/iso-base-media/stsd/stco.js +0 -0
  324. /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.d.ts +0 -0
  325. /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.js +0 -0
  326. /package/dist/{boxes → containers}/iso-base-media/stsd/stss.d.ts +0 -0
  327. /package/dist/{boxes → containers}/iso-base-media/stsd/stss.js +0 -0
  328. /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.d.ts +0 -0
  329. /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.js +0 -0
  330. /package/dist/{boxes → containers}/iso-base-media/stsd/stts.d.ts +0 -0
  331. /package/dist/{boxes → containers}/iso-base-media/stsd/stts.js +0 -0
  332. /package/dist/{boxes → containers}/iso-base-media/tfdt.d.ts +0 -0
  333. /package/dist/{boxes → containers}/iso-base-media/tfdt.js +0 -0
  334. /package/dist/{boxes → containers}/iso-base-media/tfhd.d.ts +0 -0
  335. /package/dist/{boxes → containers}/iso-base-media/tfhd.js +0 -0
  336. /package/dist/{boxes → containers}/iso-base-media/tkhd.d.ts +0 -0
  337. /package/dist/{boxes → containers}/iso-base-media/tkhd.js +0 -0
  338. /package/dist/{boxes → containers}/iso-base-media/to-date.d.ts +0 -0
  339. /package/dist/{boxes → containers}/iso-base-media/to-date.js +0 -0
  340. /package/dist/{boxes → containers}/iso-base-media/trun.d.ts +0 -0
  341. /package/dist/{boxes → containers}/iso-base-media/trun.js +0 -0
  342. /package/dist/{boxes → containers}/iso-base-media/void-box.d.ts +0 -0
  343. /package/dist/{boxes → containers}/mp3/get-duration.d.ts +0 -0
  344. /package/dist/{boxes → containers}/mp3/get-duration.js +0 -0
  345. /package/dist/{boxes → containers}/mp3/get-frame-length.d.ts +0 -0
  346. /package/dist/{boxes → containers}/mp3/get-frame-length.js +0 -0
  347. /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.d.ts +0 -0
  348. /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.js +0 -0
  349. /package/dist/{boxes → containers}/mp3/id3-v1.d.ts +0 -0
  350. /package/dist/{boxes → containers}/mp3/id3-v1.js +0 -0
  351. /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.d.ts +0 -0
  352. /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.js +0 -0
  353. /package/dist/{boxes → containers}/riff/is-movi.d.ts +0 -0
  354. /package/dist/{boxes → containers}/riff/is-movi.js +0 -0
  355. /package/dist/{boxes → containers}/riff/parse-avih.d.ts +0 -0
  356. /package/dist/{boxes → containers}/riff/parse-avih.js +0 -0
  357. /package/dist/{boxes → containers}/riff/parse-isft.d.ts +0 -0
  358. /package/dist/{boxes → containers}/riff/parse-isft.js +0 -0
  359. /package/dist/{boxes → containers}/riff/parse-strh.d.ts +0 -0
  360. /package/dist/{boxes → containers}/riff/timescale.d.ts +0 -0
  361. /package/dist/{boxes → containers}/riff/timescale.js +0 -0
  362. /package/dist/{boxes → containers}/transport-stream/adts-header.d.ts +0 -0
  363. /package/dist/{boxes → containers}/transport-stream/adts-header.js +0 -0
  364. /package/dist/{boxes → containers}/transport-stream/boxes.d.ts +0 -0
  365. /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.d.ts +0 -0
  366. /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.js +0 -0
  367. /package/dist/{boxes → containers}/transport-stream/find-separator.d.ts +0 -0
  368. /package/dist/{boxes → containers}/transport-stream/find-separator.js +0 -0
  369. /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.d.ts +0 -0
  370. /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.js +0 -0
  371. /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.d.ts +0 -0
  372. /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.js +0 -0
  373. /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.d.ts +0 -0
  374. /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.js +0 -0
  375. /package/dist/{boxes → containers}/transport-stream/parse-pat.d.ts +0 -0
  376. /package/dist/{boxes → containers}/transport-stream/parse-pat.js +0 -0
  377. /package/dist/{boxes → containers}/transport-stream/parse-pes.d.ts +0 -0
  378. /package/dist/{boxes → containers}/transport-stream/parse-pes.js +0 -0
  379. /package/dist/{boxes → containers}/transport-stream/parse-pmt.d.ts +0 -0
  380. /package/dist/{boxes → containers}/transport-stream/parse-pmt.js +0 -0
  381. /package/dist/{boxes → containers}/transport-stream/traversal.d.ts +0 -0
  382. /package/dist/{boxes → containers}/transport-stream/traversal.js +0 -0
  383. /package/dist/{boxes → containers}/webm/allowed-partial-segments.d.ts +0 -0
  384. /package/dist/{boxes → containers}/webm/allowed-partial-segments.js +0 -0
  385. /package/dist/{boxes → containers}/webm/av1-codec-private.d.ts +0 -0
  386. /package/dist/{boxes → containers}/webm/av1-codec-private.js +0 -0
  387. /package/dist/{boxes → containers}/webm/color.d.ts +0 -0
  388. /package/dist/{boxes → containers}/webm/color.js +0 -0
  389. /package/dist/{boxes → containers}/webm/description.d.ts +0 -0
  390. /package/dist/{boxes → containers}/webm/description.js +0 -0
  391. /package/dist/{boxes → containers}/webm/get-ready-tracks.d.ts +0 -0
  392. /package/dist/{boxes → containers}/webm/get-ready-tracks.js +0 -0
  393. /package/dist/{boxes → containers}/webm/get-sample-from-block.d.ts +0 -0
  394. /package/dist/{boxes → containers}/webm/get-sample-from-block.js +0 -0
  395. /package/dist/{boxes → containers}/webm/make-track.d.ts +0 -0
  396. /package/dist/{boxes → containers}/webm/make-track.js +0 -0
  397. /package/dist/{boxes → containers}/webm/segments/all-segments.d.ts +0 -0
  398. /package/dist/{boxes → containers}/webm/segments/all-segments.js +0 -0
  399. /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.d.ts +0 -0
  400. /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.js +0 -0
  401. /package/dist/{boxes → containers}/webm/segments/track-entry.d.ts +0 -0
  402. /package/dist/{boxes → containers}/webm/segments/track-entry.js +0 -0
  403. /package/dist/{boxes → containers}/webm/traversal.d.ts +0 -0
  404. /package/dist/{boxes → containers}/webm/traversal.js +0 -0
  405. /package/dist/{may-skip-video-data → state}/need-samples-for-fields.d.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addAvcProfileToTrack = void 0;
4
- const codec_string_1 = require("./boxes/avc/codec-string");
5
- const create_sps_pps_data_1 = require("./boxes/avc/create-sps-pps-data");
4
+ const codec_string_1 = require("./containers/avc/codec-string");
5
+ const create_sps_pps_data_1 = require("./containers/avc/create-sps-pps-data");
6
6
  const addAvcProfileToTrack = (track, avc1Profile) => {
7
7
  if (avc1Profile === null) {
8
8
  return track;
@@ -12,16 +12,15 @@ export declare class OffsetCounter {
12
12
  export declare const getArrayBufferIterator: (initialData: Uint8Array, maxBytes: number | null) => {
13
13
  startReadingBits: () => void;
14
14
  stopReadingBits: () => void;
15
- skipTo: (offset: number, reset: boolean) => void;
15
+ skipTo: (offset: number) => void;
16
16
  addData: (newData: Uint8Array) => void;
17
17
  counter: OffsetCounter;
18
18
  peekB: (length: number) => void;
19
19
  peekD: (length: number) => void;
20
20
  getBits: (bits: number) => number;
21
- byteLength: () => number;
22
21
  bytesRemaining: () => number;
23
22
  leb128: () => number;
24
- removeBytesRead: () => void;
23
+ removeBytesRead: (force: boolean) => number | undefined;
25
24
  discard: (length: number) => void;
26
25
  getEightByteNumber: (littleEndian?: boolean) => number;
27
26
  getFourByteNumber: () => number;
@@ -58,8 +57,6 @@ export declare const getArrayBufferIterator: (initialData: Uint8Array, maxBytes:
58
57
  getInt32Le: () => number;
59
58
  getInt32: () => number;
60
59
  destroy: () => void;
61
- disallowDiscard: () => void;
62
- allowDiscard: () => void;
63
60
  startBox: (size: number) => {
64
61
  discardRest: () => void;
65
62
  expectNoMoreBytes: () => void;
@@ -68,5 +65,6 @@ export declare const getArrayBufferIterator: (initialData: Uint8Array, maxBytes:
68
65
  startCheckpoint: () => {
69
66
  returnToCheckpoint: () => void;
70
67
  };
68
+ getFlacCodecNumber: () => number;
71
69
  };
72
70
  export type BufferIterator = ReturnType<typeof getArrayBufferIterator>;
@@ -14,7 +14,7 @@ var _OffsetCounter_offset, _OffsetCounter_discardedBytes;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.getArrayBufferIterator = exports.OffsetCounter = void 0;
16
16
  /* eslint-disable @typescript-eslint/no-use-before-define */
17
- const all_segments_1 = require("./boxes/webm/segments/all-segments");
17
+ const all_segments_1 = require("./containers/webm/segments/all-segments");
18
18
  const file_types_1 = require("./file-types");
19
19
  class OffsetCounter {
20
20
  constructor(initial) {
@@ -65,11 +65,10 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
65
65
  if (!buf.resize) {
66
66
  throw new Error('`ArrayBuffer.resize` is not supported in this Runtime. On the server: Use at least Node.js 20 or Bun. In the browser: Chrome 111, Edge 111, Safari 16.4, Firefox 128, Opera 111');
67
67
  }
68
- let data = new Uint8Array(buf);
69
- data.set(initialData);
70
- let view = new DataView(data.buffer);
68
+ let uintArray = new Uint8Array(buf);
69
+ uintArray.set(initialData);
70
+ let view = new DataView(uintArray.buffer);
71
71
  const counter = makeOffsetCounter();
72
- let discardAllowed = true;
73
72
  const startCheckpoint = () => {
74
73
  const checkpoint = counter.getOffset();
75
74
  return {
@@ -79,16 +78,10 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
79
78
  };
80
79
  };
81
80
  const getSlice = (amount) => {
82
- const value = data.slice(counter.getDiscardedOffset(), counter.getDiscardedOffset() + amount);
81
+ const value = uintArray.slice(counter.getDiscardedOffset(), counter.getDiscardedOffset() + amount);
83
82
  counter.increment(amount);
84
83
  return value;
85
84
  };
86
- const disallowDiscard = () => {
87
- discardAllowed = false;
88
- };
89
- const allowDiscard = () => {
90
- discardAllowed = true;
91
- };
92
85
  const discard = (length) => {
93
86
  counter.increment(length);
94
87
  };
@@ -199,56 +192,50 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
199
192
  const addData = (newData) => {
200
193
  const oldLength = buf.byteLength;
201
194
  const newLength = oldLength + newData.byteLength;
195
+ if (newLength < oldLength) {
196
+ throw new Error('Cannot decrement size');
197
+ }
198
+ if (newLength > (maxBytes !== null && maxBytes !== void 0 ? maxBytes : Infinity)) {
199
+ throw new Error(`Exceeded maximum byte length ${maxBytes} with ${newLength}`);
200
+ }
202
201
  buf.resize(newLength);
203
202
  const newArray = new Uint8Array(buf);
204
203
  newArray.set(newData, oldLength);
205
- data = newArray;
206
- view = new DataView(data.buffer);
207
- };
208
- const byteLength = () => {
209
- return data.byteLength;
204
+ uintArray = newArray;
205
+ view = new DataView(uintArray.buffer);
210
206
  };
211
207
  const bytesRemaining = () => {
212
- return data.byteLength - counter.getDiscardedOffset();
208
+ return uintArray.byteLength - counter.getDiscardedOffset();
213
209
  };
214
- const removeBytesRead = () => {
215
- if (!discardAllowed) {
216
- return;
217
- }
210
+ const removeBytesRead = (force) => {
218
211
  const bytesToRemove = counter.getDiscardedOffset();
219
212
  // Only do this operation if it is really worth it 😇
220
- if (bytesToRemove < 100000) {
213
+ // let's set the threshold to 3MB
214
+ if (bytesToRemove < 3000000 && !force) {
215
+ return;
216
+ }
217
+ // Don't remove if the data is not even available
218
+ if (view.byteLength < bytesToRemove && !force) {
221
219
  return;
222
220
  }
223
221
  counter.discardBytes(bytesToRemove);
224
- const newData = data.slice(bytesToRemove);
225
- data.set(newData);
222
+ const newData = uintArray.slice(bytesToRemove);
223
+ uintArray.set(newData);
226
224
  buf.resize(newData.byteLength);
227
- view = new DataView(data.buffer);
225
+ view = new DataView(uintArray.buffer);
226
+ return bytesToRemove;
228
227
  };
229
- const skipTo = (offset, reset) => {
228
+ const skipTo = (offset) => {
230
229
  const becomesSmaller = offset < counter.getOffset();
231
- if (becomesSmaller) {
232
- if (reset) {
233
- buf.resize(0);
234
- counter.decrement(counter.getOffset() - offset);
235
- counter.setDiscardedOffset(offset);
236
- }
237
- else {
238
- const toDecrement = counter.getOffset() - offset;
239
- const newOffset = counter.getOffset() - toDecrement;
240
- counter.decrement(toDecrement);
241
- const c = counter.getDiscardedBytes();
242
- if (c > newOffset) {
243
- throw new Error('already discarded too many bytes');
244
- }
245
- }
246
- }
247
- else {
230
+ if (!becomesSmaller) {
248
231
  const currentOffset = counter.getOffset();
249
232
  counter.increment(offset - currentOffset);
250
- removeBytesRead();
233
+ removeBytesRead(true);
234
+ return;
251
235
  }
236
+ buf.resize(0);
237
+ counter.decrement(counter.getOffset() - offset);
238
+ counter.setDiscardedOffset(offset);
252
239
  };
253
240
  const readExpGolomb = () => {
254
241
  if (!bitReadingMode) {
@@ -299,6 +286,37 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
299
286
  bitReadingMode = true;
300
287
  byteToShift = getUint8();
301
288
  };
289
+ // https://www.rfc-editor.org/rfc/rfc9639.html#name-coded-number
290
+ const getFlacCodecNumber = () => {
291
+ let ones = 0;
292
+ let bits = 0;
293
+ // eslint-disable-next-line no-constant-binary-expression
294
+ while ((++bits || true) && getBits(1) === 1) {
295
+ ones++;
296
+ }
297
+ if (ones === 0) {
298
+ return getBits(7);
299
+ }
300
+ const bitArray = [];
301
+ const firstByteBits = 8 - ones - 1;
302
+ for (let i = 0; i < firstByteBits; i++) {
303
+ bitArray.unshift(getBits(1));
304
+ }
305
+ const extraBytes = ones - 1;
306
+ for (let i = 0; i < extraBytes; i++) {
307
+ for (let j = 0; j < 8; j++) {
308
+ const val = getBits(1);
309
+ if (j < 2) {
310
+ continue;
311
+ }
312
+ bitArray.unshift(val);
313
+ }
314
+ }
315
+ const encoded = bitArray.reduce((acc, bit, index) => {
316
+ return acc | (bit << index);
317
+ }, 0);
318
+ return encoded;
319
+ };
302
320
  const getBits = (bits) => {
303
321
  let result = 0;
304
322
  let bitsCollected = 0;
@@ -319,7 +337,7 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
319
337
  return result;
320
338
  };
321
339
  const destroy = () => {
322
- data = new Uint8Array(0);
340
+ uintArray = new Uint8Array(0);
323
341
  buf.resize(0);
324
342
  };
325
343
  return {
@@ -331,7 +349,6 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
331
349
  peekB,
332
350
  peekD,
333
351
  getBits,
334
- byteLength,
335
352
  bytesRemaining,
336
353
  leb128,
337
354
  removeBytesRead,
@@ -344,7 +361,7 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
344
361
  return new TextDecoder().decode(atom);
345
362
  },
346
363
  detectFileType: () => {
347
- return (0, file_types_1.detectFileType)(data);
364
+ return (0, file_types_1.detectFileType)(uintArray);
348
365
  },
349
366
  getPaddedFourByteNumber,
350
367
  getMatroskaSegmentId: () => {
@@ -536,11 +553,10 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
536
553
  getInt32Le,
537
554
  getInt32,
538
555
  destroy,
539
- disallowDiscard,
540
- allowDiscard,
541
556
  startBox,
542
557
  readExpGolomb,
543
558
  startCheckpoint,
559
+ getFlacCodecNumber,
544
560
  };
545
561
  };
546
562
  exports.getArrayBufferIterator = getArrayBufferIterator;
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseAac: (state: ParserState) => Promise<ParseResult>;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAac = void 0;
4
+ const aac_codecprivate_1 = require("../../aac-codecprivate");
5
+ const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
6
+ const register_track_1 = require("../../register-track");
7
+ const parseAac = async (state) => {
8
+ const { iterator } = state;
9
+ const startOffset = iterator.counter.getOffset();
10
+ iterator.startReadingBits();
11
+ const syncWord = iterator.getBits(12);
12
+ if (syncWord !== 0xfff) {
13
+ throw new Error('Invalid syncword: ' + syncWord);
14
+ }
15
+ const id = iterator.getBits(1);
16
+ if (id !== 0) {
17
+ throw new Error('Only supporting MPEG-4 for .aac');
18
+ }
19
+ const layer = iterator.getBits(2);
20
+ if (layer !== 0) {
21
+ throw new Error('Only supporting layer 0 for .aac');
22
+ }
23
+ const protectionAbsent = iterator.getBits(1); // protection absent
24
+ const audioObjectType = iterator.getBits(2); // 1 = 'AAC-LC'
25
+ const samplingFrequencyIndex = iterator.getBits(4);
26
+ const sampleRate = (0, aac_codecprivate_1.getSampleRateFromSampleFrequencyIndex)(samplingFrequencyIndex);
27
+ iterator.getBits(1); // private bit
28
+ const channelConfiguration = iterator.getBits(3);
29
+ const codecPrivate = (0, aac_codecprivate_1.createAacCodecPrivate)({
30
+ audioObjectType,
31
+ sampleRate,
32
+ channelConfiguration,
33
+ });
34
+ iterator.getBits(1); // originality
35
+ iterator.getBits(1); // home
36
+ iterator.getBits(1); // copyright bit
37
+ iterator.getBits(1); // copy start
38
+ const frameLength = iterator.getBits(13); // frame length
39
+ iterator.getBits(11); // buffer fullness
40
+ iterator.getBits(2); // number of AAC frames minus 1
41
+ if (!protectionAbsent) {
42
+ iterator.getBits(16); // crc
43
+ }
44
+ iterator.stopReadingBits();
45
+ iterator.counter.decrement(iterator.counter.getOffset() - startOffset);
46
+ const data = iterator.getSlice(frameLength);
47
+ if (state.callbacks.tracks.getTracks().length === 0) {
48
+ await (0, register_track_1.registerTrack)({
49
+ state,
50
+ container: 'aac',
51
+ track: {
52
+ codec: (0, aac_codecprivate_1.mapAudioObjectTypeToCodecString)(audioObjectType),
53
+ codecWithoutConfig: 'aac',
54
+ codecPrivate,
55
+ description: codecPrivate,
56
+ numberOfChannels: channelConfiguration,
57
+ sampleRate,
58
+ timescale: 1000000,
59
+ trackId: 0,
60
+ trakBox: null,
61
+ type: 'audio',
62
+ },
63
+ });
64
+ state.callbacks.tracks.setIsDone();
65
+ }
66
+ const duration = 1024 / sampleRate;
67
+ const { index } = state.aac.addSample({ offset: startOffset, size: frameLength });
68
+ const timestamp = (1024 / sampleRate) * index;
69
+ // One ADTS frame contains 1024 samples
70
+ await state.callbacks.onAudioSample(0, (0, convert_audio_or_video_sample_1.convertAudioOrVideoSampleToWebCodecsTimestamps)({
71
+ duration,
72
+ type: 'key',
73
+ data,
74
+ offset: startOffset,
75
+ timescale: 1000000,
76
+ trackId: 0,
77
+ cts: timestamp,
78
+ dts: timestamp,
79
+ timestamp,
80
+ }, 1));
81
+ return Promise.resolve({ skipTo: null });
82
+ };
83
+ exports.parseAac = parseAac;
@@ -0,0 +1,4 @@
1
+ export type AacStructure = {
2
+ type: 'aac';
3
+ boxes: never[];
4
+ };
@@ -1,2 +1,2 @@
1
1
  import type { AvcInfo } from './parse-avc';
2
- export declare const getKeyFrameOrDeltaFromAvcInfo: (infos: AvcInfo[]) => "delta" | "key";
2
+ export declare const getKeyFrameOrDeltaFromAvcInfo: (infos: AvcInfo[]) => "key" | "delta";
@@ -0,0 +1,2 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ export declare const getBlockSize: (iterator: BufferIterator) => number | "uncommon-u16" | "uncommon-u8";
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBlockSize = void 0;
4
+ const getBlockSize = (iterator) => {
5
+ const bits = iterator.getBits(4);
6
+ if (bits === 0b0000) {
7
+ throw new Error('Reserved block size');
8
+ }
9
+ if (bits === 0b0001) {
10
+ return 192;
11
+ }
12
+ if (bits >= 0b0010 && bits <= 0b0101) {
13
+ return 144 * 2 ** bits;
14
+ }
15
+ if (bits === 0b0110) {
16
+ return 'uncommon-u8';
17
+ }
18
+ if (bits === 0b0111) {
19
+ return 'uncommon-u16';
20
+ }
21
+ if (bits >= 0b1000 && bits <= 0b1111) {
22
+ return 2 ** bits;
23
+ }
24
+ throw new Error('Invalid block size');
25
+ };
26
+ exports.getBlockSize = getBlockSize;
@@ -0,0 +1,2 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ export declare const getChannelCount: (iterator: BufferIterator) => 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChannelCount = void 0;
4
+ // https://www.rfc-editor.org/rfc/rfc9639.html#name-channels-bits
5
+ const getChannelCount = (iterator) => {
6
+ const bits = iterator.getBits(4);
7
+ if (bits === 0b0000) {
8
+ return 1;
9
+ }
10
+ if (bits === 0b0001) {
11
+ return 2;
12
+ }
13
+ if (bits === 0b0010) {
14
+ return 3;
15
+ }
16
+ if (bits === 0b0011) {
17
+ return 4;
18
+ }
19
+ if (bits === 0b0100) {
20
+ return 5;
21
+ }
22
+ if (bits === 0b0101) {
23
+ return 6;
24
+ }
25
+ if (bits === 0b0110) {
26
+ return 7;
27
+ }
28
+ if (bits === 0b0111) {
29
+ return 8;
30
+ }
31
+ if (bits === 0b1000 || bits === 0b1001 || bits === 0b1010) {
32
+ return 2;
33
+ }
34
+ throw new Error(`Invalid channel count: ${bits.toString(2)}`);
35
+ };
36
+ exports.getChannelCount = getChannelCount;
@@ -0,0 +1,2 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ export declare const getDurationFromFlac: (parserState: ParserState) => number;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDurationFromFlac = void 0;
4
+ const getDurationFromFlac = (parserState) => {
5
+ const structure = parserState.structure.getStructure();
6
+ if (structure.type !== 'flac') {
7
+ throw new Error('Not a FLAC file');
8
+ }
9
+ const streaminfo = structure.boxes.find((b) => b.type === 'flac-streaminfo');
10
+ if (!streaminfo) {
11
+ throw new Error('Streaminfo not found');
12
+ }
13
+ return streaminfo.totalSamples / streaminfo.sampleRate;
14
+ };
15
+ exports.getDurationFromFlac = getDurationFromFlac;
@@ -0,0 +1,2 @@
1
+ import type { FlacStructure } from './types';
2
+ export declare const getMetadataFromFlac: (structure: FlacStructure) => import("../..").MetadataEntry[] | null;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMetadataFromFlac = void 0;
4
+ const getMetadataFromFlac = (structure) => {
5
+ const box = structure.boxes.find((b) => b.type === 'flac-vorbis-comment');
6
+ if (!box) {
7
+ return null;
8
+ }
9
+ return box.fields;
10
+ };
11
+ exports.getMetadataFromFlac = getMetadataFromFlac;
@@ -0,0 +1,3 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const getSampleRate: (iterator: BufferIterator, state: ParserState) => number | "uncommon-u8" | "uncommon-u16" | "uncommon-u16-10";
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSampleRate = void 0;
4
+ // https://www.rfc-editor.org/rfc/rfc9639.html#name-sample-rate-bits
5
+ const getSampleRate = (iterator, state) => {
6
+ var _a, _b;
7
+ const mode = iterator.getBits(4);
8
+ if (mode === 0b0000) {
9
+ const structure = state.structure.getStructure();
10
+ const sampleRate = (_b = (_a = structure.boxes.find((box) => box.type === 'flac-streaminfo')) === null || _a === void 0 ? void 0 : _a.sampleRate) !== null && _b !== void 0 ? _b : null;
11
+ if (sampleRate === null) {
12
+ throw new Error('Sample rate not found');
13
+ }
14
+ return sampleRate;
15
+ }
16
+ if (mode === 0b0001) {
17
+ return 88200;
18
+ }
19
+ if (mode === 0b0010) {
20
+ return 176400;
21
+ }
22
+ if (mode === 0b0011) {
23
+ return 192000;
24
+ }
25
+ if (mode === 0b0100) {
26
+ return 8000;
27
+ }
28
+ if (mode === 0b0101) {
29
+ return 16000;
30
+ }
31
+ if (mode === 0b0110) {
32
+ return 22050;
33
+ }
34
+ if (mode === 0b0111) {
35
+ return 24000;
36
+ }
37
+ if (mode === 0b1000) {
38
+ return 32000;
39
+ }
40
+ if (mode === 0b1001) {
41
+ return 44100;
42
+ }
43
+ if (mode === 0b1010) {
44
+ return 48000;
45
+ }
46
+ if (mode === 0b1011) {
47
+ return 96000;
48
+ }
49
+ if (mode === 0b1100) {
50
+ return 'uncommon-u8';
51
+ }
52
+ if (mode === 0b1101) {
53
+ return 'uncommon-u16';
54
+ }
55
+ if (mode === 0b1110) {
56
+ return 'uncommon-u16-10';
57
+ }
58
+ throw new Error(`Invalid sample rate mode: ${mode.toString(2)}`);
59
+ };
60
+ exports.getSampleRate = getSampleRate;
@@ -0,0 +1,15 @@
1
+ import { type BufferIterator } from '../../buffer-iterator';
2
+ import type { ParseResult } from '../../parse-result';
3
+ import type { ParserState } from '../../state/parser-state';
4
+ export declare const parseFrameHeader: ({ iterator, state, }: {
5
+ iterator: BufferIterator;
6
+ state: ParserState;
7
+ }) => {
8
+ num: number;
9
+ blockSize: number;
10
+ sampleRate: number;
11
+ } | null;
12
+ export declare const parseFlacFrame: ({ state, iterator, }: {
13
+ state: ParserState;
14
+ iterator: BufferIterator;
15
+ }) => Promise<ParseResult>;