@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
@@ -12,6 +12,7 @@ export declare const isTransportStream: (data: Uint8Array) => boolean;
12
12
  export declare const isMp3: (data: Uint8Array) => boolean;
13
13
  export declare const isGif: (data: Uint8Array) => boolean;
14
14
  export declare const isAac: (data: Uint8Array) => boolean;
15
+ export declare const isFlac: (data: Uint8Array) => boolean;
15
16
  export type RiffType = {
16
17
  type: 'riff';
17
18
  };
@@ -36,7 +37,10 @@ export type WavType = {
36
37
  export type GifType = {
37
38
  type: 'gif';
38
39
  };
40
+ export type FlacType = {
41
+ type: 'flac';
42
+ };
39
43
  export type UnknownType = {
40
44
  type: 'unknown';
41
45
  };
42
- export type FileType = JpegType | WebpType | RiffType | WebmType | WavType | PdfType | AacType | IsoBaseMediaType | TransportStreamType | Mp3Type | GifType | PngType | BmpType | AacType | UnknownType;
46
+ export type FileType = JpegType | WebpType | RiffType | WebmType | WavType | PdfType | AacType | IsoBaseMediaType | TransportStreamType | Mp3Type | GifType | PngType | BmpType | AacType | FlacType | UnknownType;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAac = exports.isGif = exports.isMp3 = exports.isTransportStream = exports.isIsoBaseMedia = exports.isWebm = exports.isRiffWave = exports.isRiffAvi = exports.matchesPattern = void 0;
3
+ exports.isFlac = exports.isAac = exports.isGif = exports.isMp3 = exports.isTransportStream = exports.isIsoBaseMedia = exports.isWebm = exports.isRiffWave = exports.isRiffAvi = exports.matchesPattern = void 0;
4
4
  const webmPattern = new Uint8Array([0x1a, 0x45, 0xdf, 0xa3]);
5
5
  const matchesPattern = (pattern) => {
6
6
  return (data) => {
@@ -43,10 +43,12 @@ const isTransportStream = (data) => {
43
43
  exports.isTransportStream = isTransportStream;
44
44
  const isMp3 = (data) => {
45
45
  const mpegPattern = new Uint8Array([0xff, 0xf3, 0xe4, 0x64]);
46
- const id3v3Pattern = new Uint8Array([73, 68, 51, 3]);
47
- const id3v2Pattern = new Uint8Array([73, 68, 51, 2]);
46
+ const id3v4Pattern = new Uint8Array([0x49, 0x44, 0x33, 4]);
47
+ const id3v3Pattern = new Uint8Array([0x49, 0x44, 0x33, 3]);
48
+ const id3v2Pattern = new Uint8Array([0x49, 0x44, 0x33, 2]);
48
49
  const subarray = data.subarray(0, 4);
49
50
  return ((0, exports.matchesPattern)(mpegPattern)(subarray) ||
51
+ (0, exports.matchesPattern)(id3v4Pattern)(subarray) ||
50
52
  (0, exports.matchesPattern)(id3v3Pattern)(subarray) ||
51
53
  (0, exports.matchesPattern)(id3v2Pattern)(subarray));
52
54
  };
@@ -61,3 +63,8 @@ const isAac = (data) => {
61
63
  return (0, exports.matchesPattern)(aacPattern)(data.subarray(0, 2));
62
64
  };
63
65
  exports.isAac = isAac;
66
+ const isFlac = (data) => {
67
+ const flacPattern = new Uint8Array([0x66, 0x4c, 0x61, 0x43]);
68
+ return (0, exports.matchesPattern)(flacPattern)(data.subarray(0, 4));
69
+ };
70
+ exports.isFlac = isFlac;
@@ -17,6 +17,9 @@ const detectFileType = (data) => {
17
17
  if ((0, detect_file_type_1.isAac)(data)) {
18
18
  return { type: 'aac' };
19
19
  }
20
+ if ((0, detect_file_type_1.isFlac)(data)) {
21
+ return { type: 'flac' };
22
+ }
20
23
  const webp = (0, webp_1.isWebp)(data);
21
24
  if (webp) {
22
25
  return webp;
@@ -1,10 +1,9 @@
1
- import type { MoovBox } from './boxes/iso-base-media/moov/moov';
2
- import type { TrakBox } from './boxes/iso-base-media/trak/trak';
1
+ import type { MoovBox } from './containers/iso-base-media/moov/moov';
2
+ import type { TrakBox } from './containers/iso-base-media/trak/trak';
3
3
  import { type MediaParserAudioCodec } from './get-tracks';
4
- import type { Structure } from './parse-result';
5
4
  import type { ParserState } from './state/parser-state';
6
- export declare const getAudioCodec: (boxes: Structure, parserState: ParserState) => MediaParserAudioCodec | null;
7
- export declare const hasAudioCodec: (boxes: Structure, state: ParserState) => boolean;
5
+ export declare const getAudioCodec: (parserState: ParserState) => MediaParserAudioCodec | null;
6
+ export declare const hasAudioCodec: (state: ParserState) => boolean;
8
7
  type AudioCodecInfo = {
9
8
  format: string;
10
9
  primarySpecificator: number | null;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAudioCodecFromTrack = exports.getAudioCodecStringFromTrak = exports.getAudioCodecFromIso = exports.isLpcmAudioCodec = exports.getAudioCodecFromTrak = exports.getSampleRate = exports.getNumberOfChannelsFromTrak = exports.getCodecPrivateFromTrak = exports.hasAudioCodec = exports.getAudioCodec = void 0;
4
- const traversal_1 = require("./boxes/iso-base-media/traversal");
4
+ const traversal_1 = require("./containers/iso-base-media/traversal");
5
5
  const get_fps_1 = require("./get-fps");
6
6
  const get_tracks_1 = require("./get-tracks");
7
- const getAudioCodec = (boxes, parserState) => {
8
- const tracks = (0, get_tracks_1.getTracks)(boxes, parserState);
7
+ const getAudioCodec = (parserState) => {
8
+ const tracks = (0, get_tracks_1.getTracks)(parserState);
9
9
  const allTracks = tracks.audioTracks.length +
10
10
  tracks.otherTracks.length +
11
11
  tracks.videoTracks.length;
@@ -22,8 +22,8 @@ const getAudioCodec = (boxes, parserState) => {
22
22
  return null;
23
23
  };
24
24
  exports.getAudioCodec = getAudioCodec;
25
- const hasAudioCodec = (boxes, state) => {
26
- return (0, get_tracks_1.getHasTracks)(boxes, state);
25
+ const hasAudioCodec = (state) => {
26
+ return (0, get_tracks_1.getHasTracks)(state);
27
27
  };
28
28
  exports.hasAudioCodec = hasAudioCodec;
29
29
  const getCodecSpecificatorFromEsdsBox = ({ child, }) => {
@@ -1,4 +1,4 @@
1
- import type { ParseMediaContainer } from './options';
1
+ import type { MediaParserContainer } from './options';
2
2
  import type { Structure } from './parse-result';
3
- export declare const getContainer: (segments: Structure) => ParseMediaContainer;
3
+ export declare const getContainer: (segments: Structure) => MediaParserContainer;
4
4
  export declare const hasContainer: (boxes: Structure) => boolean;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasContainer = exports.getContainer = void 0;
4
- const traversal_1 = require("./boxes/riff/traversal");
4
+ const traversal_1 = require("./containers/riff/traversal");
5
5
  const getContainer = (segments) => {
6
6
  if (segments.type === 'iso-base-media') {
7
7
  return 'mp4';
@@ -15,12 +15,21 @@ const getContainer = (segments) => {
15
15
  if (segments.type === 'mp3') {
16
16
  return 'mp3';
17
17
  }
18
+ if (segments.type === 'wav') {
19
+ return 'wav';
20
+ }
21
+ if (segments.type === 'flac') {
22
+ return 'flac';
23
+ }
18
24
  if (segments.type === 'riff') {
19
25
  if ((0, traversal_1.isRiffAvi)(segments)) {
20
26
  return 'avi';
21
27
  }
22
28
  throw new Error('Unknown RIFF container ' + segments.type);
23
29
  }
30
+ if (segments.type === 'aac') {
31
+ return 'aac';
32
+ }
24
33
  throw new Error('Unknown container ' + segments);
25
34
  };
26
35
  exports.getContainer = getContainer;
@@ -1,4 +1,3 @@
1
- import type { Structure } from './parse-result';
2
1
  import type { ParserState } from './state/parser-state';
3
2
  export type Dimensions = {
4
3
  width: number;
@@ -9,5 +8,5 @@ export type ExpandedDimensions = Dimensions & {
9
8
  unrotatedWidth: number;
10
9
  unrotatedHeight: number;
11
10
  };
12
- export declare const getDimensions: (boxes: Structure, state: ParserState) => ExpandedDimensions | null;
13
- export declare const hasDimensions: (boxes: Structure, state: ParserState) => boolean;
11
+ export declare const getDimensions: (state: ParserState) => ExpandedDimensions | null;
12
+ export declare const hasDimensions: (state: ParserState) => boolean;
@@ -2,13 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasDimensions = exports.getDimensions = void 0;
4
4
  const get_tracks_1 = require("./get-tracks");
5
- const getDimensions = (boxes, state) => {
6
- const { videoTracks } = (0, get_tracks_1.getTracks)(boxes, state);
5
+ const is_audio_structure_1 = require("./is-audio-structure");
6
+ const getDimensions = (state) => {
7
+ const structure = state.structure.getStructureOrNull();
8
+ if (structure && (0, is_audio_structure_1.isAudioStructure)(structure)) {
9
+ return null;
10
+ }
11
+ const { videoTracks } = (0, get_tracks_1.getTracks)(state);
7
12
  if (!videoTracks.length) {
8
- if (boxes.type === 'mp3') {
9
- return null;
10
- }
11
- throw new Error('Expected video track');
13
+ return null;
12
14
  }
13
15
  const firstVideoTrack = videoTracks[0];
14
16
  return {
@@ -20,11 +22,13 @@ const getDimensions = (boxes, state) => {
20
22
  };
21
23
  };
22
24
  exports.getDimensions = getDimensions;
23
- // TODO: An audio track should return 'hasDimensions' = true on an audio file
24
- // and stop parsing
25
- const hasDimensions = (boxes, state) => {
25
+ const hasDimensions = (state) => {
26
+ const structure = state.structure.getStructureOrNull();
27
+ if (structure && (0, is_audio_structure_1.isAudioStructure)(structure)) {
28
+ return true;
29
+ }
26
30
  try {
27
- return (0, exports.getDimensions)(boxes, state) !== null;
31
+ return (0, exports.getDimensions)(state) !== null;
28
32
  }
29
33
  catch (_a) {
30
34
  return false;
@@ -1,10 +1,10 @@
1
- import type { AnySegment, Structure } from './parse-result';
1
+ import type { AnySegment } from './parse-result';
2
2
  import type { ParserState } from './state/parser-state';
3
3
  export declare const isMatroska: (boxes: AnySegment[]) => {
4
4
  type: "Segment";
5
- value: import("./boxes/webm/segments/all-segments").PossibleEbml[];
5
+ value: import("./containers/webm/segments/all-segments").PossibleEbml[];
6
6
  minVintWidth: number | null;
7
7
  } | undefined;
8
- export declare const getDuration: (structure: Structure, parserState: ParserState) => number | null;
9
- export declare const hasDuration: (structure: Structure, parserState: ParserState) => boolean;
10
- export declare const hasSlowDuration: (structure: Structure, parserState: ParserState) => boolean;
8
+ export declare const getDuration: (parserState: ParserState) => number | null;
9
+ export declare const hasDuration: (parserState: ParserState) => boolean;
10
+ export declare const hasSlowDuration: (parserState: ParserState) => boolean;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasSlowDuration = exports.hasDuration = exports.getDuration = exports.isMatroska = void 0;
4
- const get_sample_positions_from_track_1 = require("./boxes/iso-base-media/get-sample-positions-from-track");
5
- const traversal_1 = require("./boxes/iso-base-media/traversal");
6
- const get_duration_1 = require("./boxes/mp3/get-duration");
7
- const traversal_2 = require("./boxes/riff/traversal");
4
+ const get_duration_from_flac_1 = require("./containers/flac/get-duration-from-flac");
5
+ const get_sample_positions_from_track_1 = require("./containers/iso-base-media/get-sample-positions-from-track");
6
+ const traversal_1 = require("./containers/iso-base-media/traversal");
7
+ const get_duration_1 = require("./containers/mp3/get-duration");
8
+ const get_duration_2 = require("./containers/riff/get-duration");
9
+ const get_duration_from_wav_1 = require("./containers/wav/get-duration-from-wav");
8
10
  const get_tracks_1 = require("./get-tracks");
9
11
  const getDurationFromMatroska = (segments) => {
10
12
  const mainSegment = segments.find((s) => s.type === 'Segment');
@@ -35,7 +37,11 @@ const isMatroska = (boxes) => {
35
37
  return matroskaBox;
36
38
  };
37
39
  exports.isMatroska = isMatroska;
38
- const getDurationFromIsoBaseMedia = (structure, parserState) => {
40
+ const getDurationFromIsoBaseMedia = (parserState) => {
41
+ const structure = parserState.structure.getStructure();
42
+ if (structure.type !== 'iso-base-media') {
43
+ throw new Error('Expected iso-base-media');
44
+ }
39
45
  const moovBox = (0, traversal_1.getMoovBox)(structure.boxes);
40
46
  if (!moovBox) {
41
47
  return null;
@@ -51,7 +57,7 @@ const getDurationFromIsoBaseMedia = (structure, parserState) => {
51
57
  if (mvhdBox.durationInSeconds > 0) {
52
58
  return mvhdBox.durationInSeconds;
53
59
  }
54
- const tracks = (0, get_tracks_1.getTracks)(structure, parserState);
60
+ const tracks = (0, get_tracks_1.getTracks)(parserState);
55
61
  const allTracks = [
56
62
  ...tracks.videoTracks,
57
63
  ...tracks.audioTracks,
@@ -66,29 +72,16 @@ const getDurationFromIsoBaseMedia = (structure, parserState) => {
66
72
  const highestTimestamp = Math.max(...allSamples);
67
73
  return highestTimestamp;
68
74
  };
69
- const getDurationFromAvi = (structure) => {
70
- const strl = (0, traversal_2.getStrlBoxes)(structure);
71
- const lengths = [];
72
- for (const s of strl) {
73
- const strh = (0, traversal_2.getStrhBox)(s.children);
74
- if (!strh) {
75
- throw new Error('No strh box');
76
- }
77
- const samplesPerSecond = strh.rate / strh.scale;
78
- const streamLength = strh.length / samplesPerSecond;
79
- lengths.push(streamLength);
80
- }
81
- return Math.max(...lengths);
82
- };
83
- const getDuration = (structure, parserState) => {
75
+ const getDuration = (parserState) => {
76
+ const structure = parserState.structure.getStructure();
84
77
  if (structure.type === 'matroska') {
85
78
  return getDurationFromMatroska(structure.boxes);
86
79
  }
87
80
  if (structure.type === 'iso-base-media') {
88
- return getDurationFromIsoBaseMedia(structure, parserState);
81
+ return getDurationFromIsoBaseMedia(parserState);
89
82
  }
90
83
  if (structure.type === 'riff') {
91
- return getDurationFromAvi(structure);
84
+ return (0, get_duration_2.getDurationFromAvi)(structure);
92
85
  }
93
86
  if (structure.type === 'transport-stream') {
94
87
  return null;
@@ -96,20 +89,29 @@ const getDuration = (structure, parserState) => {
96
89
  if (structure.type === 'mp3') {
97
90
  return (0, get_duration_1.getDurationFromMp3)(parserState);
98
91
  }
92
+ if (structure.type === 'wav') {
93
+ return (0, get_duration_from_wav_1.getDurationFromWav)(parserState);
94
+ }
95
+ if (structure.type === 'aac') {
96
+ return null;
97
+ }
98
+ if (structure.type === 'flac') {
99
+ return (0, get_duration_from_flac_1.getDurationFromFlac)(parserState);
100
+ }
99
101
  throw new Error('Has no duration ' + structure);
100
102
  };
101
103
  exports.getDuration = getDuration;
102
104
  // `duration` just grabs from metadata, and otherwise returns null
103
105
  // Therefore just checking if we have tracks
104
- const hasDuration = (structure, parserState) => {
105
- return (0, get_tracks_1.getHasTracks)(structure, parserState);
106
+ const hasDuration = (parserState) => {
107
+ return (0, get_tracks_1.getHasTracks)(parserState);
106
108
  };
107
109
  exports.hasDuration = hasDuration;
108
110
  // `slowDuration` does through everything, and therefore is false
109
111
  // Unless it it somewhere in the metadata and is non-null
110
- const hasSlowDuration = (structure, parserState) => {
112
+ const hasSlowDuration = (parserState) => {
111
113
  try {
112
- return (0, exports.getDuration)(structure, parserState) !== null;
114
+ return (0, exports.getDuration)(parserState) !== null;
113
115
  }
114
116
  catch (_a) {
115
117
  return false;
@@ -26,6 +26,10 @@ const getFieldsFromCallback = ({ fields, callbacks, }) => {
26
26
  slowNumberOfFrames: Boolean(callbacks.onSlowNumberOfFrames),
27
27
  keyframes: Boolean(callbacks.onKeyframes),
28
28
  images: Boolean(callbacks.onImages),
29
+ numberOfAudioChannels: Boolean(callbacks.onNumberOfAudioChannels),
30
+ sampleRate: Boolean(callbacks.onSampleRate),
31
+ slowAudioBitrate: Boolean(callbacks.onSlowAudioBitrate),
32
+ slowVideoBitrate: Boolean(callbacks.onSlowVideoBitrate),
29
33
  ...fields,
30
34
  };
31
35
  return newFields;
package/dist/get-fps.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { TrakBox } from './boxes/iso-base-media/trak/trak';
1
+ import type { TrakBox } from './containers/iso-base-media/trak/trak';
2
2
  import type { Structure } from './parse-result';
3
3
  type TimescaleAndDuration = {
4
4
  timescale: number;
package/dist/get-fps.js CHANGED
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasFps = exports.hasFpsSuitedForSlowFps = exports.getFps = exports.getFpsFromMp4TrakBox = exports.getTimescaleAndDuration = exports.trakBoxContainsVideo = exports.trakBoxContainsAudio = void 0;
4
- const traversal_1 = require("./boxes/iso-base-media/traversal");
5
- const traversal_2 = require("./boxes/riff/traversal");
4
+ const traversal_1 = require("./containers/iso-base-media/traversal");
5
+ const traversal_2 = require("./containers/riff/traversal");
6
+ const is_audio_structure_1 = require("./is-audio-structure");
6
7
  const calculateFps = ({ sttsBox, timeScale, durationInSamples, }) => {
7
8
  let totalSamples = 0;
8
9
  for (const sample of sttsBox.sampleDistribution) {
@@ -101,10 +102,13 @@ const getFps = (segments) => {
101
102
  if (segments.type === 'transport-stream') {
102
103
  return null;
103
104
  }
104
- if (segments.type === 'mp3') {
105
+ if (segments.type === 'mp3' ||
106
+ segments.type === 'wav' ||
107
+ segments.type === 'flac' ||
108
+ segments.type === 'aac') {
105
109
  return null;
106
110
  }
107
- throw new Error('Cannot get fps, not implemented');
111
+ throw new Error('Cannot get fps, not implemented: ' + segments);
108
112
  };
109
113
  exports.getFps = getFps;
110
114
  const hasFpsSuitedForSlowFps = (boxes) => {
@@ -120,6 +124,10 @@ const hasFps = (boxes) => {
120
124
  // Matroska and Transport stream has no FPS metadata
121
125
  // Not bothering to parse
122
126
  // Users should use `slowFps` field
127
+ // same goes for audio
128
+ if ((0, is_audio_structure_1.isAudioStructure)(boxes)) {
129
+ return true;
130
+ }
123
131
  if (boxes.type === 'matroska') {
124
132
  return true;
125
133
  }
@@ -1,4 +1,3 @@
1
- import type { Structure } from './parse-result';
2
1
  import type { ParserState } from './state/parser-state';
3
- export declare const getIsHdr: (boxes: Structure, state: ParserState) => boolean;
4
- export declare const hasHdr: (boxes: Structure, state: ParserState) => boolean;
2
+ export declare const getIsHdr: (state: ParserState) => boolean;
3
+ export declare const hasHdr: (state: ParserState) => boolean;
@@ -7,12 +7,12 @@ const isVideoTrackHdr = (track) => {
7
7
  track.color.transferCharacteristics === 'arib-std-b67' &&
8
8
  track.color.primaries === 'bt2020');
9
9
  };
10
- const getIsHdr = (boxes, state) => {
11
- const { videoTracks } = (0, get_tracks_1.getTracks)(boxes, state);
10
+ const getIsHdr = (state) => {
11
+ const { videoTracks } = (0, get_tracks_1.getTracks)(state);
12
12
  return videoTracks.some((track) => isVideoTrackHdr(track));
13
13
  };
14
14
  exports.getIsHdr = getIsHdr;
15
- const hasHdr = (boxes, state) => {
16
- return (0, get_tracks_1.getHasTracks)(boxes, state);
15
+ const hasHdr = (state) => {
16
+ return (0, get_tracks_1.getHasTracks)(state);
17
17
  };
18
18
  exports.hasHdr = hasHdr;
@@ -2,4 +2,4 @@ import type { MediaParserKeyframe } from './options';
2
2
  import type { Structure } from './parse-result';
3
3
  import type { ParserState } from './state/parser-state';
4
4
  export declare const getKeyframes: (structure: Structure) => MediaParserKeyframe[] | null;
5
- export declare const hasKeyframes: (structure: Structure, parserState: ParserState) => boolean;
5
+ export declare const hasKeyframes: (parserState: ParserState) => boolean;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasKeyframes = exports.getKeyframes = void 0;
4
- const get_keyframes_1 = require("./boxes/iso-base-media/get-keyframes");
4
+ const get_keyframes_1 = require("./containers/iso-base-media/get-keyframes");
5
5
  const get_tracks_1 = require("./get-tracks");
6
6
  const getKeyframes = (structure) => {
7
7
  if (structure.type === 'iso-base-media') {
@@ -10,9 +10,10 @@ const getKeyframes = (structure) => {
10
10
  return null;
11
11
  };
12
12
  exports.getKeyframes = getKeyframes;
13
- const hasKeyframes = (structure, parserState) => {
13
+ const hasKeyframes = (parserState) => {
14
+ const structure = parserState.structure.getStructure();
14
15
  if (structure.type === 'iso-base-media') {
15
- return (0, get_tracks_1.getHasTracks)(structure, parserState);
16
+ return (0, get_tracks_1.getHasTracks)(parserState);
16
17
  }
17
18
  // Has, but will be null
18
19
  return true;
@@ -0,0 +1,3 @@
1
+ import type { ParserState } from './state/parser-state';
2
+ export declare const getNumberOfAudioChannels: (state: ParserState) => number | null;
3
+ export declare const hasNumberOfAudioChannels: (state: ParserState) => boolean;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasNumberOfAudioChannels = exports.getNumberOfAudioChannels = void 0;
4
+ const getNumberOfAudioChannels = (state) => {
5
+ var _a, _b;
6
+ return ((_b = (_a = state.callbacks.tracks.getTracks().find((track) => {
7
+ return track.type === 'audio';
8
+ })) === null || _a === void 0 ? void 0 : _a.numberOfChannels) !== null && _b !== void 0 ? _b : null);
9
+ };
10
+ exports.getNumberOfAudioChannels = getNumberOfAudioChannels;
11
+ const hasNumberOfAudioChannels = (state) => {
12
+ return state.callbacks.tracks.hasAllTracks();
13
+ };
14
+ exports.hasNumberOfAudioChannels = hasNumberOfAudioChannels;
@@ -1,11 +1,11 @@
1
- import type { Av1CBox } from './boxes/iso-base-media/stsd/av1c';
2
- import type { AvccBox } from './boxes/iso-base-media/stsd/avcc';
3
- import type { ColorParameterBox } from './boxes/iso-base-media/stsd/colr';
4
- import type { HvccBox } from './boxes/iso-base-media/stsd/hvcc';
5
- import type { PaspBox } from './boxes/iso-base-media/stsd/pasp';
6
- import type { VideoSample } from './boxes/iso-base-media/stsd/samples';
7
- import type { TkhdBox } from './boxes/iso-base-media/tkhd';
8
- import type { TrakBox } from './boxes/iso-base-media/trak/trak';
1
+ import type { Av1CBox } from './containers/iso-base-media/stsd/av1c';
2
+ import type { AvccBox } from './containers/iso-base-media/stsd/avcc';
3
+ import type { ColorParameterBox } from './containers/iso-base-media/stsd/colr';
4
+ import type { HvccBox } from './containers/iso-base-media/stsd/hvcc';
5
+ import type { PaspBox } from './containers/iso-base-media/stsd/pasp';
6
+ import type { VideoSample } from './containers/iso-base-media/stsd/samples';
7
+ import type { TkhdBox } from './containers/iso-base-media/tkhd';
8
+ import type { TrakBox } from './containers/iso-base-media/trak/trak';
9
9
  import type { Dimensions } from './get-dimensions';
10
10
  type AspectRatio = {
11
11
  numerator: number;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDisplayAspectRatio = exports.applyAspectRatios = exports.applyTkhdBox = exports.getColrBox = exports.getSampleAspectRatio = exports.getHvccBox = exports.getPaspBox = exports.getAv1CBox = exports.getAvccBox = exports.getStsdVideoConfig = void 0;
4
- const traversal_1 = require("./boxes/iso-base-media/traversal");
4
+ const traversal_1 = require("./containers/iso-base-media/traversal");
5
5
  const getStsdVideoConfig = (trakBox) => {
6
6
  const stsdBox = (0, traversal_1.getStsdBox)(trakBox);
7
7
  if (!stsdBox) {
@@ -1,3 +1,3 @@
1
- import type { TrakBox } from './boxes/iso-base-media/trak/trak';
1
+ import type { TrakBox } from './containers/iso-base-media/trak/trak';
2
2
  import type { SamplePosition } from './get-sample-positions';
3
3
  export declare const getSamplePositionsFromLpcm: (trakBox: TrakBox) => SamplePosition[];
@@ -3,7 +3,7 @@
3
3
  // We need to handle this case differently and treat each chunk as a sample instead
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.getSamplePositionsFromLpcm = void 0;
6
- const traversal_1 = require("./boxes/iso-base-media/traversal");
6
+ const traversal_1 = require("./containers/iso-base-media/traversal");
7
7
  // example video: mehmet.mov
8
8
  const getSamplePositionsFromLpcm = (trakBox) => {
9
9
  const stscBox = (0, traversal_1.getStscBox)(trakBox);
@@ -1,9 +1,9 @@
1
- import type { CttsBox } from './boxes/iso-base-media/stsd/ctts';
2
- import type { StcoBox } from './boxes/iso-base-media/stsd/stco';
3
- import type { StscBox } from './boxes/iso-base-media/stsd/stsc';
4
- import type { StssBox } from './boxes/iso-base-media/stsd/stss';
5
- import type { StszBox } from './boxes/iso-base-media/stsd/stsz';
6
- import type { SttsBox } from './boxes/iso-base-media/stsd/stts';
1
+ import type { CttsBox } from './containers/iso-base-media/stsd/ctts';
2
+ import type { StcoBox } from './containers/iso-base-media/stsd/stco';
3
+ import type { StscBox } from './containers/iso-base-media/stsd/stsc';
4
+ import type { StssBox } from './containers/iso-base-media/stsd/stss';
5
+ import type { StszBox } from './containers/iso-base-media/stsd/stsz';
6
+ import type { SttsBox } from './containers/iso-base-media/stsd/stts';
7
7
  export type SamplePosition = {
8
8
  offset: number;
9
9
  size: number;
@@ -0,0 +1,3 @@
1
+ import type { ParserState } from './state/parser-state';
2
+ export declare const getSampleRate: (state: ParserState) => number | null;
3
+ export declare const hasSampleRate: (state: ParserState) => boolean;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasSampleRate = exports.getSampleRate = void 0;
4
+ const getSampleRate = (state) => {
5
+ var _a, _b;
6
+ return ((_b = (_a = state.callbacks.tracks.getTracks().find((track) => {
7
+ return track.type === 'audio';
8
+ })) === null || _a === void 0 ? void 0 : _a.sampleRate) !== null && _b !== void 0 ? _b : null);
9
+ };
10
+ exports.getSampleRate = getSampleRate;
11
+ const hasSampleRate = (state) => {
12
+ return state.callbacks.tracks.hasAllTracks();
13
+ };
14
+ exports.hasSampleRate = hasSampleRate;
@@ -1,8 +1,9 @@
1
- import type { MatrixCoefficients, Primaries, TransferCharacteristics } from './boxes/avc/color';
2
- import type { MoovBox } from './boxes/iso-base-media/moov/moov';
3
- import type { TrakBox } from './boxes/iso-base-media/trak/trak';
4
- import type { AllTracks } from './boxes/riff/get-tracks-from-avi';
5
- import type { IsoBaseMediaBox, IsoBaseMediaStructure, Structure } from './parse-result';
1
+ import type { MatrixCoefficients, Primaries, TransferCharacteristics } from './containers/avc/color';
2
+ import type { IsoBaseMediaBox } from './containers/iso-base-media/base-media-box';
3
+ import type { MoovBox } from './containers/iso-base-media/moov/moov';
4
+ import type { TrakBox } from './containers/iso-base-media/trak/trak';
5
+ import type { AllTracks } from './containers/riff/get-tracks-from-avi';
6
+ import type { IsoBaseMediaStructure } from './parse-result';
6
7
  import type { ParserState } from './state/parser-state';
7
8
  type SampleAspectRatio = {
8
9
  numerator: number;
@@ -15,7 +16,7 @@ export type VideoTrackColorParams = {
15
16
  fullRange: boolean | null;
16
17
  };
17
18
  export type MediaParserVideoCodec = 'vp8' | 'vp9' | 'h264' | 'av1' | 'h265' | 'prores';
18
- export type MediaParserAudioCodec = 'opus' | 'aac' | 'mp3' | 'vorbis' | 'pcm-u8' | 'pcm-s16' | 'pcm-s24' | 'pcm-s32' | 'pcm-f32' | 'aiff';
19
+ export type MediaParserAudioCodec = 'opus' | 'aac' | 'mp3' | 'vorbis' | 'pcm-u8' | 'pcm-s16' | 'pcm-s24' | 'pcm-s32' | 'pcm-f32' | 'flac' | 'aiff';
19
20
  export type VideoTrack = {
20
21
  type: 'video';
21
22
  trackId: number;
@@ -57,11 +58,11 @@ export type OtherTrack = {
57
58
  export type Track = VideoTrack | AudioTrack | OtherTrack;
58
59
  export declare const getNumberOfTracks: (moovBox: MoovBox) => number;
59
60
  export declare const isoBaseMediaHasTracks: (structure: IsoBaseMediaStructure) => boolean;
60
- export declare const getHasTracks: (structure: Structure, state: ParserState) => boolean;
61
+ export declare const getHasTracks: (state: ParserState) => boolean;
61
62
  export declare const getTracksFromIsoBaseMedia: (segments: IsoBaseMediaBox[]) => {
62
63
  videoTracks: VideoTrack[];
63
64
  audioTracks: AudioTrack[];
64
65
  otherTracks: OtherTrack[];
65
66
  };
66
- export declare const getTracks: (segments: Structure, state: ParserState) => AllTracks;
67
+ export declare const getTracks: (state: ParserState) => AllTracks;
67
68
  export {};