@remotion/media-parser 4.0.270 → 4.0.272

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 (338) hide show
  1. package/dist/aac-codecprivate.js +6 -13
  2. package/dist/add-avc-profile-to-track.js +5 -9
  3. package/dist/buffer-iterator.js +8 -13
  4. package/dist/combine-uint8-arrays.js +1 -5
  5. package/dist/containers/aac/parse-aac.js +9 -13
  6. package/dist/containers/aac/types.js +1 -2
  7. package/dist/containers/avc/codec-string.js +1 -5
  8. package/dist/containers/avc/color.js +3 -9
  9. package/dist/containers/avc/create-sps-pps-data.js +5 -9
  10. package/dist/containers/avc/interpret-sps.js +7 -13
  11. package/dist/containers/avc/key.js +1 -5
  12. package/dist/containers/avc/parse-avc.js +3 -7
  13. package/dist/containers/avc/sps-and-pps.js +1 -5
  14. package/dist/containers/flac/get-block-size.js +1 -5
  15. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  16. package/dist/containers/flac/get-channel-count.js +1 -5
  17. package/dist/containers/flac/get-duration-from-flac.js +1 -5
  18. package/dist/containers/flac/get-metadata-from-flac.d.ts +1 -1
  19. package/dist/containers/flac/get-metadata-from-flac.js +1 -5
  20. package/dist/containers/flac/get-sample-rate.js +1 -5
  21. package/dist/containers/flac/parse-flac-frame.js +14 -19
  22. package/dist/containers/flac/parse-flac.js +15 -19
  23. package/dist/containers/flac/parse-header.js +1 -5
  24. package/dist/containers/flac/parse-metadata.js +1 -5
  25. package/dist/containers/flac/parse-streaminfo.js +3 -7
  26. package/dist/containers/flac/parse-unknown-block.js +1 -5
  27. package/dist/containers/flac/types.d.ts +2 -2
  28. package/dist/containers/flac/types.js +1 -2
  29. package/dist/containers/iso-base-media/base-media-box.js +1 -2
  30. package/dist/containers/iso-base-media/base-type.js +1 -2
  31. package/dist/containers/iso-base-media/esds/decoder-specific-config.js +1 -5
  32. package/dist/containers/iso-base-media/esds/esds-descriptors.js +5 -10
  33. package/dist/containers/iso-base-media/esds/esds.js +3 -7
  34. package/dist/containers/iso-base-media/ftyp.js +1 -5
  35. package/dist/containers/iso-base-media/get-actual-number-of-channels.js +4 -8
  36. package/dist/containers/iso-base-media/get-children.js +3 -7
  37. package/dist/containers/iso-base-media/get-keyframes.js +7 -11
  38. package/dist/containers/iso-base-media/get-moov-atom.js +21 -15
  39. package/dist/containers/iso-base-media/get-sample-positions-from-track.js +20 -24
  40. package/dist/containers/iso-base-media/get-video-codec-from-iso-track.d.ts +1 -1
  41. package/dist/containers/iso-base-media/get-video-codec-from-iso-track.js +3 -7
  42. package/dist/containers/iso-base-media/make-track.js +30 -34
  43. package/dist/containers/iso-base-media/mdat/mdat.js +16 -20
  44. package/dist/containers/iso-base-media/mdhd.js +1 -5
  45. package/dist/containers/iso-base-media/meta/hdlr.js +1 -5
  46. package/dist/containers/iso-base-media/meta/ilst.js +1 -5
  47. package/dist/containers/iso-base-media/moov/moov.js +3 -7
  48. package/dist/containers/iso-base-media/mvhd.js +7 -11
  49. package/dist/containers/iso-base-media/parse-boxes.js +5 -9
  50. package/dist/containers/iso-base-media/parse-icc-profile.js +4 -8
  51. package/dist/containers/iso-base-media/process-box.js +63 -67
  52. package/dist/containers/iso-base-media/stsd/av1c.js +1 -5
  53. package/dist/containers/iso-base-media/stsd/avcc.js +1 -5
  54. package/dist/containers/iso-base-media/stsd/colr.js +3 -7
  55. package/dist/containers/iso-base-media/stsd/ctts.js +1 -5
  56. package/dist/containers/iso-base-media/stsd/hvcc.js +3 -7
  57. package/dist/containers/iso-base-media/stsd/keys.js +1 -5
  58. package/dist/containers/iso-base-media/stsd/mebx.js +3 -7
  59. package/dist/containers/iso-base-media/stsd/pasp.js +1 -5
  60. package/dist/containers/iso-base-media/stsd/samples.js +8 -13
  61. package/dist/containers/iso-base-media/stsd/stco.js +1 -5
  62. package/dist/containers/iso-base-media/stsd/stsc.js +1 -5
  63. package/dist/containers/iso-base-media/stsd/stsd.js +3 -7
  64. package/dist/containers/iso-base-media/stsd/stss.js +1 -5
  65. package/dist/containers/iso-base-media/stsd/stsz.js +1 -5
  66. package/dist/containers/iso-base-media/stsd/stts.js +1 -5
  67. package/dist/containers/iso-base-media/tfdt.js +1 -5
  68. package/dist/containers/iso-base-media/tfhd.js +1 -5
  69. package/dist/containers/iso-base-media/tkhd.js +4 -8
  70. package/dist/containers/iso-base-media/to-date.js +1 -5
  71. package/dist/containers/iso-base-media/trak/trak.js +3 -7
  72. package/dist/containers/iso-base-media/traversal.d.ts +3 -2
  73. package/dist/containers/iso-base-media/traversal.js +42 -57
  74. package/dist/containers/iso-base-media/trun.js +2 -6
  75. package/dist/containers/iso-base-media/void-box.js +1 -2
  76. package/dist/containers/m3u/after-manifest-fetch.d.ts +5 -3
  77. package/dist/containers/m3u/after-manifest-fetch.js +13 -17
  78. package/dist/containers/m3u/fetch-m3u8-stream.d.ts +5 -1
  79. package/dist/containers/m3u/fetch-m3u8-stream.js +4 -12
  80. package/dist/containers/m3u/get-chunks.d.ts +1 -0
  81. package/dist/containers/m3u/get-chunks.js +6 -6
  82. package/dist/containers/m3u/get-duration-from-m3u.js +4 -8
  83. package/dist/containers/m3u/get-playlist.js +6 -12
  84. package/dist/containers/m3u/get-streams.d.ts +11 -5
  85. package/dist/containers/m3u/get-streams.js +5 -15
  86. package/dist/containers/m3u/iterate-over-segment-files.d.ts +19 -0
  87. package/dist/containers/m3u/iterate-over-segment-files.js +110 -0
  88. package/dist/containers/m3u/parse-directive.js +24 -10
  89. package/dist/containers/m3u/parse-m3u-manifest.js +3 -7
  90. package/dist/containers/m3u/parse-m3u-media-directive.d.ts +1 -0
  91. package/dist/containers/m3u/parse-m3u-media-directive.js +7 -7
  92. package/dist/containers/m3u/parse-m3u.js +13 -13
  93. package/dist/containers/m3u/parse-m3u8-text.js +3 -7
  94. package/dist/containers/m3u/parse-stream-inf.js +2 -7
  95. package/dist/containers/m3u/return-packets.d.ts +1 -1
  96. package/dist/containers/m3u/return-packets.js +14 -5
  97. package/dist/containers/m3u/run-over-m3u.js +68 -57
  98. package/dist/containers/m3u/sample-sorter.d.ts +2 -0
  99. package/dist/containers/m3u/sample-sorter.js +17 -9
  100. package/dist/containers/m3u/select-stream.d.ts +3 -2
  101. package/dist/containers/m3u/select-stream.js +9 -13
  102. package/dist/containers/m3u/types.d.ts +9 -2
  103. package/dist/containers/m3u/types.js +1 -2
  104. package/dist/containers/mp3/get-duration.js +5 -9
  105. package/dist/containers/mp3/get-frame-length.js +2 -7
  106. package/dist/containers/mp3/get-metadata-from-mp3.d.ts +2 -2
  107. package/dist/containers/mp3/get-metadata-from-mp3.js +1 -5
  108. package/dist/containers/mp3/id3-v1.js +1 -5
  109. package/dist/containers/mp3/id3.js +1 -5
  110. package/dist/containers/mp3/parse-mp3.js +7 -11
  111. package/dist/containers/mp3/parse-mpeg-header.js +10 -14
  112. package/dist/containers/mp3/samples-per-mpeg-file.js +1 -5
  113. package/dist/containers/riff/expect-riff-box.js +11 -15
  114. package/dist/containers/riff/get-duration.js +7 -12
  115. package/dist/containers/riff/get-tracks-from-avi.js +20 -28
  116. package/dist/containers/riff/is-movi.js +1 -5
  117. package/dist/containers/riff/parse-avih.js +1 -5
  118. package/dist/containers/riff/parse-isft.js +1 -5
  119. package/dist/containers/riff/parse-list-box.js +3 -7
  120. package/dist/containers/riff/parse-movi.js +13 -18
  121. package/dist/containers/riff/parse-riff-body.js +9 -13
  122. package/dist/containers/riff/parse-riff-box.js +9 -13
  123. package/dist/containers/riff/parse-riff-header.js +1 -5
  124. package/dist/containers/riff/parse-riff.js +5 -9
  125. package/dist/containers/riff/parse-strf.js +1 -5
  126. package/dist/containers/riff/parse-strh.js +3 -7
  127. package/dist/containers/riff/parse-video-section.js +7 -11
  128. package/dist/containers/riff/riff-box.js +1 -2
  129. package/dist/containers/riff/timescale.js +1 -4
  130. package/dist/containers/riff/traversal.js +7 -15
  131. package/dist/containers/transport-stream/adts-header.js +6 -10
  132. package/dist/containers/transport-stream/boxes.js +1 -2
  133. package/dist/containers/transport-stream/discard-rest-of-packet.js +2 -7
  134. package/dist/containers/transport-stream/find-separator.js +1 -4
  135. package/dist/containers/transport-stream/get-tracks.d.ts +2 -0
  136. package/dist/containers/transport-stream/get-tracks.js +13 -14
  137. package/dist/containers/transport-stream/handle-aac-packet.js +12 -16
  138. package/dist/containers/transport-stream/handle-avc-packet.js +22 -26
  139. package/dist/containers/transport-stream/next-pes-header-store.js +1 -5
  140. package/dist/containers/transport-stream/parse-packet.js +13 -17
  141. package/dist/containers/transport-stream/parse-pat.js +5 -10
  142. package/dist/containers/transport-stream/parse-pes.js +1 -5
  143. package/dist/containers/transport-stream/parse-pmt.js +8 -12
  144. package/dist/containers/transport-stream/parse-stream-packet.js +13 -17
  145. package/dist/containers/transport-stream/parse-transport-stream.js +5 -9
  146. package/dist/containers/transport-stream/process-stream-buffers.js +12 -16
  147. package/dist/containers/transport-stream/traversal.js +4 -10
  148. package/dist/containers/wav/get-duration-from-wav.js +3 -8
  149. package/dist/containers/wav/get-metadata-from-wav.d.ts +2 -2
  150. package/dist/containers/wav/get-metadata-from-wav.js +1 -5
  151. package/dist/containers/wav/parse-data.js +5 -9
  152. package/dist/containers/wav/parse-fmt.js +3 -7
  153. package/dist/containers/wav/parse-header.js +1 -5
  154. package/dist/containers/wav/parse-id3.js +1 -5
  155. package/dist/containers/wav/parse-list.js +1 -5
  156. package/dist/containers/wav/parse-video-section.js +3 -7
  157. package/dist/containers/wav/parse-wav.js +15 -19
  158. package/dist/containers/wav/types.d.ts +2 -2
  159. package/dist/containers/wav/types.js +1 -2
  160. package/dist/containers/webm/allowed-partial-segments.js +1 -4
  161. package/dist/containers/webm/av1-codec-private.js +3 -7
  162. package/dist/containers/webm/color.js +6 -10
  163. package/dist/containers/webm/description.js +6 -10
  164. package/dist/containers/webm/get-ready-tracks.js +13 -18
  165. package/dist/containers/webm/get-sample-from-block.js +12 -16
  166. package/dist/containers/webm/make-track.js +43 -48
  167. package/dist/containers/webm/parse-ebml.js +14 -19
  168. package/dist/containers/webm/parse-webm-header.js +3 -7
  169. package/dist/containers/webm/segments/all-segments.js +168 -173
  170. package/dist/containers/webm/segments/block-simple-block-flags.js +4 -8
  171. package/dist/containers/webm/segments/track-entry.js +1 -5
  172. package/dist/containers/webm/segments.js +9 -13
  173. package/dist/containers/webm/traversal.js +37 -67
  174. package/dist/convert-audio-or-video-sample.js +1 -5
  175. package/dist/download-and-parse-media.js +44 -47
  176. package/dist/emit-available-info.js +38 -38
  177. package/dist/emitter.js +1 -5
  178. package/dist/errors.d.ts +2 -17
  179. package/dist/errors.js +10 -30
  180. package/dist/esm/fetch.mjs +93 -67
  181. package/dist/esm/index.mjs +742 -194
  182. package/dist/esm/node.mjs +59 -36
  183. package/dist/esm/universal.mjs +323 -0
  184. package/dist/esm/web-file.mjs +55 -43
  185. package/dist/esm/web.mjs +257 -0
  186. package/dist/esm/worker-server-entry.mjs +13100 -0
  187. package/dist/esm/worker-server.mjs +12914 -0
  188. package/dist/esm/worker-web-entry.mjs +13013 -0
  189. package/dist/esm/worker.mjs +439 -0
  190. package/dist/fetch.js +1 -17
  191. package/dist/file-types/bmp.js +3 -7
  192. package/dist/file-types/detect-file-type.js +24 -38
  193. package/dist/file-types/index.js +22 -26
  194. package/dist/file-types/jpeg.js +4 -9
  195. package/dist/file-types/pdf.js +3 -7
  196. package/dist/file-types/png.js +4 -9
  197. package/dist/file-types/webp.js +3 -7
  198. package/dist/forward-controller.js +1 -5
  199. package/dist/get-audio-codec.js +25 -38
  200. package/dist/get-container.d.ts +3 -3
  201. package/dist/get-container.js +5 -10
  202. package/dist/get-dimensions.js +8 -13
  203. package/dist/get-duration.js +27 -34
  204. package/dist/get-fields-from-callbacks.js +1 -5
  205. package/dist/get-fps.js +24 -34
  206. package/dist/get-is-hdr.js +5 -10
  207. package/dist/get-keyframes.js +6 -11
  208. package/dist/get-location.js +4 -9
  209. package/dist/get-number-of-audio-channels.js +2 -7
  210. package/dist/get-sample-aspect-ratio.js +17 -30
  211. package/dist/get-sample-positions-from-lpcm.js +5 -9
  212. package/dist/get-sample-positions.js +1 -5
  213. package/dist/get-sample-rate.js +2 -7
  214. package/dist/get-tracks.d.ts +5 -0
  215. package/dist/get-tracks.js +37 -44
  216. package/dist/get-video-codec.js +26 -34
  217. package/dist/has-all-info.js +33 -38
  218. package/dist/index.d.ts +18 -11
  219. package/dist/index.js +34 -48
  220. package/dist/init-video.d.ts +1 -1
  221. package/dist/init-video.js +47 -20
  222. package/dist/internal-parse-media.js +36 -40
  223. package/dist/is-audio-structure.d.ts +2 -2
  224. package/dist/is-audio-structure.js +1 -5
  225. package/dist/log.js +8 -12
  226. package/dist/make-hvc1-codec-strings.js +1 -5
  227. package/dist/media-parser-controller.js +7 -11
  228. package/dist/metadata/get-metadata.d.ts +4 -4
  229. package/dist/metadata/get-metadata.js +17 -22
  230. package/dist/metadata/metadata-from-iso.d.ts +3 -3
  231. package/dist/metadata/metadata-from-iso.js +12 -17
  232. package/dist/metadata/metadata-from-matroska.d.ts +2 -2
  233. package/dist/metadata/metadata-from-matroska.js +3 -7
  234. package/dist/metadata/metadata-from-riff.d.ts +2 -2
  235. package/dist/metadata/metadata-from-riff.js +3 -7
  236. package/dist/node-writer.js +1 -17
  237. package/dist/node.js +1 -17
  238. package/dist/options.d.ts +30 -24
  239. package/dist/options.js +1 -2
  240. package/dist/parse-media-on-browser-worker.d.ts +2 -0
  241. package/dist/parse-media-on-browser-worker.js +4 -0
  242. package/dist/parse-media-on-server-worker.d.ts +2 -0
  243. package/dist/parse-media-on-server-worker.js +4 -0
  244. package/dist/parse-media-on-web-worker.d.ts +2 -0
  245. package/dist/parse-media-on-web-worker.js +4 -0
  246. package/dist/parse-media-on-worker-entry.d.ts +2 -0
  247. package/dist/parse-media-on-worker-entry.js +269 -0
  248. package/dist/parse-media-on-worker.d.ts +2 -0
  249. package/dist/parse-media-on-worker.js +4 -0
  250. package/dist/parse-media.js +10 -13
  251. package/dist/parse-result.d.ts +3 -3
  252. package/dist/parse-result.js +1 -2
  253. package/dist/pause-signal.js +1 -5
  254. package/dist/perform-seek.js +6 -10
  255. package/dist/readers/fetch/get-body-and-reader.js +1 -5
  256. package/dist/readers/fetch/resolve-url.d.ts +1 -1
  257. package/dist/readers/fetch/resolve-url.js +1 -5
  258. package/dist/readers/from-fetch.d.ts +4 -1
  259. package/dist/readers/from-fetch.js +109 -94
  260. package/dist/readers/from-node.d.ts +4 -1
  261. package/dist/readers/from-node.js +58 -41
  262. package/dist/readers/from-web-file.d.ts +4 -1
  263. package/dist/readers/from-web-file.js +55 -49
  264. package/dist/readers/reader.d.ts +5 -1
  265. package/dist/readers/reader.js +1 -2
  266. package/dist/readers/universal.d.ts +2 -0
  267. package/dist/readers/universal.js +35 -0
  268. package/dist/readers/web.d.ts +2 -0
  269. package/dist/readers/web.js +22 -0
  270. package/dist/register-track.js +9 -15
  271. package/dist/remotion-license-acknowledge.js +4 -8
  272. package/dist/run-parse-iteration.js +26 -25
  273. package/dist/samples-from-moof.js +8 -12
  274. package/dist/skip.js +1 -5
  275. package/dist/state/aac-state.js +1 -5
  276. package/dist/state/can-skip-tracks.d.ts +2 -2
  277. package/dist/state/can-skip-tracks.js +3 -8
  278. package/dist/state/emitted-fields.js +1 -5
  279. package/dist/state/flac-state.js +1 -5
  280. package/dist/state/has-tracks-section.d.ts +2 -2
  281. package/dist/state/has-tracks-section.js +6 -8
  282. package/dist/state/images.js +1 -5
  283. package/dist/state/iso-base-media/cached-sample-positions.js +8 -13
  284. package/dist/state/iso-base-media/iso-state.js +5 -9
  285. package/dist/state/iso-base-media/moov-box.js +1 -5
  286. package/dist/state/keyframes.js +1 -5
  287. package/dist/state/last-eventloop-break.js +3 -7
  288. package/dist/state/m3u-state.d.ts +6 -0
  289. package/dist/state/m3u-state.js +20 -12
  290. package/dist/state/may-skip-video-data.js +3 -7
  291. package/dist/state/mp3.js +1 -5
  292. package/dist/state/need-samples-for-fields.js +1 -5
  293. package/dist/state/parser-state.d.ts +15 -10
  294. package/dist/state/parser-state.js +37 -41
  295. package/dist/state/riff.js +1 -5
  296. package/dist/state/sample-callbacks.d.ts +3 -2
  297. package/dist/state/sample-callbacks.js +8 -12
  298. package/dist/state/slow-duration-fps.js +1 -5
  299. package/dist/state/structure.d.ts +4 -4
  300. package/dist/state/structure.js +1 -5
  301. package/dist/state/transport-stream.js +3 -7
  302. package/dist/state/video-section.js +1 -5
  303. package/dist/state/webm.js +5 -9
  304. package/dist/throttled-progress.js +1 -5
  305. package/dist/truthy.js +1 -4
  306. package/dist/universal.d.ts +1 -0
  307. package/dist/universal.js +1 -0
  308. package/dist/version.d.ts +1 -1
  309. package/dist/version.js +1 -4
  310. package/dist/web-file.js +1 -17
  311. package/dist/web.d.ts +1 -0
  312. package/dist/web.js +1 -0
  313. package/dist/webcodec-sample-types.d.ts +6 -4
  314. package/dist/webcodec-sample-types.js +1 -2
  315. package/dist/worker/forward-controller.d.ts +3 -0
  316. package/dist/worker/forward-controller.js +20 -0
  317. package/dist/worker/serialize-error.d.ts +4 -0
  318. package/dist/worker/serialize-error.js +95 -0
  319. package/dist/worker/worker-types.d.ts +243 -0
  320. package/dist/worker/worker-types.js +1 -0
  321. package/dist/worker-bun-entry.d.ts +1 -0
  322. package/dist/worker-bun-entry.js +5 -0
  323. package/dist/worker-entry.d.ts +1 -0
  324. package/dist/worker-entry.js +5 -0
  325. package/dist/worker-server-entry.d.ts +1 -0
  326. package/dist/worker-server-entry.js +5 -0
  327. package/dist/worker-server.d.ts +2 -0
  328. package/dist/worker-server.js +381 -0
  329. package/dist/worker-web-entry.d.ts +1 -0
  330. package/dist/worker-web-entry.js +5 -0
  331. package/dist/worker.d.ts +2 -0
  332. package/dist/worker.js +267 -0
  333. package/dist/writers/node.js +16 -23
  334. package/dist/writers/writer.js +1 -2
  335. package/package.json +40 -21
  336. package/fetch.js +0 -2
  337. package/test.json +0 -663
  338. package/web-file.js +0 -2
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isJpeg = void 0;
4
- exports.getJpegDimensions = getJpegDimensions;
5
- const detect_file_type_1 = require("./detect-file-type");
6
- function getJpegDimensions(data) {
1
+ import { matchesPattern } from './detect-file-type';
2
+ export function getJpegDimensions(data) {
7
3
  let offset = 0;
8
4
  // Helper function to read a 16-bit big-endian integer
9
5
  function readUint16BE(o) {
@@ -32,13 +28,12 @@ function getJpegDimensions(data) {
32
28
  }
33
29
  return null; // Return null if dimensions are not found
34
30
  }
35
- const isJpeg = (data) => {
31
+ export const isJpeg = (data) => {
36
32
  const jpegPattern = new Uint8Array([0xff, 0xd8]);
37
- const jpeg = (0, detect_file_type_1.matchesPattern)(jpegPattern)(data.subarray(0, 2));
33
+ const jpeg = matchesPattern(jpegPattern)(data.subarray(0, 2));
38
34
  if (!jpeg) {
39
35
  return null;
40
36
  }
41
37
  const dim = getJpegDimensions(data);
42
38
  return { dimensions: dim, type: 'jpeg' };
43
39
  };
44
- exports.isJpeg = isJpeg;
@@ -1,12 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPdf = void 0;
4
- const detect_file_type_1 = require("./detect-file-type");
5
- const isPdf = (data) => {
1
+ import { matchesPattern } from './detect-file-type';
2
+ export const isPdf = (data) => {
6
3
  if (data.length < 4) {
7
4
  return null;
8
5
  }
9
6
  const pdfPattern = new Uint8Array([0x25, 0x50, 0x44, 0x46]);
10
- return (0, detect_file_type_1.matchesPattern)(pdfPattern)(data.subarray(0, 4)) ? { type: 'pdf' } : null;
7
+ return matchesPattern(pdfPattern)(data.subarray(0, 4)) ? { type: 'pdf' } : null;
11
8
  };
12
- exports.isPdf = isPdf;
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPng = void 0;
4
- exports.getPngDimensions = getPngDimensions;
5
- const detect_file_type_1 = require("./detect-file-type");
6
- function getPngDimensions(pngData) {
1
+ import { matchesPattern } from './detect-file-type';
2
+ export function getPngDimensions(pngData) {
7
3
  if (pngData.length < 24) {
8
4
  // PNG header (8) + IHDR chunk (16) minimum
9
5
  return null;
@@ -21,12 +17,11 @@ function getPngDimensions(pngData) {
21
17
  height: view.getUint32(20, false), // false = big-endian
22
18
  };
23
19
  }
24
- const isPng = (data) => {
20
+ export const isPng = (data) => {
25
21
  const pngPattern = new Uint8Array([0x89, 0x50, 0x4e, 0x47]);
26
- if ((0, detect_file_type_1.matchesPattern)(pngPattern)(data.subarray(0, 4))) {
22
+ if (matchesPattern(pngPattern)(data.subarray(0, 4))) {
27
23
  const png = getPngDimensions(data);
28
24
  return { dimensions: png, type: 'png' };
29
25
  }
30
26
  return null;
31
27
  };
32
- exports.isPng = isPng;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isWebp = void 0;
4
- const detect_file_type_1 = require("./detect-file-type");
1
+ import { matchesPattern } from './detect-file-type';
5
2
  function getWebPDimensions(bytes) {
6
3
  // Check if we have enough bytes for a basic WebP header
7
4
  if (bytes.length < 30) {
@@ -56,9 +53,9 @@ function getWebPDimensions(bytes) {
56
53
  }
57
54
  return null;
58
55
  }
59
- const isWebp = (data) => {
56
+ export const isWebp = (data) => {
60
57
  const webpPattern = new Uint8Array([0x52, 0x49, 0x46, 0x46]);
61
- if ((0, detect_file_type_1.matchesPattern)(webpPattern)(data.subarray(0, 4))) {
58
+ if (matchesPattern(webpPattern)(data.subarray(0, 4))) {
62
59
  return {
63
60
  type: 'webp',
64
61
  dimensions: getWebPDimensions(data),
@@ -66,4 +63,3 @@ const isWebp = (data) => {
66
63
  }
67
64
  return null;
68
65
  };
69
- exports.isWebp = isWebp;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.forwardMediaParserController = void 0;
4
- const forwardMediaParserController = ({ parentController, childController, }) => {
1
+ export const forwardMediaParserController = ({ parentController, childController, }) => {
5
2
  const onAbort = ({ detail }) => {
6
3
  childController.abort(detail.reason);
7
4
  };
@@ -22,4 +19,3 @@ const forwardMediaParserController = ({ parentController, childController, }) =>
22
19
  },
23
20
  };
24
21
  };
25
- exports.forwardMediaParserController = forwardMediaParserController;
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAudioCodecFromTrack = exports.getAudioCodecStringFromTrak = exports.getAudioCodecFromIso = exports.isLpcmAudioCodec = exports.getAudioCodecFromTrak = exports.getSampleRate = exports.getNumberOfChannelsFromTrak = exports.getCodecPrivateFromTrak = exports.hasAudioCodec = exports.getAudioCodec = void 0;
4
- const traversal_1 = require("./containers/iso-base-media/traversal");
5
- const get_fps_1 = require("./get-fps");
6
- const get_tracks_1 = require("./get-tracks");
7
- const getAudioCodec = (parserState) => {
8
- const tracks = (0, get_tracks_1.getTracks)(parserState);
1
+ import { getStsdBox, getTraks } from './containers/iso-base-media/traversal';
2
+ import { trakBoxContainsAudio } from './get-fps';
3
+ import { getHasTracks, getTracks, } from './get-tracks';
4
+ export const getAudioCodec = (parserState) => {
5
+ const tracks = getTracks(parserState);
9
6
  const allTracks = tracks.audioTracks.length +
10
7
  tracks.otherTracks.length +
11
8
  tracks.videoTracks.length;
@@ -21,11 +18,9 @@ const getAudioCodec = (parserState) => {
21
18
  }
22
19
  return null;
23
20
  };
24
- exports.getAudioCodec = getAudioCodec;
25
- const hasAudioCodec = (state) => {
26
- return (0, get_tracks_1.getHasTracks)(state);
21
+ export const hasAudioCodec = (state) => {
22
+ return getHasTracks(state);
27
23
  };
28
- exports.hasAudioCodec = hasAudioCodec;
29
24
  const getCodecSpecificatorFromEsdsBox = ({ child, }) => {
30
25
  const descriptor = child.descriptors.find((d) => d.type === 'decoder-config-descriptor');
31
26
  if (!descriptor) {
@@ -54,8 +49,8 @@ const getCodecSpecificatorFromEsdsBox = ({ child, }) => {
54
49
  description: audioSpecificConfig.asBytes,
55
50
  };
56
51
  };
57
- const getCodecPrivateFromTrak = (trakBox) => {
58
- const stsdBox = (0, traversal_1.getStsdBox)(trakBox);
52
+ export const getCodecPrivateFromTrak = (trakBox) => {
53
+ const stsdBox = getStsdBox(trakBox);
59
54
  if (!stsdBox) {
60
55
  return null;
61
56
  }
@@ -77,7 +72,6 @@ const getCodecPrivateFromTrak = (trakBox) => {
77
72
  }
78
73
  return mp4a.asBytes;
79
74
  };
80
- exports.getCodecPrivateFromTrak = getCodecPrivateFromTrak;
81
75
  const onSample = (sample, children) => {
82
76
  const child = children.find((c) => c.type === 'esds-box');
83
77
  if (child && child.type === 'esds-box') {
@@ -96,8 +90,8 @@ const onSample = (sample, children) => {
96
90
  description: undefined,
97
91
  };
98
92
  };
99
- const getNumberOfChannelsFromTrak = (trak) => {
100
- const stsdBox = (0, traversal_1.getStsdBox)(trak);
93
+ export const getNumberOfChannelsFromTrak = (trak) => {
94
+ const stsdBox = getStsdBox(trak);
101
95
  if (!stsdBox) {
102
96
  return null;
103
97
  }
@@ -107,9 +101,8 @@ const getNumberOfChannelsFromTrak = (trak) => {
107
101
  }
108
102
  return sample.numberOfChannels;
109
103
  };
110
- exports.getNumberOfChannelsFromTrak = getNumberOfChannelsFromTrak;
111
- const getSampleRate = (trak) => {
112
- const stsdBox = (0, traversal_1.getStsdBox)(trak);
104
+ export const getSampleRate = (trak) => {
105
+ const stsdBox = getStsdBox(trak);
113
106
  if (!stsdBox) {
114
107
  return null;
115
108
  }
@@ -119,9 +112,8 @@ const getSampleRate = (trak) => {
119
112
  }
120
113
  return sample.sampleRate;
121
114
  };
122
- exports.getSampleRate = getSampleRate;
123
- const getAudioCodecFromTrak = (trak) => {
124
- const stsdBox = (0, traversal_1.getStsdBox)(trak);
115
+ export const getAudioCodecFromTrak = (trak) => {
116
+ const stsdBox = getStsdBox(trak);
125
117
  if (!stsdBox) {
126
118
  return null;
127
119
  }
@@ -142,23 +134,20 @@ const getAudioCodecFromTrak = (trak) => {
142
134
  }
143
135
  return null;
144
136
  };
145
- exports.getAudioCodecFromTrak = getAudioCodecFromTrak;
146
- const isLpcmAudioCodec = (trak) => {
137
+ export const isLpcmAudioCodec = (trak) => {
147
138
  var _a;
148
- return ((_a = (0, exports.getAudioCodecFromTrak)(trak)) === null || _a === void 0 ? void 0 : _a.format) === 'lpcm';
139
+ return ((_a = getAudioCodecFromTrak(trak)) === null || _a === void 0 ? void 0 : _a.format) === 'lpcm';
149
140
  };
150
- exports.isLpcmAudioCodec = isLpcmAudioCodec;
151
- const getAudioCodecFromIso = (moov) => {
152
- const traks = (0, traversal_1.getTraks)(moov);
153
- const trakBox = traks.find((b) => b.type === 'trak-box' && (0, get_fps_1.trakBoxContainsAudio)(b));
141
+ export const getAudioCodecFromIso = (moov) => {
142
+ const traks = getTraks(moov);
143
+ const trakBox = traks.find((b) => b.type === 'trak-box' && trakBoxContainsAudio(b));
154
144
  if (!trakBox) {
155
145
  return null;
156
146
  }
157
- return (0, exports.getAudioCodecFromTrak)(trakBox);
147
+ return getAudioCodecFromTrak(trakBox);
158
148
  };
159
- exports.getAudioCodecFromIso = getAudioCodecFromIso;
160
- const getAudioCodecStringFromTrak = (trak) => {
161
- const codec = (0, exports.getAudioCodecFromTrak)(trak);
149
+ export const getAudioCodecStringFromTrak = (trak) => {
150
+ const codec = getAudioCodecFromTrak(trak);
162
151
  if (!codec) {
163
152
  throw new Error('Expected codec');
164
153
  }
@@ -184,7 +173,6 @@ const getAudioCodecStringFromTrak = (trak) => {
184
173
  description: codec.description,
185
174
  };
186
175
  };
187
- exports.getAudioCodecStringFromTrak = getAudioCodecStringFromTrak;
188
176
  const getAudioCodecFromAudioCodecInfo = (codec) => {
189
177
  if (codec.format === 'twos') {
190
178
  return 'pcm-s16';
@@ -212,11 +200,10 @@ const getAudioCodecFromAudioCodecInfo = (codec) => {
212
200
  }
213
201
  throw new Error(`Unknown audio format: ${codec.format}`);
214
202
  };
215
- const getAudioCodecFromTrack = (track) => {
216
- const audioSample = (0, exports.getAudioCodecFromTrak)(track);
203
+ export const getAudioCodecFromTrack = (track) => {
204
+ const audioSample = getAudioCodecFromTrak(track);
217
205
  if (!audioSample) {
218
206
  throw new Error('Could not find audio sample');
219
207
  }
220
208
  return getAudioCodecFromAudioCodecInfo(audioSample);
221
209
  };
222
- exports.getAudioCodecFromTrack = getAudioCodecFromTrack;
@@ -1,4 +1,4 @@
1
1
  import type { MediaParserContainer } from './options';
2
- import type { Structure } from './parse-result';
3
- export declare const getContainer: (segments: Structure) => MediaParserContainer;
4
- export declare const hasContainer: (boxes: Structure) => boolean;
2
+ import type { MediaParserStructureUnstable } from './parse-result';
3
+ export declare const getContainer: (segments: MediaParserStructureUnstable) => MediaParserContainer;
4
+ export declare const hasContainer: (boxes: MediaParserStructureUnstable) => boolean;
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasContainer = exports.getContainer = void 0;
4
- const traversal_1 = require("./containers/riff/traversal");
5
- const getContainer = (segments) => {
1
+ import { isRiffAvi } from './containers/riff/traversal';
2
+ export const getContainer = (segments) => {
6
3
  if (segments.type === 'iso-base-media') {
7
4
  return 'mp4';
8
5
  }
@@ -22,7 +19,7 @@ const getContainer = (segments) => {
22
19
  return 'flac';
23
20
  }
24
21
  if (segments.type === 'riff') {
25
- if ((0, traversal_1.isRiffAvi)(segments)) {
22
+ if (isRiffAvi(segments)) {
26
23
  return 'avi';
27
24
  }
28
25
  throw new Error('Unknown RIFF container ' + segments.type);
@@ -35,13 +32,11 @@ const getContainer = (segments) => {
35
32
  }
36
33
  throw new Error('Unknown container ' + segments);
37
34
  };
38
- exports.getContainer = getContainer;
39
- const hasContainer = (boxes) => {
35
+ export const hasContainer = (boxes) => {
40
36
  try {
41
- return (0, exports.getContainer)(boxes) !== null;
37
+ return getContainer(boxes) !== null;
42
38
  }
43
39
  catch (_a) {
44
40
  return false;
45
41
  }
46
42
  };
47
- exports.hasContainer = hasContainer;
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasDimensions = exports.getDimensions = void 0;
4
- const get_tracks_1 = require("./get-tracks");
5
- const is_audio_structure_1 = require("./is-audio-structure");
6
- const getDimensions = (state) => {
1
+ import { getTracks } from './get-tracks';
2
+ import { isAudioStructure } from './is-audio-structure';
3
+ export const getDimensions = (state) => {
7
4
  const structure = state.getStructureOrNull();
8
- if (structure && (0, is_audio_structure_1.isAudioStructure)(structure)) {
5
+ if (structure && isAudioStructure(structure)) {
9
6
  return null;
10
7
  }
11
- const { videoTracks } = (0, get_tracks_1.getTracks)(state);
8
+ const { videoTracks } = getTracks(state);
12
9
  if (!videoTracks.length) {
13
10
  return null;
14
11
  }
@@ -21,17 +18,15 @@ const getDimensions = (state) => {
21
18
  unrotatedWidth: firstVideoTrack.displayAspectWidth,
22
19
  };
23
20
  };
24
- exports.getDimensions = getDimensions;
25
- const hasDimensions = (state) => {
21
+ export const hasDimensions = (state) => {
26
22
  const structure = state.getStructureOrNull();
27
- if (structure && (0, is_audio_structure_1.isAudioStructure)(structure)) {
23
+ if (structure && isAudioStructure(structure)) {
28
24
  return true;
29
25
  }
30
26
  try {
31
- return (0, exports.getDimensions)(state) !== null;
27
+ return getDimensions(state) !== null;
32
28
  }
33
29
  catch (_a) {
34
30
  return false;
35
31
  }
36
32
  };
37
- exports.hasDimensions = hasDimensions;
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasSlowDuration = exports.hasDuration = exports.getDuration = exports.isMatroska = void 0;
4
- const get_duration_from_flac_1 = require("./containers/flac/get-duration-from-flac");
5
- const get_sample_positions_from_track_1 = require("./containers/iso-base-media/get-sample-positions-from-track");
6
- const traversal_1 = require("./containers/iso-base-media/traversal");
7
- const get_duration_from_m3u_1 = require("./containers/m3u/get-duration-from-m3u");
8
- const get_duration_1 = require("./containers/mp3/get-duration");
9
- const get_duration_2 = require("./containers/riff/get-duration");
10
- const get_duration_from_wav_1 = require("./containers/wav/get-duration-from-wav");
11
- const get_tracks_1 = require("./get-tracks");
1
+ import { getDurationFromFlac } from './containers/flac/get-duration-from-flac';
2
+ import { getSamplePositionsFromTrack } from './containers/iso-base-media/get-sample-positions-from-track';
3
+ import { getMoofBoxes, getMoovBoxFromState, getMvhdBox, } from './containers/iso-base-media/traversal';
4
+ import { getDurationFromM3u } from './containers/m3u/get-duration-from-m3u';
5
+ import { getDurationFromMp3 } from './containers/mp3/get-duration';
6
+ import { getDurationFromAvi } from './containers/riff/get-duration';
7
+ import { getDurationFromWav } from './containers/wav/get-duration-from-wav';
8
+ import { getHasTracks, getTracks } from './get-tracks';
12
9
  const getDurationFromMatroska = (segments) => {
13
10
  const mainSegment = segments.find((s) => s.type === 'Segment');
14
11
  if (!mainSegment || mainSegment.type !== 'Segment') {
@@ -33,18 +30,17 @@ const getDurationFromMatroska = (segments) => {
33
30
  }
34
31
  return (duration.value.value / timestampScale.value.value) * 1000;
35
32
  };
36
- const isMatroska = (boxes) => {
33
+ export const isMatroska = (boxes) => {
37
34
  const matroskaBox = boxes.find((b) => b.type === 'Segment');
38
35
  return matroskaBox;
39
36
  };
40
- exports.isMatroska = isMatroska;
41
37
  const isoHasDuration = (parserState) => {
42
38
  const structure = parserState.getIsoStructure();
43
- const moovBox = (0, traversal_1.getMoovBox)(parserState);
39
+ const moovBox = getMoovBoxFromState(parserState);
44
40
  if (!moovBox) {
45
41
  return false;
46
42
  }
47
- const mvhdBox = (0, traversal_1.getMvhdBox)(moovBox);
43
+ const mvhdBox = getMvhdBox(moovBox);
48
44
  if (!mvhdBox) {
49
45
  return false;
50
46
  }
@@ -55,19 +51,19 @@ const isoHasDuration = (parserState) => {
55
51
  return true;
56
52
  }
57
53
  // Checking if this is a fragmented mp4
58
- const moofBoxes = (0, traversal_1.getMoofBoxes)(structure.boxes);
54
+ const moofBoxes = getMoofBoxes(structure.boxes);
59
55
  const hasMvex = moovBox.children.some((b) => b.type === 'regular-box' && b.boxType === 'mvex');
60
56
  const isFragmented = moofBoxes.length > 0 || hasMvex;
61
57
  return !isFragmented;
62
58
  };
63
59
  const getDurationFromIsoBaseMedia = (parserState) => {
64
60
  const structure = parserState.getIsoStructure();
65
- const moovBox = (0, traversal_1.getMoovBox)(parserState);
61
+ const moovBox = getMoovBoxFromState(parserState);
66
62
  if (!moovBox) {
67
63
  return null;
68
64
  }
69
- const moofBoxes = (0, traversal_1.getMoofBoxes)(structure.boxes);
70
- const mvhdBox = (0, traversal_1.getMvhdBox)(moovBox);
65
+ const moofBoxes = getMoofBoxes(structure.boxes);
66
+ const mvhdBox = getMvhdBox(moovBox);
71
67
  if (!mvhdBox) {
72
68
  return null;
73
69
  }
@@ -77,7 +73,7 @@ const getDurationFromIsoBaseMedia = (parserState) => {
77
73
  if (mvhdBox.durationInSeconds > 0) {
78
74
  return mvhdBox.durationInSeconds;
79
75
  }
80
- const tracks = (0, get_tracks_1.getTracks)(parserState);
76
+ const tracks = getTracks(parserState);
81
77
  const allTracks = [
82
78
  ...tracks.videoTracks,
83
79
  ...tracks.audioTracks,
@@ -85,7 +81,7 @@ const getDurationFromIsoBaseMedia = (parserState) => {
85
81
  ];
86
82
  const allSamples = allTracks.map((t) => {
87
83
  const { timescale: ts } = t;
88
- const samplePositions = (0, get_sample_positions_from_track_1.getSamplePositionsFromTrack)({
84
+ const samplePositions = getSamplePositionsFromTrack({
89
85
  trakBox: t.trakBox,
90
86
  moofBoxes,
91
87
  });
@@ -95,7 +91,7 @@ const getDurationFromIsoBaseMedia = (parserState) => {
95
91
  const highestTimestamp = Math.max(...allSamples);
96
92
  return highestTimestamp;
97
93
  };
98
- const getDuration = (parserState) => {
94
+ export const getDuration = (parserState) => {
99
95
  const structure = parserState.getStructure();
100
96
  if (structure.type === 'matroska') {
101
97
  return getDurationFromMatroska(structure.boxes);
@@ -104,32 +100,31 @@ const getDuration = (parserState) => {
104
100
  return getDurationFromIsoBaseMedia(parserState);
105
101
  }
106
102
  if (structure.type === 'riff') {
107
- return (0, get_duration_2.getDurationFromAvi)(structure);
103
+ return getDurationFromAvi(structure);
108
104
  }
109
105
  if (structure.type === 'transport-stream') {
110
106
  return null;
111
107
  }
112
108
  if (structure.type === 'mp3') {
113
- return (0, get_duration_1.getDurationFromMp3)(parserState);
109
+ return getDurationFromMp3(parserState);
114
110
  }
115
111
  if (structure.type === 'wav') {
116
- return (0, get_duration_from_wav_1.getDurationFromWav)(parserState);
112
+ return getDurationFromWav(parserState);
117
113
  }
118
114
  if (structure.type === 'aac') {
119
115
  return null;
120
116
  }
121
117
  if (structure.type === 'flac') {
122
- return (0, get_duration_from_flac_1.getDurationFromFlac)(parserState);
118
+ return getDurationFromFlac(parserState);
123
119
  }
124
120
  if (structure.type === 'm3u') {
125
- return (0, get_duration_from_m3u_1.getDurationFromM3u)(parserState);
121
+ return getDurationFromM3u(parserState);
126
122
  }
127
123
  throw new Error('Has no duration ' + structure);
128
124
  };
129
- exports.getDuration = getDuration;
130
125
  // `duration` just grabs from metadata, and otherwise returns null
131
126
  // Therefore just checking if we have tracks
132
- const hasDuration = (parserState) => {
127
+ export const hasDuration = (parserState) => {
133
128
  const structure = parserState.getStructureOrNull();
134
129
  if (structure === null) {
135
130
  return false;
@@ -137,17 +132,15 @@ const hasDuration = (parserState) => {
137
132
  if (structure.type === 'iso-base-media') {
138
133
  return isoHasDuration(parserState);
139
134
  }
140
- return (0, get_tracks_1.getHasTracks)(parserState);
135
+ return getHasTracks(parserState);
141
136
  };
142
- exports.hasDuration = hasDuration;
143
137
  // `slowDuration` goes through everything, and therefore is false
144
138
  // Unless it it somewhere in the metadata and is non-null
145
- const hasSlowDuration = (parserState) => {
139
+ export const hasSlowDuration = (parserState) => {
146
140
  try {
147
- return (0, exports.hasDuration)(parserState) && (0, exports.getDuration)(parserState) !== null;
141
+ return hasDuration(parserState) && getDuration(parserState) !== null;
148
142
  }
149
143
  catch (_a) {
150
144
  return false;
151
145
  }
152
146
  };
153
- exports.hasSlowDuration = hasSlowDuration;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFieldsFromCallback = void 0;
4
- const getFieldsFromCallback = ({ fields, callbacks, }) => {
1
+ export const getFieldsFromCallback = ({ fields, callbacks, }) => {
5
2
  const newFields = {
6
3
  audioCodec: Boolean(callbacks.onAudioCodec),
7
4
  container: Boolean(callbacks.onContainer),
@@ -35,4 +32,3 @@ const getFieldsFromCallback = ({ fields, callbacks, }) => {
35
32
  };
36
33
  return newFields;
37
34
  };
38
- exports.getFieldsFromCallback = getFieldsFromCallback;
package/dist/get-fps.js CHANGED
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasFps = exports.hasFpsSuitedForSlowFps = exports.getFps = exports.getFpsFromMp4TrakBox = exports.getTimescaleAndDuration = exports.trakBoxContainsVideo = exports.trakBoxContainsAudio = void 0;
4
- const traversal_1 = require("./containers/iso-base-media/traversal");
5
- const traversal_2 = require("./containers/riff/traversal");
6
- const is_audio_structure_1 = require("./is-audio-structure");
1
+ import { getMdhdBox, getMoovBoxFromState, getStsdBox, getSttsBox, getTraks, } from './containers/iso-base-media/traversal';
2
+ import { getStrhBox, getStrlBoxes } from './containers/riff/traversal';
3
+ import { isAudioStructure } from './is-audio-structure';
7
4
  const calculateFps = ({ sttsBox, timeScale, durationInSamples, }) => {
8
5
  let totalSamples = 0;
9
6
  for (const sample of sttsBox.sampleDistribution) {
@@ -16,8 +13,8 @@ const calculateFps = ({ sttsBox, timeScale, durationInSamples, }) => {
16
13
  const fps = totalSamples / durationInSeconds;
17
14
  return fps;
18
15
  };
19
- const trakBoxContainsAudio = (trakBox) => {
20
- const stsd = (0, traversal_1.getStsdBox)(trakBox);
16
+ export const trakBoxContainsAudio = (trakBox) => {
17
+ const stsd = getStsdBox(trakBox);
21
18
  if (!stsd) {
22
19
  return false;
23
20
  }
@@ -27,9 +24,8 @@ const trakBoxContainsAudio = (trakBox) => {
27
24
  }
28
25
  return true;
29
26
  };
30
- exports.trakBoxContainsAudio = trakBoxContainsAudio;
31
- const trakBoxContainsVideo = (trakBox) => {
32
- const stsd = (0, traversal_1.getStsdBox)(trakBox);
27
+ export const trakBoxContainsVideo = (trakBox) => {
28
+ const stsd = getStsdBox(trakBox);
33
29
  if (!stsd) {
34
30
  return false;
35
31
  }
@@ -39,21 +35,19 @@ const trakBoxContainsVideo = (trakBox) => {
39
35
  }
40
36
  return true;
41
37
  };
42
- exports.trakBoxContainsVideo = trakBoxContainsVideo;
43
- const getTimescaleAndDuration = (trakBox) => {
44
- const mdhdBox = (0, traversal_1.getMdhdBox)(trakBox);
38
+ export const getTimescaleAndDuration = (trakBox) => {
39
+ const mdhdBox = getMdhdBox(trakBox);
45
40
  if (mdhdBox) {
46
41
  return { timescale: mdhdBox.timescale, duration: mdhdBox.duration };
47
42
  }
48
43
  return null;
49
44
  };
50
- exports.getTimescaleAndDuration = getTimescaleAndDuration;
51
- const getFpsFromMp4TrakBox = (trakBox) => {
52
- const timescaleAndDuration = (0, exports.getTimescaleAndDuration)(trakBox);
45
+ export const getFpsFromMp4TrakBox = (trakBox) => {
46
+ const timescaleAndDuration = getTimescaleAndDuration(trakBox);
53
47
  if (!timescaleAndDuration) {
54
48
  return null;
55
49
  }
56
- const sttsBox = (0, traversal_1.getSttsBox)(trakBox);
50
+ const sttsBox = getSttsBox(trakBox);
57
51
  if (!sttsBox) {
58
52
  return null;
59
53
  }
@@ -63,23 +57,22 @@ const getFpsFromMp4TrakBox = (trakBox) => {
63
57
  durationInSamples: timescaleAndDuration.duration,
64
58
  });
65
59
  };
66
- exports.getFpsFromMp4TrakBox = getFpsFromMp4TrakBox;
67
60
  const getFpsFromIsoMaseMedia = (state) => {
68
- const moovBox = (0, traversal_1.getMoovBox)(state);
61
+ const moovBox = getMoovBoxFromState(state);
69
62
  if (!moovBox) {
70
63
  return null;
71
64
  }
72
- const trackBoxes = (0, traversal_1.getTraks)(moovBox);
73
- const trackBox = trackBoxes.find(exports.trakBoxContainsVideo);
65
+ const trackBoxes = getTraks(moovBox);
66
+ const trackBox = trackBoxes.find(trakBoxContainsVideo);
74
67
  if (!trackBox) {
75
68
  return null;
76
69
  }
77
- return (0, exports.getFpsFromMp4TrakBox)(trackBox);
70
+ return getFpsFromMp4TrakBox(trackBox);
78
71
  };
79
72
  const getFpsFromAvi = (structure) => {
80
- const strl = (0, traversal_2.getStrlBoxes)(structure);
73
+ const strl = getStrlBoxes(structure);
81
74
  for (const s of strl) {
82
- const strh = (0, traversal_2.getStrhBox)(s.children);
75
+ const strh = getStrhBox(s.children);
83
76
  if (!strh) {
84
77
  throw new Error('No strh box');
85
78
  }
@@ -90,7 +83,7 @@ const getFpsFromAvi = (structure) => {
90
83
  }
91
84
  return null;
92
85
  };
93
- const getFps = (state) => {
86
+ export const getFps = (state) => {
94
87
  const segments = state.getStructure();
95
88
  if (segments.type === 'iso-base-media') {
96
89
  return getFpsFromIsoMaseMedia(state);
@@ -118,23 +111,21 @@ const getFps = (state) => {
118
111
  }
119
112
  throw new Error('Cannot get fps, not implemented: ' + segments);
120
113
  };
121
- exports.getFps = getFps;
122
- const hasFpsSuitedForSlowFps = (state) => {
114
+ export const hasFpsSuitedForSlowFps = (state) => {
123
115
  try {
124
- return (0, exports.getFps)(state) !== null;
116
+ return getFps(state) !== null;
125
117
  }
126
118
  catch (_a) {
127
119
  return false;
128
120
  }
129
121
  };
130
- exports.hasFpsSuitedForSlowFps = hasFpsSuitedForSlowFps;
131
- const hasFps = (state) => {
122
+ export const hasFps = (state) => {
132
123
  // Matroska and Transport stream has no FPS metadata
133
124
  // Not bothering to parse
134
125
  // Users should use `slowFps` field
135
126
  // same goes for audio
136
127
  const structure = state.getStructure();
137
- if ((0, is_audio_structure_1.isAudioStructure)(structure)) {
128
+ if (isAudioStructure(structure)) {
138
129
  return true;
139
130
  }
140
131
  if (structure.type === 'matroska') {
@@ -146,6 +137,5 @@ const hasFps = (state) => {
146
137
  if (structure.type === 'm3u') {
147
138
  return true;
148
139
  }
149
- return (0, exports.hasFpsSuitedForSlowFps)(state);
140
+ return hasFpsSuitedForSlowFps(state);
150
141
  };
151
- exports.hasFps = hasFps;