@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,44 +1,11 @@
1
- import type { BaseBox } from './boxes/iso-base-media/base-type';
2
- import type { EsdsBox } from './boxes/iso-base-media/esds/esds';
3
- import type { FtypBox } from './boxes/iso-base-media/ftyp';
4
- import type { MdatBox } from './boxes/iso-base-media/mdat/mdat';
5
- import type { MdhdBox } from './boxes/iso-base-media/mdhd';
6
- import type { HdlrBox } from './boxes/iso-base-media/meta/hdlr';
7
- import type { IlstBox } from './boxes/iso-base-media/meta/ilst';
8
- import type { MoovBox } from './boxes/iso-base-media/moov/moov';
9
- import type { MvhdBox } from './boxes/iso-base-media/mvhd';
10
- import type { Av1CBox } from './boxes/iso-base-media/stsd/av1c';
11
- import type { AvccBox } from './boxes/iso-base-media/stsd/avcc';
12
- import type { ColorParameterBox } from './boxes/iso-base-media/stsd/colr';
13
- import type { CttsBox } from './boxes/iso-base-media/stsd/ctts';
14
- import type { HvccBox } from './boxes/iso-base-media/stsd/hvcc';
15
- import type { KeysBox } from './boxes/iso-base-media/stsd/keys';
16
- import type { MebxBox } from './boxes/iso-base-media/stsd/mebx';
17
- import type { PaspBox } from './boxes/iso-base-media/stsd/pasp';
18
- import type { StcoBox } from './boxes/iso-base-media/stsd/stco';
19
- import type { StscBox } from './boxes/iso-base-media/stsd/stsc';
20
- import type { StsdBox } from './boxes/iso-base-media/stsd/stsd';
21
- import type { StssBox } from './boxes/iso-base-media/stsd/stss';
22
- import type { StszBox } from './boxes/iso-base-media/stsd/stsz';
23
- import type { SttsBox } from './boxes/iso-base-media/stsd/stts';
24
- import type { TfdtBox } from './boxes/iso-base-media/tfdt';
25
- import type { TfhdBox } from './boxes/iso-base-media/tfhd';
26
- import type { TkhdBox } from './boxes/iso-base-media/tkhd';
27
- import type { TrakBox } from './boxes/iso-base-media/trak/trak';
28
- import type { TrunBox } from './boxes/iso-base-media/trun';
29
- import type { VoidBox } from './boxes/iso-base-media/void-box';
30
- import type { RiffBox } from './boxes/riff/riff-box';
31
- import type { TransportStreamBox } from './boxes/transport-stream/boxes';
32
- import type { MatroskaSegment } from './boxes/webm/segments';
1
+ import type { AacStructure } from './containers/aac/types';
2
+ import type { FlacStructure } from './containers/flac/types';
3
+ import type { IsoBaseMediaBox } from './containers/iso-base-media/base-media-box';
4
+ import type { RiffBox, RiffStructure } from './containers/riff/riff-box';
5
+ import type { TransportStreamBox } from './containers/transport-stream/boxes';
6
+ import type { WavStructure } from './containers/wav/types';
7
+ import type { MatroskaSegment } from './containers/webm/segments';
33
8
  import type { MetadataEntry } from './metadata/get-metadata';
