@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
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseListBox = void 0;
4
+ const expect_riff_box_1 = require("./expect-riff-box");
5
+ const parseListBox = async ({ size, state, }) => {
6
+ const { iterator } = state;
7
+ const counter = iterator.counter.getOffset();
8
+ const listType = iterator.getByteString(4, false);
9
+ if (listType === 'movi') {
10
+ throw new Error('should not be handled here');
11
+ }
12
+ const boxes = [];
13
+ const maxOffset = counter + size;
14
+ while (iterator.counter.getOffset() < maxOffset) {
15
+ const result = await (0, expect_riff_box_1.expectRiffBox)(state);
16
+ if (result.box !== null) {
17
+ boxes.push(result.box);
18
+ }
19
+ else {
20
+ throw new Error('Unexpected result');
21
+ }
22
+ }
23
+ return {
24
+ type: 'list-box',
25
+ listType,
26
+ children: boxes,
27
+ };
28
+ };
29
+ exports.parseListBox = parseListBox;
@@ -0,0 +1,11 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ import type { RiffResult } from './expect-riff-box';
3
+ export declare const handleChunk: ({ state, ckId, ckSize, }: {
4
+ state: ParserState;
5
+ ckId: string;
6
+ ckSize: number;
7
+ }) => Promise<void>;
8
+ export declare const parseMovi: ({ maxOffset, state, }: {
9
+ maxOffset: number;
10
+ state: ParserState;
11
+ }) => Promise<RiffResult>;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseMovi = exports.handleChunk = void 0;
4
4
  const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
5
- const may_skip_video_data_1 = require("../../may-skip-video-data/may-skip-video-data");
5
+ const may_skip_video_data_1 = require("../../state/may-skip-video-data");
6
6
  const key_1 = require("../avc/key");
7
7
  const parse_avc_1 = require("../avc/parse-avc");
8
8
  const traversal_1 = require("./traversal");
@@ -18,12 +18,13 @@ const getStrhForIndex = (structure, trackId) => {
18
18
  }
19
19
  return strh;
20
20
  };
21
- const handleChunk = async ({ iterator, state, structure, ckId, ckSize, }) => {
21
+ const handleChunk = async ({ state, ckId, ckSize, }) => {
22
+ const { iterator } = state;
22
23
  const offset = iterator.counter.getOffset();
23
24
  const videoChunk = ckId.match(/^([0-9]{2})dc$/);
24
25
  if (videoChunk) {
25
26
  const trackId = parseInt(videoChunk[1], 10);
26
- const strh = getStrhForIndex(structure, trackId);
27
+ const strh = getStrhForIndex(state.structure.getStructure(), trackId);
27
28
  const samplesPerSecond = strh.rate / strh.scale;
28
29
  const nthSample = state.callbacks.getSamplesForTrack(trackId);
29
30
  const timeInSec = nthSample / samplesPerSecond;
@@ -56,7 +57,7 @@ const handleChunk = async ({ iterator, state, structure, ckId, ckSize, }) => {
56
57
  const audioChunk = ckId.match(/^([0-9]{2})wb$/);
57
58
  if (audioChunk) {
58
59
  const trackId = parseInt(audioChunk[1], 10);
59
- const strh = getStrhForIndex(structure, trackId);
60
+ const strh = getStrhForIndex(state.structure.getStructure(), trackId);
60
61
  const samplesPerSecond = strh.rate / strh.scale;
61
62
  const nthSample = state.callbacks.getSamplesForTrack(trackId);
62
63
  const timeInSec = nthSample / samplesPerSecond;
@@ -81,66 +82,45 @@ const handleChunk = async ({ iterator, state, structure, ckId, ckSize, }) => {
81
82
  }
82
83
  };
83
84
  exports.handleChunk = handleChunk;
84
- const parseMovi = async ({ iterator, maxOffset, state, structure, }) => {
85
- while (iterator.counter.getOffset() < maxOffset) {
86
- if (iterator.bytesRemaining() < 8) {
87
- return {
88
- type: 'incomplete',
89
- continueParsing: () => {
90
- return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, state, structure }));
91
- },
92
- };
93
- }
94
- const ckId = iterator.getByteString(4, false);
95
- const ckSize = iterator.getUint32Le();
96
- if ((0, may_skip_video_data_1.maySkipVideoData)({
97
- state,
98
- }) &&
99
- state.riff.getAvcProfile()) {
100
- return {
101
- type: 'complete',
102
- box: {
103
- type: 'movi-box',
104
- },
105
- skipTo: maxOffset,
106
- };
107
- }
108
- if (iterator.bytesRemaining() < ckSize) {
109
- iterator.counter.decrement(8);
110
- return {
111
- type: 'incomplete',
112
- continueParsing: () => {
113
- return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, state, structure }));
114
- },
115
- };
116
- }
117
- await (0, exports.handleChunk)({ iterator, state, structure, ckId, ckSize });
118
- // Discard added zeroes
119
- while (iterator.counter.getOffset() < maxOffset &&
120
- iterator.bytesRemaining() > 0) {
121
- if (iterator.getUint8() !== 0) {
122
- iterator.counter.decrement(1);
123
- break;
124
- }
125
- }
85
+ const parseMovi = async ({ maxOffset, state, }) => {
86
+ if ((0, may_skip_video_data_1.maySkipVideoData)({
87
+ state,
88
+ }) &&
89
+ state.riff.getAvcProfile()) {
90
+ return {
91
+ box: null,
92
+ skipTo: maxOffset,
93
+ };
126
94
  }
127
- if (iterator.counter.getOffset() === maxOffset) {
95
+ const { iterator } = state;
96
+ if (iterator.bytesRemaining() < 8) {
128
97
  return {
129
- type: 'complete',
130
- box: {
131
- type: 'movi-box',
132
- },
98
+ box: null,
133
99
  skipTo: null,
134
100
  };
135
101
  }
136
- if (iterator.counter.getOffset() > maxOffset) {
137
- throw new Error('Oops, this should not happen!');
102
+ const checkpoint = iterator.startCheckpoint();
103
+ const ckId = iterator.getByteString(4, false);
104
+ const ckSize = iterator.getUint32Le();
105
+ if (iterator.bytesRemaining() < ckSize) {
106
+ checkpoint.returnToCheckpoint();
107
+ return {
108
+ box: null,
109
+ skipTo: null,
110
+ };
111
+ }
112
+ await (0, exports.handleChunk)({ state, ckId, ckSize });
113
+ // Discard added zeroes
114
+ while (iterator.counter.getOffset() < maxOffset &&
115
+ iterator.bytesRemaining() > 0) {
116
+ if (iterator.getUint8() !== 0) {
117
+ iterator.counter.decrement(1);
118
+ break;
119
+ }
138
120
  }
139
121
  return {
140
- type: 'incomplete',
141
- continueParsing: () => {
142
- return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, state, structure }));
143
- },
122
+ box: null,
123
+ skipTo: null,
144
124
  };
145
125
  };
146
126
  exports.parseMovi = parseMovi;
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseRiffBody: (state: ParserState) => Promise<ParseResult>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRiffBody = void 0;
4
+ const expect_riff_box_1 = require("./expect-riff-box");
5
+ const parse_video_section_1 = require("./parse-video-section");
6
+ const parseRiffBody = async (state) => {
7
+ if (state.videoSection.isInVideoSectionState(state.iterator) === 'in-section') {
8
+ const videoSec = await (0, parse_video_section_1.parseVideoSection)(state);
9
+ return {
10
+ skipTo: videoSec.skipTo,
11
+ };
12
+ }
13
+ const result = await (0, expect_riff_box_1.expectRiffBox)(state);
14
+ if (result.box !== null) {
15
+ const structure = state.structure.getStructure();
16
+ structure.boxes.push(result.box);
17
+ }
18
+ return {
19
+ skipTo: result.skipTo,
20
+ };
21
+ };
22
+ exports.parseRiffBody = parseRiffBody;
@@ -0,0 +1,7 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ import type { RiffBox } from './riff-box';
3
+ export declare const parseRiffBox: ({ size, id, state, }: {
4
+ size: number;
5
+ id: string;
6
+ state: ParserState;
7
+ }) => Promise<RiffBox>;
@@ -2,17 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseRiffBox = void 0;
4
4
  const parse_avih_1 = require("./parse-avih");