34
- export interface RegularBox extends BaseBox {
35
- boxType: string;
36
- boxSize: number;
37
- children: IsoBaseMediaBox[];
38
- offset: number;
39
- type: 'regular-box';
40
- }
41
- export type IsoBaseMediaBox = RegularBox | FtypBox | MvhdBox | TkhdBox | StsdBox | MebxBox | KeysBox | MoovBox | TrakBox | SttsBox | MdhdBox | IlstBox | EsdsBox | MdatBox | StszBox | StcoBox | StscBox | AvccBox | HvccBox | VoidBox | StssBox | PaspBox | CttsBox | Av1CBox | TrunBox | HdlrBox | ColorParameterBox | TfdtBox | TfhdBox;
42
9
  type Mp3Id3Header = {
43
10
  type: 'id3-header';
44
11
  versionMajor: number;
@@ -53,10 +20,6 @@ export type IsoBaseMediaStructure = {
53
20
  type: 'iso-base-media';
54
21
  boxes: IsoBaseMediaBox[];
55
22
  };
56
- export type RiffStructure = {
57
- type: 'riff';
58
- boxes: RiffBox[];
59
- };
60
23
  export type MatroskaStructure = {
61
24
  type: 'matroska';
62
25
  boxes: MatroskaSegment[];
@@ -69,27 +32,11 @@ export type Mp3Structure = {
69
32
  type: 'mp3';
70
33
  boxes: Mp3Box[];
71
34
  };
72
- export type Structure = IsoBaseMediaStructure | RiffStructure | MatroskaStructure | TransportStreamStructure | Mp3Structure;
35
+ export type Structure = IsoBaseMediaStructure | RiffStructure | MatroskaStructure | TransportStreamStructure | Mp3Structure | AacStructure | WavStructure | FlacStructure;
73
36
  export type ParseResult = {
74
- status: 'done';
75
- } | {
76
- status: 'incomplete';
77
37
  skipTo: number | null;
78
- continueParsing: () => Promise<ParseResult>;
79
38
  };
80
39
  export type MatroskaParseResult = {
81
- status: 'done';
82
- } | {
83
- status: 'incomplete';
84
40
  skipTo: number | null;
85
- continueParsing: () => Promise<MatroskaParseResult>;
86
- };
87
- export type ExpectSegmentParseResult = {
88
- status: 'done';
89
- segment: MatroskaSegment;
90
- } | {
91
- status: 'incomplete';
92
- segment: MatroskaSegment | null;
93
- continueParsing: () => Promise<ExpectSegmentParseResult>;
94
41
  };
95
42
  export {};
@@ -0,0 +1,13 @@
1
+ import type { BufferIterator } from './buffer-iterator';
2
+ import type { LogLevel } from './log';
3
+ import type { Reader, ReaderInterface } from './readers/reader';
4
+ export declare const performSeek: ({ seekTo, iterator, supportsContentRange, logLevel, currentReader, readerInterface, src, signal, }: {
5
+ seekTo: number;
6
+ iterator: BufferIterator;
7
+ supportsContentRange: boolean;
8
+ logLevel: LogLevel;
9
+ currentReader: Reader;
10
+ readerInterface: ReaderInterface;
11
+ src: string | Blob;
12
+ signal: AbortSignal | undefined;
13
+ }) => Promise<Reader>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.performSeek = void 0;
4
+ const log_1 = require("./log");
5
+ const performSeek = async ({ seekTo, iterator, supportsContentRange, logLevel, currentReader, readerInterface, src, signal, }) => {
6
+ const skippingAhead = seekTo > iterator.counter.getOffset();
7
+ if (!skippingAhead && !supportsContentRange) {
8
+ throw new Error('Content-Range header is not supported by the reader, but was asked to seek');
9
+ }
10
+ if (skippingAhead &&
11
+ iterator.counter.getOffset() + iterator.bytesRemaining() >= seekTo) {
12
+ log_1.Log.verbose(logLevel, `Skipping over video data from position ${iterator.counter.getOffset()} -> ${seekTo}. Data already fetched`);
13
+ iterator.discard(seekTo - iterator.counter.getOffset());
14
+ return currentReader;
15
+ }
16
+ if (skippingAhead && !supportsContentRange) {
17
+ log_1.Log.verbose(logLevel, `Skipping over video data from position ${iterator.counter.getOffset()} -> ${seekTo}. Fetching but not reading all the data inbetween because Content-Range is not supported`);
18
+ iterator.discard(seekTo - iterator.counter.getOffset());
19
+ return currentReader;
20
+ }
21
+ const time = Date.now();
22
+ log_1.Log.verbose(logLevel, `Skipping over video data from position ${iterator.counter.getOffset()} -> ${seekTo}. Re-reading because this portion is not available`);
23
+ currentReader.abort();
24
+ const { reader: newReader } = await readerInterface.read(src, seekTo, signal);
25
+ iterator.skipTo(seekTo);
26
+ log_1.Log.verbose(logLevel, `Re-reading took ${Date.now() - time}ms. New position: ${iterator.counter.getOffset()}`);
27
+ return newReader;
28
+ };
29
+ exports.performSeek = performSeek;
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.nodeReader = void 0;
4
4
  const fs_1 = require("fs");
5
- const promises_1 = require("node:fs/promises");
6
5
  const path_1 = require("path");
7
6
  const stream_1 = require("stream");
8
7
  exports.nodeReader = {
9
- read: async (src, range, signal) => {
8
+ read: (src, range, signal) => {
10
9
  if (typeof src !== 'string') {
11
10
  throw new Error('src must be a string when using `nodeReader`');
12
11
  }
@@ -23,14 +22,14 @@ exports.nodeReader = {
23
22
  signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', () => {
24
23
  controller.abort();
25
24
  }, { once: true });
26
- const stats = await (0, promises_1.stat)(src);
25
+ const stats = (0, fs_1.statSync)(src);
27
26
  const reader = stream_1.Readable.toWeb(stream).getReader();
28
27
  if (signal) {
29
28
  signal.addEventListener('abort', () => {
30
29
  reader.cancel().catch(() => { });
31
30
  }, { once: true });
32
31
  }
33
- return {
32
+ return Promise.resolve({
34
33
  reader: {
35
34
  reader,
36
35
  abort: () => {
@@ -41,13 +40,13 @@ exports.nodeReader = {
41
40
  contentType: null,
42
41
  name: src.split(path_1.sep).pop(),
43
42
  supportsContentRange: true,
44
- };
43
+ });
45
44
  },
46
- getLength: async (src) => {
45
+ getLength: (src) => {
47
46
  if (typeof src !== 'string') {
48
47
  throw new Error('src must be a string when using `nodeReader`');
49
48
  }
50
- const stats = await (0, promises_1.stat)(src);
51
- return stats.size;
49
+ const stats = (0, fs_1.statSync)(src);
50
+ return Promise.resolve(stats.size);
52
51
  },
53
52
  };
@@ -1,4 +1,4 @@
1
- type Reader = {
1
+ export type Reader = {
2
2
  reader: ReadableStreamDefaultReader<Uint8Array>;
3
3
  abort: () => void;
4
4
  };
@@ -1,13 +1,13 @@
1
1
  import type { Track, VideoTrack } from './get-tracks';
2
- import type { ParseMediaContainer } from './options';
2
+ import type { MediaParserContainer } from './options';
3
3
  import type { ParserState } from './state/parser-state';
4
4
  export declare const registerTrack: ({ state, track, container, }: {
5
5
  state: ParserState;
6
6
  track: Track;
7
- container: ParseMediaContainer;
7
+ container: MediaParserContainer;
8
8
  }) => Promise<void>;
9
9
  export declare const registerVideoTrackWhenProfileIsAvailable: ({ state, track, container, }: {
10
10
  state: ParserState;
11
11
  track: VideoTrack;
12
- container: ParseMediaContainer;
12
+ container: MediaParserContainer;
13
13
  }) => void;
@@ -0,0 +1,8 @@
1
+ import type { ParseResult } from './parse-result';
2
+ import type { ParserState } from './state/parser-state';
3
+ export declare const runParseIteration: ({ state, mimeType, contentLength, name, }: {
4
+ state: ParserState;
5
+ mimeType: string | null;
6
+ contentLength: number | null;
7
+ name: string | null;
8
+ }) => Promise<ParseResult>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runParseIteration = void 0;
4
+ const parse_aac_1 = require("./containers/aac/parse-aac");
5
+ const parse_flac_1 = require("./containers/flac/parse-flac");
6
+ const parse_boxes_1 = require("./containers/iso-base-media/parse-boxes");
7
+ const parse_mp3_1 = require("./containers/mp3/parse-mp3");
8
+ const parse_riff_1 = require("./containers/riff/parse-riff");
9
+ const parse_transport_stream_1 = require("./containers/transport-stream/parse-transport-stream");
10
+ const parse_wav_1 = require("./containers/wav/parse-wav");
11
+ const parse_webm_header_1 = require("./containers/webm/parse-webm-header");
12
+ const init_video_1 = require("./init-video");
13
+ const runParseIteration = async ({ state, mimeType, contentLength, name, }) => {
14
+ if (state.iterator.bytesRemaining() === 0) {
15
+ return Promise.reject(new Error('no bytes'));
16
+ }
17
+ const structure = state.structure.getStructureOrNull();
18
+ if (structure === null) {
19
+ await (0, init_video_1.initVideo)({ state, mimeType, name, contentLength });
20
+ return { skipTo: null };
21
+ }
22
+ if (structure.type === 'riff') {
23
+ return (0, parse_riff_1.parseRiff)(state);
24
+ }
25
+ if (structure.type === 'mp3') {
26
+ return (0, parse_mp3_1.parseMp3)(state);
27
+ }
28
+ if (structure.type === 'iso-base-media') {
29
+ return (0, parse_boxes_1.parseIsoBaseMedia)(state);
30
+ }
31
+ if (structure.type === 'matroska') {
32
+ return (0, parse_webm_header_1.parseWebm)(state);
33
+ }
34
+ if (structure.type === 'transport-stream') {
35
+ return (0, parse_transport_stream_1.parseTransportStream)(state);
36
+ }
37
+ if (structure.type === 'wav') {
38
+ return (0, parse_wav_1.parseWav)(state);
39
+ }
40
+ if (structure.type === 'aac') {
41
+ return (0, parse_aac_1.parseAac)(state);
42
+ }
43
+ if (structure.type === 'flac') {
44
+ return (0, parse_flac_1.parseFlac)({ state, iterator: state.iterator });
45
+ }
46
+ return Promise.reject(new Error('Unknown video format ' + structure));
47
+ };
48
+ exports.runParseIteration = runParseIteration;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSamplesFromMoof = 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 getSamplesFromTraf = (trafSegment, moofOffset) => {
6
6
  var _a, _b, _c, _d, _e, _f;
7
7
  if (trafSegment.type !== 'regular-box' || trafSegment.boxType !== 'traf') {
@@ -0,0 +1,13 @@
1
+ type AacSamplePosition = {
2
+ offset: number;
3
+ index: number;
4
+ size: number;
5
+ };
6
+ export declare const aacState: () => {
7
+ addSample: ({ offset, size }: {
8
+ offset: number;
9
+ size: number;
10
+ }) => AacSamplePosition;
11
+ getSamples: () => AacSamplePosition[];
12
+ };
13
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aacState = void 0;
4
+ const aacState = () => {
5
+ const samples = [];
6
+ return {
7
+ addSample: ({ offset, size }) => {
8
+ if (samples.find((s) => s.offset === offset)) {
9
+ throw new Error('Duplicate sample');
10
+ }
11
+ samples.push({ offset, index: samples.length, size });
12
+ return samples[samples.length - 1];
13
+ },
14
+ getSamples: () => samples,
15
+ };
16
+ };
17
+ exports.aacState = aacState;
@@ -1,8 +1,15 @@
1
1
  import type { Options, ParseMediaFields } from '../options';
2
- export declare const makeCanSkipTracksState: ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, }: {
2
+ import type { Structure } from '../parse-result';
3
+ import type { StructureState } from './structure';
4
+ export declare const needsTracksForField: ({ field, structure, }: {
5
+ field: keyof Options<ParseMediaFields>;
6
+ structure: Structure;
7
+ }) => boolean;
8
+ export declare const makeCanSkipTracksState: ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }: {
3
9
  hasAudioTrackHandlers: boolean;
4
10
  hasVideoTrackHandlers: boolean;
5
11
  fields: Options<ParseMediaFields>;
12
+ structure: StructureState;
6
13
  }) => {
7
14
  canSkipTracks: () => boolean;
8
15
  };
@@ -1,32 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeCanSkipTracksState = void 0;
4
- const needsTracksField = {
5
- audioCodec: true,
6
- container: false,
7
- dimensions: true,
8
- durationInSeconds: true,
9
- slowDurationInSeconds: true,
10
- slowFps: true,
11
- fps: true,
12
- internalStats: false,
13
- isHdr: true,
14
- name: false,
15
- rotation: true,
16
- size: false,
17
- structure: true,
18
- tracks: true,
19
- unrotatedDimensions: true,
20
- videoCodec: true,
21
- metadata: true,
22
- location: true,
23
- mimeType: false,
24
- slowKeyframes: true,
25
- slowNumberOfFrames: true,
26
- keyframes: true,
27
- images: true,
3
+ exports.makeCanSkipTracksState = exports.needsTracksForField = void 0;
4
+ const needsTracksForField = ({ field, structure, }) => {
5
+ if (field === 'dimensions') {
6
+ if (structure.type === 'riff') {
7
+ return false;
8
+ }
9
+ return true;
10
+ }
11
+ if (field === 'audioCodec' ||
12
+ field === 'durationInSeconds' ||
13
+ field === 'slowDurationInSeconds' ||
14
+ field === 'slowFps' ||
15
+ field === 'fps' ||
16
+ field === 'isHdr' ||
17
+ field === 'rotation' ||
18
+ field === 'structure' ||
19
+ field === 'tracks' ||
20
+ field === 'unrotatedDimensions' ||
21
+ field === 'videoCodec' ||
22
+ field === 'metadata' ||
23
+ field === 'location' ||
24
+ field === 'slowKeyframes' ||
25
+ field === 'slowNumberOfFrames' ||
26
+ field === 'keyframes' ||
27
+ field === 'images' ||
28
+ field === 'sampleRate' ||
29
+ field === 'numberOfAudioChannels' ||
30
+ field === 'slowAudioBitrate' ||
31
+ field === 'slowVideoBitrate') {
32
+ return true;
33
+ }
34
+ if (field === 'container' ||
35
+ field === 'internalStats' ||
36
+ field === 'mimeType' ||
37
+ field === 'name' ||
38
+ field === 'size') {
39
+ return false;
40
+ }
41
+ throw new Error(`field not implemeted ${field}`);
28
42
  };
29
- const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, }) => {
43
+ exports.needsTracksForField = needsTracksForField;
44
+ const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }) => {
30
45
  return {
31
46
  canSkipTracks: () => {
32
47
  if (hasAudioTrackHandlers || hasVideoTrackHandlers) {
@@ -34,7 +49,7 @@ const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHa
34
49
  }
35
50
  const keys = Object.keys(fields !== null && fields !== void 0 ? fields : {});
36
51
  const selectedKeys = keys.filter((k) => fields[k]);
37
- return !selectedKeys.some((k) => needsTracksField[k]);
52
+ return !selectedKeys.some((k) => (0, exports.needsTracksForField)({ field: k, structure: structure.getStructure() }));
38
53
  },
39
54
  };
40
55
  };
@@ -26,6 +26,10 @@ const emittedState = () => {
26
26
  slowNumberOfFrames: false,
27
27
  keyframes: false,
28
28
  images: false,
29
+ numberOfAudioChannels: false,
30
+ sampleRate: false,
31
+ slowAudioBitrate: false,
32
+ slowVideoBitrate: false,
29
33
  };
30
34
  return emittedFields;
31
35
  };
@@ -0,0 +1,4 @@
1
+ export declare const flacState: () => {
2
+ setBlockingBitStrategy: (strategy: number) => void;
3
+ getBlockingBitStrategy: () => number | undefined;
4
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flacState = void 0;
4
+ const flacState = () => {
5
+ let blockingBitStrategy;
6
+ return {
7
+ setBlockingBitStrategy: (strategy) => {
8
+ blockingBitStrategy = strategy;
9
+ },
10
+ getBlockingBitStrategy: () => blockingBitStrategy,
11
+ };
12
+ };
13
+ exports.flacState = flacState;
@@ -1,10 +1,11 @@
1
1
  import type { Track } from '../get-tracks';
2
+ import type { Options, ParseMediaFields } from '../options';
2
3
  import type { CanSkipTracksState } from './can-skip-tracks';
3
4
  export declare const makeTracksSectionState: (canSkipTracksState: CanSkipTracksState) => {
4
5
  hasAllTracks: () => boolean;
5
6
  setIsDone: () => void;
6
7
  addTrack: (track: Track) => void;
7
8
  getTracks: () => Track[];
8
- ensureHasTracksAtEnd: () => void;
9
+ ensureHasTracksAtEnd: (fields: Options<ParseMediaFields>) => void;
9
10
  };
10
11
  export type TracksState = ReturnType<typeof makeTracksSectionState>;
@@ -13,10 +13,13 @@ const makeTracksSectionState = (canSkipTracksState) => {
13
13
  tracks.push(track);
14
14
  },
15
15
  getTracks: () => tracks,
16
- ensureHasTracksAtEnd: () => {
16
+ ensureHasTracksAtEnd: (fields) => {
17
17
  if (canSkipTracksState.canSkipTracks()) {
18
18
  return;
19
19
  }
20
+ if (!fields.tracks) {
21
+ return;
22
+ }
20
23
  if (!doneWithTracks) {
21
24
  throw new Error('Error in Media Parser: End of parsing has been reached, but no tracks have been found');
22
25
  }
@@ -0,0 +1,15 @@
1
+ import type { SamplePosition } from '../../get-sample-positions';
2
+ import type { AudioTrack, OtherTrack, VideoTrack } from '../../get-tracks';
3
+ import type { ParserState } from '../parser-state';
4
+ export type FlatSample = {
5
+ track: VideoTrack | AudioTrack | OtherTrack;
6
+ samplePosition: SamplePosition;
7
+ };
8
+ export declare const calculateFlatSamples: (state: ParserState) => {
9
+ track: VideoTrack | AudioTrack | OtherTrack;
10
+ samplePosition: SamplePosition;
11
+ }[];
12
+ export declare const cachedSamplePositionsState: () => {
13
+ getSamples: () => FlatSample[] | null;
14
+ setSamples: (samples: FlatSample[]) => void;
15
+ };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cachedSamplePositionsState = exports.calculateFlatSamples = void 0;
4
+ const get_sample_positions_from_track_1 = require("../../containers/iso-base-media/get-sample-positions-from-track");
5
+ const traversal_1 = require("../../containers/iso-base-media/traversal");
6
+ const get_tracks_1 = require("../../get-tracks");
7
+ const calculateFlatSamples = (state) => {
8
+ const tracks = (0, get_tracks_1.getTracks)(state);
9
+ const allTracks = [
10
+ ...tracks.videoTracks,
11
+ ...tracks.audioTracks,
12
+ ...tracks.otherTracks,
13
+ ];
14
+ const flatSamples = allTracks
15
+ .map((track) => {
16
+ const samplePositions = (0, get_sample_positions_from_track_1.getSamplePositionsFromTrack)(track.trakBox, (0, traversal_1.getMoofBox)(state.structure.getStructure().boxes));
17
+ if (!samplePositions) {
18
+ throw new Error('No sample positions');
19
+ }
20
+ return samplePositions.map((samplePosition) => {
21
+ return {
22
+ track,
23
+ samplePosition,
24
+ };
25
+ });
26
+ })
27
+ .flat(1);
28
+ return flatSamples;
29
+ };
30
+ exports.calculateFlatSamples = calculateFlatSamples;
31
+ const cachedSamplePositionsState = () => {
32
+ let cached = null;
33
+ return {
34
+ getSamples: () => {
35
+ return cached;
36
+ },
37
+ setSamples: (samples) => {
38
+ cached = samples;
39
+ },
40
+ };
41
+ };
42
+ exports.cachedSamplePositionsState = cachedSamplePositionsState;
@@ -0,0 +1,8 @@
1
+ export declare const isoBaseMediaState: () => {
2
+ getShouldReturnToVideoSectionAfterEnd: () => boolean;
3
+ setShouldReturnToVideoSectionAfterEnd: (value: boolean) => void;
4
+ flatSamples: {
5
+ getSamples: () => import("./cached-sample-positions").FlatSample[] | null;
6
+ setSamples: (samples: import("./cached-sample-positions").FlatSample[]) => void;
7
+ };
8
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isoBaseMediaState = void 0;
4
+ const cached_sample_positions_1 = require("./cached-sample-positions");
5
+ const isoBaseMediaState = () => {
6
+ let shouldReturnToVideoSectionAfterEnd = false;
7
+ return {
8
+ getShouldReturnToVideoSectionAfterEnd: () => shouldReturnToVideoSectionAfterEnd,
9
+ setShouldReturnToVideoSectionAfterEnd: (value) => {
10
+ shouldReturnToVideoSectionAfterEnd = value;
11
+ },
12
+ flatSamples: (0, cached_sample_positions_1.cachedSamplePositionsState)(),
13
+ };
14
+ };
15
+ exports.isoBaseMediaState = isoBaseMediaState;
@@ -1,4 +1,4 @@
1
- import type { ParserState } from '../state/parser-state';
1
+ import type { ParserState } from './parser-state';
2
2
  export declare const maySkipVideoData: ({ state }: {
3
3
  state: ParserState;
4
4
  }) => boolean;
@@ -3,9 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.maySkipVideoData = void 0;
4
4
  const need_samples_for_fields_1 = require("./need-samples-for-fields");
5
5
  const maySkipVideoData = ({ state }) => {
6
- return (state.callbacks.tracks.hasAllTracks() &&
6
+ const hasAllTracksAndNoCallbacks = state.callbacks.tracks.hasAllTracks() &&
7
7
  Object.values(state.callbacks.videoSampleCallbacks).length === 0 &&
8
- Object.values(state.callbacks.audioSampleCallbacks).length === 0 &&
8
+ Object.values(state.callbacks.audioSampleCallbacks).length === 0;
9
+ const hasNoTrackHandlers = !state.callbacks.hasAudioTrackHandlers &&
10
+ !state.callbacks.hasVideoTrackHandlers;
11
+ const noCallbacksNeeded = hasNoTrackHandlers || hasAllTracksAndNoCallbacks;
12
+ return (noCallbacksNeeded &&
9
13
  !(0, need_samples_for_fields_1.needsToIterateOverSamples)({
10
14
  emittedFields: state.emittedFields,
11
15
  fields: state.fields,
@@ -25,6 +25,10 @@ const needsSamples = {
25
25
  mimeType: false,
26
26
  keyframes: false,
27
27
  images: false,
28
+ numberOfAudioChannels: false,
29
+ sampleRate: false,
30
+ slowAudioBitrate: true,
31
+ slowVideoBitrate: true,
28
32
  };
29
33
  const needsToIterateOverSamples = ({ fields, emittedFields, }) => {
30
34
  const keys = Object.keys(fields !== null && fields !== void 0 ? fields : {});