5
- const parse_fmt_box_1 = require("./parse-fmt-box");
6
5
  const parse_isft_1 = require("./parse-isft");
7
6
  const parse_list_box_1 = require("./parse-list-box");
8
- const parse_strf_1 = require("./parse-strf");
9
7
  const parse_strh_1 = require("./parse-strh");
10
- const parseRiffBox = ({ iterator, size, id, boxes, state, fields, }) => {
11
- if (id === 'fmt') {
12
- return Promise.resolve((0, parse_fmt_box_1.parseFmtBox)({ iterator, boxes, size }));
13
- }
8
+ const parseRiffBox = ({ size, id, state, }) => {
9
+ const { iterator } = state;
14
10
  if (id === 'LIST') {
15
- return (0, parse_list_box_1.parseListBox)({ iterator, size, state, fields });
11
+ return (0, parse_list_box_1.parseListBox)({ size, state });
16
12
  }
17
13
  if (id === 'ISFT') {
18
14
  return Promise.resolve((0, parse_isft_1.parseIsft)({ iterator, size }));
@@ -23,9 +19,6 @@ const parseRiffBox = ({ iterator, size, id, boxes, state, fields, }) => {
23
19
  if (id === 'strh') {
24
20
  return Promise.resolve((0, parse_strh_1.parseStrh)({ iterator, size }));
25
21
  }
26
- if (id === 'strf') {
27
- return Promise.resolve((0, parse_strf_1.parseStrf)({ iterator, size, boxes }));
28
- }
29
22
  iterator.discard(size);
30
23
  const box = {
31
24
  type: 'riff-box',
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseRiffHeader: (state: ParserState) => ParseResult;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRiffHeader = void 0;
4
+ const parseRiffHeader = (state) => {
5
+ const riff = state.iterator.getByteString(4, false);
6
+ if (riff !== 'RIFF') {
7
+ throw new Error('Not a RIFF file');
8
+ }
9
+ const structure = state.structure.getStructure();
10
+ if (structure.type !== 'riff') {
11
+ throw new Error('Structure is not a RIFF structure');
12
+ }
13
+ const size = state.iterator.getUint32Le();
14
+ const fileType = state.iterator.getByteString(4, false);
15
+ if (fileType !== 'WAVE' && fileType !== 'AVI') {
16
+ throw new Error(`File type ${fileType} not supported`);
17
+ }
18
+ structure.boxes.push({ type: 'riff-header', fileSize: size, fileType });
19
+ return {
20
+ skipTo: null,
21
+ };
22
+ };
23
+ exports.parseRiffHeader = parseRiffHeader;
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseRiff: (state: ParserState) => Promise<ParseResult>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRiff = void 0;
4
+ const parse_riff_body_1 = require("./parse-riff-body");
5
+ const parse_riff_header_1 = require("./parse-riff-header");
6
+ const parseRiff = (state) => {
7
+ if (state.iterator.counter.getOffset() === 0) {
8
+ return Promise.resolve((0, parse_riff_header_1.parseRiffHeader)(state));
9
+ }
10
+ return (0, parse_riff_body_1.parseRiffBody)(state);
11
+ };
12
+ exports.parseRiff = parseRiff;
@@ -0,0 +1,7 @@
1
+ import type { BufferIterator } from '../../buffer-iterator';
2
+ import type { FccType, StrfBoxAudio, StrfBoxVideo } from './riff-box';
3
+ export declare const parseStrf: ({ iterator, size, fccType, }: {
4
+ iterator: BufferIterator;
5
+ size: number;
6
+ fccType: FccType;
7
+ }) => StrfBoxAudio | StrfBoxVideo;
@@ -51,17 +51,13 @@ const parseStrfVideo = ({ iterator, size, }) => {
51
51
  yPelsPerMeter,
52
52
  };
53
53
  };
54
- const parseStrf = ({ iterator, size, boxes, }) => {
55
- const strh = boxes.find((b) => b.type === 'strh-box');
56
- if (!strh) {
57
- throw new Error('strh box not found');
58
- }
59
- if (strh.fccType === 'vids') {
54
+ const parseStrf = ({ iterator, size, fccType, }) => {
55
+ if (fccType === 'vids') {
60
56
  return parseStrfVideo({ iterator, size });
61
57
  }
62
- if (strh.fccType === 'auds') {
58
+ if (fccType === 'auds') {
63
59
  return parseStrfAudio({ iterator, size });
64
60
  }
65
- throw new Error(`Unsupported fccType: ${strh.fccType}`);
61
+ throw new Error(`Unsupported fccType: ${fccType}`);
66
62
  };
67
63
  exports.parseStrf = parseStrf;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseStrh = void 0;
4
+ const parse_strf_1 = require("./parse-strf");
4
5
  const parseStrh = ({ iterator, size, }) => {
5
6
  const box = iterator.startBox(size);
6
7
  const fccType = iterator.getByteString(4, false);
@@ -28,6 +29,15 @@ const parseStrh = ({ iterator, size, }) => {
28
29
  const quality = iterator.getUint32Le();
29
30
  const sampleSize = iterator.getUint32Le();
30
31
  box.discardRest();
32
+ const ckId = iterator.getByteString(4, false);
33
+ const ckSize = iterator.getUint32Le();
34
+ if (ckId !== 'strf') {
35
+ throw new Error(`Expected strf, got ${JSON.stringify(ckId)}`);
36
+ }
37
+ if (iterator.bytesRemaining() < ckSize) {
38
+ throw new Error('Expected strf to be complete');
39
+ }
40
+ const strf = (0, parse_strf_1.parseStrf)({ iterator, size: ckSize, fccType });
31
41
  return {
32
42
  type: 'strh-box',
33
43
  fccType,
@@ -43,6 +53,7 @@ const parseStrh = ({ iterator, size, }) => {
43
53
  start,
44
54
  suggestedBufferSize,
45
55
  language,
56
+ strf,
46
57
  };
47
58
  };
48
59
  exports.parseStrh = parseStrh;
@@ -0,0 +1,2 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ export declare const parseVideoSection: (state: ParserState) => Promise<import("./expect-riff-box").RiffResult>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseVideoSection = void 0;
4
+ const get_tracks_1 = require("../../get-tracks");
5
+ const get_tracks_from_avi_1 = require("./get-tracks-from-avi");
6
+ const parse_movi_1 = require("./parse-movi");
7
+ const parseVideoSection = (state) => {
8
+ const videoSection = state.videoSection.getVideoSection();
9
+ const movi = (0, parse_movi_1.parseMovi)({
10
+ maxOffset: videoSection.start + videoSection.size,
11
+ state,
12
+ });
13
+ const tracks = (0, get_tracks_1.getTracks)(state);
14
+ if (!tracks.videoTracks.some((t) => t.codec === get_tracks_from_avi_1.TO_BE_OVERRIDDEN_LATER)) {
15
+ state.callbacks.tracks.setIsDone();
16
+ }
17
+ return movi;
18
+ };
19
+ exports.parseVideoSection = parseVideoSection;
@@ -1,12 +1,3 @@
1
- export type WaveFormatBox = {
2
- type: 'wave-format-box';
3
- formatTag: 1;
4
- numberOfChannels: number;
5
- sampleRate: number;
6
- blockAlign: number;
7
- byteRate: number;
8
- bitsPerSample: number;
9
- };
10
1
  export type ListBox = {
11
2
  type: 'list-box';
12
3
  listType: string;
@@ -30,9 +21,10 @@ export type AvihBox = {
30
21
  width: number;
31
22
  height: number;
32
23
  };
24
+ export type FccType = 'vids' | 'auds';
33
25
  export type StrhBox = {
34
26
  type: 'strh-box';
35
- fccType: 'vids' | 'auds';
27
+ fccType: FccType;
36
28
  handler: 'H264' | number;
37
29
  flags: number;
38
30
  priority: number;
@@ -45,6 +37,7 @@ export type StrhBox = {
45
37
  quality: number;
46
38
  sampleSize: number;
47
39
  language: number;
40
+ strf: StrfBoxVideo | StrfBoxAudio;
48
41
  };
49
42
  export type StrfBoxVideo = {
50
43
  type: 'strf-box-video';
@@ -75,11 +68,12 @@ export type RiffHeader = {
75
68
  fileSize: number;
76
69
  fileType: string;
77
70
  };
78
- export type MoviBox = {
79
- type: 'movi-box';
80
- };
81
71
  export type IsftBox = {
82
72
  type: 'isft-box';
83
73
  software: string;
84
74
  };
85
- export type RiffBox = RiffRegularBox | WaveFormatBox | RiffHeader | ListBox | AvihBox | StrhBox | StrfBoxVideo | StrfBoxAudio | MoviBox | IsftBox;
75
+ export type RiffBox = RiffRegularBox | RiffHeader | ListBox | AvihBox | StrhBox | StrfBoxVideo | StrfBoxAudio | IsftBox;
76
+ export type RiffStructure = {
77
+ type: 'riff';
78
+ boxes: RiffBox[];
79
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,8 +1,6 @@
1
- import type { RiffStructure } from '../../parse-result';
2
- import type { AvihBox, ListBox, RiffBox, StrfBoxAudio, StrfBoxVideo, StrhBox } from './riff-box';
1
+ import type { AvihBox, ListBox, RiffBox, RiffStructure, StrhBox } from './riff-box';
3
2
  export declare const isRiffAvi: (structure: RiffStructure) => boolean;
4
3
  export declare const getHdlrBox: (structure: RiffStructure) => ListBox | null;
5
4
  export declare const getAvihBox: (structure: RiffStructure) => AvihBox | null;
6
5
  export declare const getStrlBoxes: (structure: RiffStructure) => ListBox[];
7
6
  export declare const getStrhBox: (strlBoxChildren: RiffBox[]) => StrhBox | null;
8
- export declare const getStrfBox: (strlBoxChildren: RiffBox[]) => StrfBoxAudio | StrfBoxVideo | null;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStrfBox = exports.getStrhBox = exports.getStrlBoxes = exports.getAvihBox = exports.getHdlrBox = exports.isRiffAvi = void 0;
3
+ exports.getStrhBox = exports.getStrlBoxes = exports.getAvihBox = exports.getHdlrBox = exports.isRiffAvi = void 0;
4
4
  const isRiffAvi = (structure) => {
5
5
  return structure.boxes.some((box) => box.type === 'riff-header' && box.fileType === 'AVI');
6
6
  };
@@ -29,8 +29,3 @@ const getStrhBox = (strlBoxChildren) => {
29
29
  return strlBoxChildren.find((box) => box.type === 'strh-box');
30
30
  };
31
31
  exports.getStrhBox = getStrhBox;
32
- const getStrfBox = (strlBoxChildren) => {
33
- var _a;
34
- return ((_a = strlBoxChildren.find((box) => box.type === 'strf-box-audio' || box.type === 'strf-box-video')) !== null && _a !== void 0 ? _a : null);
35
- };
36
- exports.getStrfBox = getStrfBox;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ import type { AllTracks } from '../riff/get-tracks-from-avi';
3
+ export declare const getTracksFromTransportStream: (parserState: ParserState) => AllTracks;
4
+ export declare const hasAllTracksFromTransportStream: (parserState: ParserState) => boolean;
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasAllTracksFromTransportStream = exports.getTracksFromTransportStream = void 0;
4
4
  const truthy_1 = require("../../truthy");
5
5
  const traversal_1 = require("./traversal");
6
- const getTracksFromTransportStream = (structure, parserState) => {
6
+ const getTracksFromTransportStream = (parserState) => {
7
+ const structure = parserState.structure.getStructure();
7
8
  const programMapTable = (0, traversal_1.findProgramMapTableOrThrow)(structure);
8
9
  const parserTracks = parserState.callbacks.tracks.getTracks();
9
10
  const mapped = programMapTable.streams
@@ -21,9 +22,9 @@ const getTracksFromTransportStream = (structure, parserState) => {
21
22
  };
22
23
  };
23
24
  exports.getTracksFromTransportStream = getTracksFromTransportStream;
24
- const hasAllTracksFromTransportStream = (structure, parserState) => {
25
+ const hasAllTracksFromTransportStream = (parserState) => {
25
26
  try {
26
- (0, exports.getTracksFromTransportStream)(structure, parserState);
27
+ (0, exports.getTracksFromTransportStream)(parserState);
27
28
  return true;
28
29
  }
29
30
  catch (_a) {
@@ -0,0 +1,5 @@
1
+ import type { ParserState } from '../../state/parser-state';
2
+ import type { TransportStreamBox } from './boxes';
3
+ export declare const parsePacket: ({ parserState, }: {
4
+ parserState: ParserState;
5
+ }) => Promise<TransportStreamBox | null>;
@@ -6,7 +6,8 @@ const parse_pes_1 = require("./parse-pes");
6
6
  const parse_pmt_1 = require("./parse-pmt");
7
7
  const parse_stream_packet_1 = require("./parse-stream-packet");
8
8
  const traversal_1 = require("./traversal");
9
- const parsePacket = async ({ iterator, structure, streamBuffers, parserState, nextPesHeaderStore, }) => {
9
+ const parsePacket = async ({ parserState, }) => {
10
+ const { iterator } = parserState;
10
11
  const offset = iterator.counter.getOffset();
11
12
  const syncByte = iterator.getUint8();
12
13
  if (syncByte !== 0x47) {
@@ -45,11 +46,12 @@ const parsePacket = async ({ iterator, structure, streamBuffers, parserState, ne
45
46
  if (read === 188) {
46
47
  return Promise.resolve(null);
47
48
  }
49
+ const structure = parserState.structure.getStructure();
48
50
  const pat = structure.boxes.find((b) => b.type === 'transport-stream-pmt-box');
49
51
  const isPes = payloadUnitStartIndicator && (pat === null || pat === void 0 ? void 0 : pat.streams.find((e) => e.pid === programId));
50
52
  if (isPes) {
51
53
  const packetPes = (0, parse_pes_1.parsePes)(iterator);
52
- nextPesHeaderStore.setNextPesHeader(packetPes);
54
+ parserState.transportStream.nextPesHeaderStore.setNextPesHeader(packetPes);
53
55
  }
54
56
  else if (payloadUnitStartIndicator === 1) {
55
57
  iterator.getUint8(); // pointerField
@@ -65,10 +67,7 @@ const parsePacket = async ({ iterator, structure, streamBuffers, parserState, ne
65
67
  const stream = (0, traversal_1.getStreamForId)(structure, programId);
66
68
  if (stream) {
67
69
  await (0, parse_stream_packet_1.parseStream)({
68
- iterator,
69
70
  transportStreamEntry: stream,
70
- streamBuffers,
71
- nextPesHeader: nextPesHeaderStore.getNextPesHeader(),
72
71
  state: parserState,
73
72
  programId,
74
73
  structure,
@@ -0,0 +1,9 @@
1
+ import type { TransportStreamStructure } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ import type { TransportStreamEntry } from './parse-pmt';
4
+ export declare const parseStream: ({ transportStreamEntry, state, programId, structure, }: {
5
+ transportStreamEntry: TransportStreamEntry;
6
+ state: ParserState;
7
+ programId: number;
8
+ structure: TransportStreamStructure;
9
+ }) => Promise<void>;
@@ -6,13 +6,14 @@ const adts_header_1 = require("./adts-header");
6
6
  const discard_rest_of_packet_1 = require("./discard-rest-of-packet");
7
7
  const find_separator_1 = require("./find-separator");
8
8
  const process_stream_buffers_1 = require("./process-stream-buffers");
9
- const parseAdtsStream = async ({ restOfPacket, transportStreamEntry, streamBuffers, nextPesHeader, state, structure, offset, }) => {
9
+ const parseAdtsStream = async ({ restOfPacket, transportStreamEntry, state, structure, offset, }) => {
10
10
  var _a, _b;
11
+ const { streamBuffers, nextPesHeaderStore: nextPesHeader } = state.transportStream;
11
12
  const streamBuffer = streamBuffers.get(transportStreamEntry.pid);
12
13
  if (!streamBuffer) {
13
14
  streamBuffers.set(transportStreamEntry.pid, {
14
15
  buffer: restOfPacket,
15
- pesHeader: nextPesHeader,
16
+ pesHeader: nextPesHeader.getNextPesHeader(),
16
17
  offset,
17
18
  });
18
19
  return;
@@ -35,13 +36,14 @@ const parseAdtsStream = async ({ restOfPacket, transportStreamEntry, streamBuffe
35
36
  const rest = restOfPacket.slice(bytesToTake);
36
37
  streamBuffers.set(transportStreamEntry.pid, {
37
38
  buffer: rest,
38
- pesHeader: nextPesHeader,
39
+ pesHeader: nextPesHeader.getNextPesHeader(),
39
40
  offset,
40
41
  });
41
42
  }
42
43
  };
43
- const parseAvcStream = async ({ restOfPacket, transportStreamEntry, streamBuffers, nextPesHeader, programId, state, structure, offset, }) => {
44
+ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, programId, state, structure, offset, }) => {
44
45
  const indexOfSeparator = (0, find_separator_1.findNextSeparator)(restOfPacket, transportStreamEntry);
46
+ const { streamBuffers, nextPesHeaderStore: nextPesHeader } = state.transportStream;
45
47
  const streamBuffer = streamBuffers.get(transportStreamEntry.pid);
46
48
  if (indexOfSeparator === -1) {
47
49
  if (streamBuffer) {
@@ -52,7 +54,7 @@ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, streamBuffer
52
54
  return;
53
55
  }
54
56
  streamBuffers.set(programId, {
55
- pesHeader: nextPesHeader,
57
+ pesHeader: nextPesHeader.getNextPesHeader(),
56
58
  buffer: restOfPacket,
57
59
  offset,
58
60
  });
@@ -69,7 +71,7 @@ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, streamBuffer
69
71
  });
70
72
  const rest = restOfPacket.slice(indexOfSeparator);
71
73
  streamBuffers.set(programId, {
72
- pesHeader: nextPesHeader,
74
+ pesHeader: nextPesHeader.getNextPesHeader(),
73
75
  buffer: rest,
74
76
  offset,
75
77
  });
@@ -79,19 +81,18 @@ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, streamBuffer
79
81
  throw new Error('No stream buffer found but new separator is not at the beginning');
80
82
  }
81
83
  streamBuffers.set(programId, {
82
- pesHeader: nextPesHeader,
84
+ pesHeader: nextPesHeader.getNextPesHeader(),
83
85
  buffer: restOfPacket.slice(indexOfSeparator),
84
86
  offset,
85
87
  });
86
88
  };
87
- const parseStream = ({ iterator, transportStreamEntry, streamBuffers, state, programId, structure, nextPesHeader, }) => {
89
+ const parseStream = ({ transportStreamEntry, state, programId, structure, }) => {
90
+ const { iterator } = state;
88
91
  const restOfPacket = (0, discard_rest_of_packet_1.getRestOfPacket)(iterator);
89
92
  if (transportStreamEntry.streamType === 27) {
90
93
  return parseAvcStream({
91
94
  restOfPacket,
92
95
  transportStreamEntry,
93
- streamBuffers,
94
- nextPesHeader,
95
96
  state,
96
97
  programId,
97
98
  structure,
@@ -102,8 +103,6 @@ const parseStream = ({ iterator, transportStreamEntry, streamBuffers, state, pro
102
103
  return parseAdtsStream({
103
104
  restOfPacket,
104
105
  transportStreamEntry,
105
- streamBuffers,
106
- nextPesHeader,
107
106
  state,
108
107
  structure,
109
108
  offset: iterator.counter.getOffset(),
@@ -0,0 +1,3 @@
1
+ import type { ParseResult } from '../../parse-result';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseTransportStream: (state: ParserState) => Promise<ParseResult>;