@remotion/media-parser 4.0.286 → 4.0.288

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 (243) hide show
  1. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  2. package/dist/containers/flac/get-seeking-byte.d.ts +6 -0
  3. package/dist/containers/flac/get-seeking-byte.js +26 -0
  4. package/dist/containers/flac/parse-meta.d.ts +6 -0
  5. package/dist/containers/flac/parse-meta.js +31 -0
  6. package/dist/containers/flac/seeking-hints.d.ts +15 -0
  7. package/dist/containers/flac/seeking-hints.js +19 -0
  8. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +2 -2
  9. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.js +6 -3
  10. package/dist/containers/iso-base-media/collect-sample-positions-from-trak.js +7 -5
  11. package/dist/containers/iso-base-media/get-keyframes.js +1 -1
  12. package/dist/containers/iso-base-media/get-sample-positions-from-track.d.ts +2 -2
  13. package/dist/containers/iso-base-media/get-seeking-byte.d.ts +15 -0
  14. package/dist/containers/iso-base-media/{get-seeking-from-mp4.js → get-seeking-byte.js} +16 -2
  15. package/dist/containers/iso-base-media/mdat/mdat.js +13 -5
  16. package/dist/containers/iso-base-media/mdat/postprocess-bytes.d.ts +5 -0
  17. package/dist/containers/iso-base-media/mdat/postprocess-bytes.js +25 -0
  18. package/dist/containers/iso-base-media/process-box.js +5 -3
  19. package/dist/containers/iso-base-media/{get-seeking-info-from-mp4.d.ts → seeking-hints.d.ts} +8 -3
  20. package/dist/containers/iso-base-media/seeking-hints.js +53 -0
  21. package/dist/containers/iso-base-media/should-group-audio-samples.d.ts +6 -0
  22. package/dist/containers/iso-base-media/should-group-audio-samples.js +16 -0
  23. package/dist/containers/iso-base-media/traversal.d.ts +4 -2
  24. package/dist/containers/iso-base-media/traversal.js +6 -5
  25. package/dist/containers/m3u/iterate-over-segment-files.js +23 -20
  26. package/dist/containers/riff/parse-video-section.js +1 -1
  27. package/dist/containers/transport-stream/handle-aac-packet.js +4 -1
  28. package/dist/containers/transport-stream/handle-avc-packet.js +4 -1
  29. package/dist/containers/transport-stream/seeking-hints.d.ts +9 -0
  30. package/dist/containers/transport-stream/seeking-hints.js +26 -0
  31. package/dist/containers/wav/get-seeking-byte.d.ts +2 -2
  32. package/dist/containers/wav/get-seeking-byte.js +2 -2
  33. package/dist/containers/wav/seeking-hints.d.ts +12 -0
  34. package/dist/containers/wav/seeking-hints.js +25 -0
  35. package/dist/containers/webm/seek/get-seeking-byte.d.ts +3 -5
  36. package/dist/containers/webm/seek/get-seeking-byte.js +5 -5
  37. package/dist/containers/webm/seek/seeking-hints.d.ts +10 -0
  38. package/dist/containers/webm/seek/seeking-hints.js +28 -0
  39. package/dist/controller/media-parser-controller.d.ts +3 -0
  40. package/dist/controller/media-parser-controller.js +15 -0
  41. package/dist/download-and-parse-media.js +2 -1
  42. package/dist/emit-available-info.js +1 -1
  43. package/dist/esm/index.mjs +491 -208
  44. package/dist/esm/node-writer.mjs +1 -2
  45. package/dist/esm/node.mjs +1 -2
  46. package/dist/esm/server-worker.mjs +46 -1
  47. package/dist/esm/universal.mjs +2 -4
  48. package/dist/esm/web.mjs +1 -2
  49. package/dist/esm/worker-server-entry.mjs +527 -215
  50. package/dist/esm/worker-web-entry.mjs +526 -213
  51. package/dist/esm/worker.mjs +46 -1
  52. package/dist/{forward-controller.d.ts → forward-controller-pause-resume-abort.d.ts} +1 -1
  53. package/dist/{forward-controller.js → forward-controller-pause-resume-abort.js} +3 -3
  54. package/dist/get-audio-codec.d.ts +1 -0
  55. package/dist/get-audio-codec.js +15 -4
  56. package/dist/get-dimensions.js +1 -1
  57. package/dist/get-duration.js +3 -2
  58. package/dist/get-fps.js +1 -0
  59. package/dist/get-is-hdr.js +2 -2
  60. package/dist/get-keyframes.js +1 -1
  61. package/dist/get-sample-positions-from-mp4.d.ts +4 -1
  62. package/dist/get-sample-positions-from-mp4.js +3 -1
  63. package/dist/get-sample-positions.d.ts +2 -0
  64. package/dist/get-sample-positions.js +2 -0
  65. package/dist/get-seeking-byte.d.ts +7 -5
  66. package/dist/get-seeking-byte.js +13 -12
  67. package/dist/{get-seeking-info.d.ts → get-seeking-hints.d.ts} +7 -3
  68. package/dist/get-seeking-hints.js +35 -0
  69. package/dist/get-tracks.d.ts +4 -4
  70. package/dist/get-tracks.js +8 -6
  71. package/dist/get-video-codec.js +2 -2
  72. package/dist/has-all-info.js +1 -1
  73. package/dist/index.d.ts +31 -3
  74. package/dist/internal-parse-media.js +16 -1
  75. package/dist/iterator/buffer-iterator.js +3 -4
  76. package/dist/metadata/metadata-from-iso.js +1 -0
  77. package/dist/options.d.ts +2 -0
  78. package/dist/parse-media-on-worker-entry.js +51 -1
  79. package/dist/parse-media.js +2 -1
  80. package/dist/samples-from-moof.d.ts +2 -2
  81. package/dist/samples-from-moof.js +7 -8
  82. package/dist/seeking-hints.d.ts +39 -0
  83. package/dist/set-seeking-hints.d.ts +6 -0
  84. package/dist/set-seeking-hints.js +27 -0
  85. package/dist/state/audio-sample-map.d.ts +11 -0
  86. package/dist/state/audio-sample-map.js +21 -0
  87. package/dist/state/has-tracks-section.js +3 -1
  88. package/dist/state/iso-base-media/cached-sample-positions.js +1 -1
  89. package/dist/state/iso-base-media/iso-state.d.ts +18 -2
  90. package/dist/state/iso-base-media/iso-state.js +4 -0
  91. package/dist/state/iso-base-media/lazy-mfra-load.d.ts +3 -0
  92. package/dist/state/iso-base-media/lazy-mfra-load.js +13 -0
  93. package/dist/state/iso-base-media/moov-box.d.ts +7 -2
  94. package/dist/state/iso-base-media/moov-box.js +1 -1
  95. package/dist/state/iso-base-media/precomputed-moof.d.ts +11 -0
  96. package/dist/state/iso-base-media/precomputed-moof.js +28 -0
  97. package/dist/state/iso-base-media/precomputed-tfra.d.ts +6 -0
  98. package/dist/state/iso-base-media/precomputed-tfra.js +17 -0
  99. package/dist/state/keyframes.d.ts +2 -0
  100. package/dist/state/keyframes.js +17 -9
  101. package/dist/state/matroska/lazy-cues-fetch.d.ts +7 -1
  102. package/dist/state/matroska/lazy-cues-fetch.js +21 -0
  103. package/dist/state/matroska/webm.d.ts +7 -0
  104. package/dist/state/matroska/webm.js +9 -1
  105. package/dist/state/parser-state.d.ts +31 -3
  106. package/dist/state/samples-observed/slow-duration-fps.js +0 -3
  107. package/dist/state/transport-stream/observed-pes-header.d.ts +2 -0
  108. package/dist/state/transport-stream/observed-pes-header.js +22 -12
  109. package/dist/state/transport-stream/pts-start-offset.d.ts +4 -1
  110. package/dist/state/transport-stream/pts-start-offset.js +1 -1
  111. package/dist/state/transport-stream/transport-stream.d.ts +5 -1
  112. package/dist/version.d.ts +1 -1
  113. package/dist/version.js +1 -1
  114. package/dist/with-resolvers.d.ts +5 -0
  115. package/dist/work-on-seek-request.js +8 -5
  116. package/dist/worker/{forward-controller.js → forward-controller-to-worker.js} +17 -0
  117. package/dist/worker/serialize-error.d.ts +6 -1
  118. package/dist/worker/serialize-error.js +2 -1
  119. package/dist/worker/worker-types.d.ts +12 -2
  120. package/dist/worker-server.js +16 -5
  121. package/package.json +3 -3
  122. package/dist/containers/iso-base-media/get-mfra-atom.d.ts +0 -9
  123. package/dist/containers/iso-base-media/get-mfra-atom.js +0 -12
  124. package/dist/containers/iso-base-media/get-seeking-from-mp4.d.ts +0 -11
  125. package/dist/containers/iso-base-media/get-seeking-info-from-mp4.js +0 -25
  126. package/dist/containers/iso-base-media/mfra/mfra.d.ts +0 -2
  127. package/dist/containers/iso-base-media/mfra/mfra.js +0 -11
  128. package/dist/containers/transport-stream/get-seeking-info.d.ts +0 -4
  129. package/dist/containers/transport-stream/get-seeking-info.js +0 -17
  130. package/dist/containers/transport-stream/next-pes-header-store.d.ts +0 -6
  131. package/dist/containers/transport-stream/next-pes-header-store.js +0 -18
  132. package/dist/containers/transport-stream/start-offset.d.ts +0 -4
  133. package/dist/containers/transport-stream/start-offset.js +0 -13
  134. package/dist/containers/wav/get-seeking-info.d.ts +0 -7
  135. package/dist/containers/wav/get-seeking-info.js +0 -20
  136. package/dist/containers/wav/parse-video-section.d.ts +0 -5
  137. package/dist/containers/wav/parse-video-section.js +0 -41
  138. package/dist/containers/webm/cues/fetch-web-cues.d.ts +0 -12
  139. package/dist/containers/webm/cues/fetch-web-cues.js +0 -32
  140. package/dist/containers/webm/cues/format-cues.d.ts +0 -8
  141. package/dist/containers/webm/cues/format-cues.js +0 -41
  142. package/dist/containers/webm/cues/get-seeking-byte.d.ts +0 -14
  143. package/dist/containers/webm/cues/get-seeking-byte.js +0 -91
  144. package/dist/containers/webm/fetch-web-cues.d.ts +0 -12
  145. package/dist/containers/webm/fetch-web-cues.js +0 -29
  146. package/dist/containers/webm/get-seeking-byte.d.ts +0 -14
  147. package/dist/containers/webm/get-seeking-byte.js +0 -91
  148. package/dist/containers/webm/get-seeking-info.d.ts +0 -3
  149. package/dist/containers/webm/get-seeking-info.js +0 -17
  150. package/dist/containers/webm/seek/get-seeking-info.d.ts +0 -3
  151. package/dist/containers/webm/seek/get-seeking-info.js +0 -17
  152. package/dist/emitter.d.ts +0 -33
  153. package/dist/emitter.js +0 -65
  154. package/dist/get-sample-positions-from-lpcm.d.ts +0 -3
  155. package/dist/get-sample-positions-from-lpcm.js +0 -46
  156. package/dist/get-seeking-info.js +0 -35
  157. package/dist/media-parser-controller.d.ts +0 -21
  158. package/dist/media-parser-controller.js +0 -38
  159. package/dist/pause-signal.d.ts +0 -11
  160. package/dist/pause-signal.js +0 -38
  161. package/dist/readers/state/aac-state.d.ts +0 -13
  162. package/dist/readers/state/aac-state.js +0 -17
  163. package/dist/readers/state/can-skip-tracks.d.ts +0 -16
  164. package/dist/readers/state/can-skip-tracks.js +0 -60
  165. package/dist/readers/state/current-reader.d.ts +0 -6
  166. package/dist/readers/state/current-reader.js +0 -13
  167. package/dist/readers/state/emitted-fields.d.ts +0 -1
  168. package/dist/readers/state/emitted-fields.js +0 -37
  169. package/dist/readers/state/flac-state.d.ts +0 -4
  170. package/dist/readers/state/flac-state.js +0 -13
  171. package/dist/readers/state/has-tracks-section.d.ts +0 -14
  172. package/dist/readers/state/has-tracks-section.js +0 -37
  173. package/dist/readers/state/images.d.ts +0 -9
  174. package/dist/readers/state/images.js +0 -14
  175. package/dist/readers/state/iso-base-media/cached-sample-positions.d.ts +0 -12
  176. package/dist/readers/state/iso-base-media/cached-sample-positions.js +0 -46
  177. package/dist/readers/state/iso-base-media/iso-state.d.ts +0 -24
  178. package/dist/readers/state/iso-base-media/iso-state.js +0 -20
  179. package/dist/readers/state/iso-base-media/lazy-mfra-load.d.ts +0 -13
  180. package/dist/readers/state/iso-base-media/lazy-mfra-load.js +0 -29
  181. package/dist/readers/state/iso-base-media/moov-box.d.ts +0 -5
  182. package/dist/readers/state/iso-base-media/moov-box.js +0 -13
  183. package/dist/readers/state/keyframes.d.ts +0 -6
  184. package/dist/readers/state/keyframes.js +0 -15
  185. package/dist/readers/state/m3u-state.d.ts +0 -44
  186. package/dist/readers/state/m3u-state.js +0 -124
  187. package/dist/readers/state/may-skip-video-data.d.ts +0 -4
  188. package/dist/readers/state/may-skip-video-data.js +0 -18
  189. package/dist/readers/state/mp3.d.ts +0 -15
  190. package/dist/readers/state/mp3.js +0 -19
  191. package/dist/readers/state/need-samples-for-fields.d.ts +0 -6
  192. package/dist/readers/state/need-samples-for-fields.js +0 -39
  193. package/dist/readers/state/parser-state.d.ts +0 -252
  194. package/dist/readers/state/parser-state.js +0 -124
  195. package/dist/readers/state/riff.d.ts +0 -10
  196. package/dist/readers/state/riff.js +0 -32
  197. package/dist/readers/state/sample-callbacks.d.ts +0 -44
  198. package/dist/readers/state/sample-callbacks.js +0 -118
  199. package/dist/readers/state/seek-infinite-loop.d.ts +0 -5
  200. package/dist/readers/state/seek-infinite-loop.js +0 -22
  201. package/dist/readers/state/slow-duration-fps.d.ts +0 -11
  202. package/dist/readers/state/slow-duration-fps.js +0 -86
  203. package/dist/readers/state/structure.d.ts +0 -15
  204. package/dist/readers/state/structure.js +0 -78
  205. package/dist/readers/state/timings.d.ts +0 -8
  206. package/dist/readers/state/timings.js +0 -13
  207. package/dist/readers/state/transport-stream/last-emitted-sample.d.ts +0 -6
  208. package/dist/readers/state/transport-stream/last-emitted-sample.js +0 -16
  209. package/dist/readers/state/transport-stream/next-pes-header-store.d.ts +0 -6
  210. package/dist/readers/state/transport-stream/next-pes-header-store.js +0 -18
  211. package/dist/readers/state/transport-stream/start-offset.d.ts +0 -4
  212. package/dist/readers/state/transport-stream/start-offset.js +0 -13
  213. package/dist/readers/state/transport-stream/transport-stream.d.ts +0 -19
  214. package/dist/readers/state/transport-stream/transport-stream.js +0 -25
  215. package/dist/readers/state/video-section.d.ts +0 -33
  216. package/dist/readers/state/video-section.js +0 -65
  217. package/dist/readers/state/webm.d.ts +0 -28
  218. package/dist/readers/state/webm.js +0 -109
  219. package/dist/seek-signal.d.ts +0 -19
  220. package/dist/seek-signal.js +0 -24
  221. package/dist/seeking-info.d.ts +0 -31
  222. package/dist/server-worker.module.d.ts +0 -2
  223. package/dist/server-worker.module.js +0 -12
  224. package/dist/state/matroska/lazy-seek-fetch.d.ts +0 -1
  225. package/dist/state/matroska/lazy-seek-fetch.js +0 -5
  226. package/dist/state/matroska.d.ts +0 -0
  227. package/dist/state/matroska.js +0 -1
  228. package/dist/state/slow-duration-fps.d.ts +0 -11
  229. package/dist/state/slow-duration-fps.js +0 -86
  230. package/dist/state/transport-stream/start-offset.d.ts +0 -5
  231. package/dist/state/transport-stream/start-offset.js +0 -13
  232. package/dist/state/transport-stream.d.ts +0 -8
  233. package/dist/state/transport-stream.js +0 -11
  234. package/dist/state/uml.d.ts +0 -32
  235. package/dist/state/uml.js +0 -52
  236. package/dist/state/webm.d.ts +0 -30
  237. package/dist/state/webm.js +0 -109
  238. package/dist/state/work-on-seek-request-options.d.ts +0 -3
  239. package/dist/state/work-on-seek-request-options.js +0 -26
  240. package/dist/worker.module.d.ts +0 -4
  241. package/dist/worker.module.js +0 -12
  242. /package/dist/{seeking-info.js → seeking-hints.js} +0 -0
  243. /package/dist/worker/{forward-controller.d.ts → forward-controller-to-worker.d.ts} +0 -0
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSeekingInfo = void 0;
4
- const get_seeking_info_from_mp4_1 = require("./containers/iso-base-media/get-seeking-info-from-mp4");
5
- const get_seeking_info_1 = require("./containers/transport-stream/get-seeking-info");
6
- const get_seeking_info_2 = require("./containers/wav/get-seeking-info");
7
- const get_seeking_info_3 = require("./containers/webm/seek/get-seeking-info");
8
- const getSeekingInfo = ({ structureState, mp4HeaderSegment, mediaSectionState, isoState, transportStream, tracksState, }) => {
9
- const structure = structureState.getStructureOrNull();
10
- if (!structure) {
11
- return null;
12
- }
13
- if (structure.type === 'iso-base-media') {
14
- return (0, get_seeking_info_from_mp4_1.getSeekingInfoFromMp4)({
15
- structureState,
16
- isoState,
17
- mp4HeaderSegment,
18
- mediaSectionState,
19
- });
20
- }
21
- if (structure.type === 'wav') {
22
- return (0, get_seeking_info_2.getSeekingInfoFromWav)({
23
- structure,
24
- mediaSectionState,
25
- });
26
- }
27
- if (structure.type === 'matroska') {
28
- return (0, get_seeking_info_3.getSeekingInfoFromMatroska)(tracksState);
29
- }
30
- if (structure.type === 'transport-stream') {
31
- return (0, get_seeking_info_1.getSeekingInfoFromTransportStream)(transportStream, tracksState);
32
- }
33
- throw new Error(`Seeking is not supported for this format: ${structure.type}`);
34
- };
35
- exports.getSeekingInfo = getSeekingInfo;
@@ -1,21 +0,0 @@
1
- import type { SeekSignal } from './controller/seek-signal';
2
- import { MediaParserEmitter } from './emitter';
3
- import type { PauseSignal } from './pause-signal';
4
- export type MediaParserController = {
5
- abort: (reason?: any) => void;
6
- pause: PauseSignal['pause'];
7
- resume: PauseSignal['resume'];
8
- _experimentalSeek: SeekSignal['seek'];
9
- addEventListener: MediaParserEmitter['addEventListener'];
10
- removeEventListener: MediaParserEmitter['removeEventListener'];
11
- /**
12
- * @deprecated Not public API
13
- */
14
- _internals: {
15
- signal: AbortSignal;
16
- checkForAbortAndPause: () => Promise<void>;
17
- seekSignal: SeekSignal;
18
- markAsReadyToEmitEvents: () => void;
19
- };
20
- };
21
- export declare const mediaParserController: () => MediaParserController;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mediaParserController = void 0;
4
- const seek_signal_1 = require("./controller/seek-signal");
5
- const emitter_1 = require("./emitter");
6
- const errors_1 = require("./errors");
7
- const pause_signal_1 = require("./pause-signal");
8
- const mediaParserController = () => {
9
- const abortController = new AbortController();
10
- const emitter = new emitter_1.MediaParserEmitter();
11
- const pauseSignal = (0, pause_signal_1.makePauseSignal)(emitter);
12
- const seekSignal = (0, seek_signal_1.makeSeekSignal)(emitter);
13
- const checkForAbortAndPause = async () => {
14
- if (abortController.signal.aborted) {
15
- throw new errors_1.MediaParserAbortError('Aborted');
16
- }
17
- await pauseSignal.waitUntilResume();
18
- };
19
- return {
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- abort: (reason) => {
22
- abortController.abort(reason);
23
- emitter.dispatchAbort(reason);
24
- },
25
- _experimentalSeek: seekSignal.seek,
26
- pause: pauseSignal.pause,
27
- resume: pauseSignal.resume,
28
- addEventListener: emitter.addEventListener,
29
- removeEventListener: emitter.removeEventListener,
30
- _internals: {
31
- signal: abortController.signal,
32
- checkForAbortAndPause,
33
- seekSignal,
34
- markAsReadyToEmitEvents: emitter.markAsReady,
35
- },
36
- };
37
- };
38
- exports.mediaParserController = mediaParserController;
@@ -1,11 +0,0 @@
1
- import type { MediaParserEmitter } from './emitter';
2
- export type PauseSignal = {
3
- pause: () => void;
4
- resume: () => void;
5
- waitUntilResume: () => Promise<void>;
6
- };
7
- export declare const makePauseSignal: (emitter: MediaParserEmitter) => {
8
- pause: () => void;
9
- resume: () => void;
10
- waitUntilResume: () => Promise<void>;
11
- };
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makePauseSignal = void 0;
4
- const makePauseSignal = (emitter) => {
5
- const waiterFns = [];
6
- let paused = false;
7
- return {
8
- pause: () => {
9
- if (paused) {
10
- return;
11
- }
12
- emitter.dispatchPause();
13
- paused = true;
14
- },
15
- resume: () => {
16
- if (!paused) {
17
- return;
18
- }
19
- paused = false;
20
- for (const waiterFn of waiterFns) {
21
- waiterFn();
22
- }
23
- waiterFns.length = 0;
24
- emitter.dispatchResume();
25
- },
26
- waitUntilResume: () => {
27
- return new Promise((resolve) => {
28
- if (!paused) {
29
- resolve();
30
- }
31
- else {
32
- waiterFns.push(resolve);
33
- }
34
- });
35
- },
36
- };
37
- };
38
- exports.makePauseSignal = makePauseSignal;
@@ -1,13 +0,0 @@
1
- type AacSamplePosition = {
2
- offset: number;
3
- index: number;
4
- size: number;
5
- };
6
- export declare const aacState: () => {
7
- addSample: ({ offset, size }: {
8
- offset: number;
9
- size: number;
10
- }) => AacSamplePosition;
11
- getSamples: () => AacSamplePosition[];
12
- };
13
- export {};
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.aacState = void 0;
4
- const aacState = () => {
5
- const samples = [];
6
- return {
7
- addSample: ({ offset, size }) => {
8
- if (samples.find((s) => s.offset === offset)) {
9
- throw new Error('Duplicate sample');
10
- }
11
- samples.push({ offset, index: samples.length, size });
12
- return samples[samples.length - 1];
13
- },
14
- getSamples: () => samples,
15
- };
16
- };
17
- exports.aacState = aacState;
@@ -1,16 +0,0 @@
1
- import type { Options, ParseMediaFields } from '../fields';
2
- import type { MediaParserStructureUnstable } from '../parse-result';
3
- import type { StructureState } from './structure';
4
- export declare const needsTracksForField: ({ field, structure, }: {
5
- field: keyof Options<ParseMediaFields>;
6
- structure: MediaParserStructureUnstable | null;
7
- }) => boolean;
8
- export declare const makeCanSkipTracksState: ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }: {
9
- hasAudioTrackHandlers: boolean;
10
- hasVideoTrackHandlers: boolean;
11
- fields: Options<ParseMediaFields>;
12
- structure: StructureState;
13
- }) => {
14
- canSkipTracks: () => boolean;
15
- };
16
- export type CanSkipTracksState = ReturnType<typeof makeCanSkipTracksState>;
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeCanSkipTracksState = exports.needsTracksForField = void 0;
4
- const needsTracksForField = ({ field, structure, }) => {
5
- if (field === 'dimensions') {
6
- if ((structure === null || structure === void 0 ? void 0 : structure.type) === 'riff') {
7
- return false;
8
- }
9
- return true;
10
- }
11
- if (field === 'audioCodec' ||
12
- field === 'durationInSeconds' ||
13
- field === 'slowDurationInSeconds' ||
14
- field === 'slowFps' ||
15
- field === 'fps' ||
16
- field === 'isHdr' ||
17
- field === 'rotation' ||
18
- field === 'structure' ||
19
- field === 'tracks' ||
20
- field === 'unrotatedDimensions' ||
21
- field === 'videoCodec' ||
22
- field === 'metadata' ||
23
- field === 'location' ||
24
- field === 'slowKeyframes' ||
25
- field === 'slowNumberOfFrames' ||
26
- field === 'keyframes' ||
27
- field === 'images' ||
28
- field === 'sampleRate' ||
29
- field === 'numberOfAudioChannels' ||
30
- field === 'slowAudioBitrate' ||
31
- field === 'slowVideoBitrate' ||
32
- field === 'm3uStreams') {
33
- return true;
34
- }
35
- if (field === 'container' ||
36
- field === 'internalStats' ||
37
- field === 'mimeType' ||
38
- field === 'name' ||
39
- field === 'size') {
40
- return false;
41
- }
42
- throw new Error(`field not implemeted ${field}`);
43
- };
44
- exports.needsTracksForField = needsTracksForField;
45
- const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }) => {
46
- return {
47
- canSkipTracks: () => {
48
- if (hasAudioTrackHandlers || hasVideoTrackHandlers) {
49
- return false;
50
- }
51
- const keys = Object.keys(fields !== null && fields !== void 0 ? fields : {});
52
- const selectedKeys = keys.filter((k) => fields[k]);
53
- return !selectedKeys.some((k) => (0, exports.needsTracksForField)({
54
- field: k,
55
- structure: structure.getStructureOrNull(),
56
- }));
57
- },
58
- };
59
- };
60
- exports.makeCanSkipTracksState = makeCanSkipTracksState;
@@ -1,6 +0,0 @@
1
- import type { Reader } from '../readers/reader';
2
- export declare const currentReader: (initialReader: Reader) => {
3
- getCurrent: () => Reader;
4
- setCurrent: (newReader: Reader) => void;
5
- };
6
- export type CurrentReader = ReturnType<typeof currentReader>;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.currentReader = void 0;
4
- const currentReader = (initialReader) => {
5
- let current = initialReader;
6
- return {
7
- getCurrent: () => current,
8
- setCurrent: (newReader) => {
9
- current = newReader;
10
- },
11
- };
12
- };
13
- exports.currentReader = currentReader;
@@ -1 +0,0 @@
1
- export declare const emittedState: () => AllOptions<ParseMediaFields>;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emittedState = void 0;
4
- const emittedState = () => {
5
- const emittedFields = {
6
- audioCodec: false,
7
- container: false,
8
- dimensions: false,
9
- durationInSeconds: false,
10
- fps: false,
11
- internalStats: false,
12
- isHdr: false,
13
- location: false,
14
- metadata: false,
15
- mimeType: false,
16
- name: false,
17
- rotation: false,
18
- size: false,
19
- structure: false,
20
- tracks: false,
21
- videoCodec: false,
22
- unrotatedDimensions: false,
23
- slowDurationInSeconds: false,
24
- slowFps: false,
25
- slowKeyframes: false,
26
- slowNumberOfFrames: false,
27
- keyframes: false,
28
- images: false,
29
- numberOfAudioChannels: false,
30
- sampleRate: false,
31
- slowAudioBitrate: false,
32
- slowVideoBitrate: false,
33
- m3uStreams: false,
34
- };
35
- return emittedFields;
36
- };
37
- exports.emittedState = emittedState;
@@ -1,4 +0,0 @@
1
- export declare const flacState: () => {
2
- setBlockingBitStrategy: (strategy: number) => void;
3
- getBlockingBitStrategy: () => number | undefined;
4
- };
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flacState = void 0;
4
- const flacState = () => {
5
- let blockingBitStrategy;
6
- return {
7
- setBlockingBitStrategy: (strategy) => {
8
- blockingBitStrategy = strategy;
9
- },
10
- getBlockingBitStrategy: () => blockingBitStrategy,
11
- };
12
- };
13
- exports.flacState = flacState;
@@ -1,14 +0,0 @@
1
- import type { Options, ParseMediaFields } from '../fields';
2
- import type { Track } from '../get-tracks';
3
- import type { LogLevel } from '../log';
4
- import type { ParseMediaSrc } from '../options';
5
- import type { CanSkipTracksState } from './can-skip-tracks';
6
- export declare const makeTracksSectionState: (canSkipTracksState: CanSkipTracksState, src: ParseMediaSrc) => {
7
- hasAllTracks: () => boolean;
8
- getIsDone: () => boolean;
9
- setIsDone: (logLevel: LogLevel) => void;
10
- addTrack: (track: Track) => void;
11
- getTracks: () => Track[];
12
- ensureHasTracksAtEnd: (fields: Options<ParseMediaFields>) => void;
13
- };
14
- export type TracksState = ReturnType<typeof makeTracksSectionState>;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeTracksSectionState = void 0;
4
- const log_1 = require("../log");
5
- const makeTracksSectionState = (canSkipTracksState, src) => {
6
- const tracks = [];
7
- let doneWithTracks = false;
8
- return {
9
- hasAllTracks: () => doneWithTracks,
10
- getIsDone: () => doneWithTracks,
11
- setIsDone: (logLevel) => {
12
- if (doneWithTracks) {
13
- throw new Error('Error in Media Parser: Tracks have already been parsed');
14
- }
15
- log_1.Log.verbose(logLevel, 'All tracks have been parsed');
16
- doneWithTracks = true;
17
- },
18
- addTrack: (track) => {
19
- tracks.push(track);
20
- },
21
- getTracks: () => tracks,
22
- ensureHasTracksAtEnd: (fields) => {
23
- if (canSkipTracksState.canSkipTracks()) {
24
- return;
25
- }
26
- if (!fields.tracks) {
27
- return;
28
- }
29
- if (!doneWithTracks) {
30
- throw new Error('Error in Media Parser: End of parsing of ' +
31
- src +
32
- ' has been reached, but no tracks have been found ');
33
- }
34
- },
35
- };
36
- };
37
- exports.makeTracksSectionState = makeTracksSectionState;
@@ -1,9 +0,0 @@
1
- export type MediaParserEmbeddedImage = {
2
- description: string | null;
3
- mimeType: string | null;
4
- data: Uint8Array;
5
- };
6
- export declare const imagesState: () => {
7
- images: MediaParserEmbeddedImage[];
8
- addImage: (image: MediaParserEmbeddedImage) => void;
9
- };
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.imagesState = void 0;
4
- const imagesState = () => {
5
- const images = [];
6
- const addImage = (image) => {
7
- images.push(image);
8
- };
9
- return {
10
- images,
11
- addImage,
12
- };
13
- };
14
- exports.imagesState = imagesState;
@@ -1,12 +0,0 @@
1
- import type { SamplePosition } from '../../get-sample-positions';
2
- import type { AudioTrack, OtherTrack, VideoTrack } from '../../get-tracks';
3
- import type { ParserState } from '../parser-state';
4
- export type FlatSample = {
5
- track: VideoTrack | AudioTrack | OtherTrack;
6
- samplePosition: SamplePosition;
7
- };
8
- export declare const calculateFlatSamples: (state: ParserState) => any[];
9
- export declare const cachedSamplePositionsState: () => {
10
- getSamples: (mdatStart: number) => FlatSample[] | null;
11
- setSamples: (mdatStart: number, samples: FlatSample[]) => void;
12
- };
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cachedSamplePositionsState = exports.calculateFlatSamples = void 0;
4
- const get_sample_positions_from_track_1 = require("../../containers/iso-base-media/get-sample-positions-from-track");
5
- const traversal_1 = require("../../containers/iso-base-media/traversal");
6
- const get_tracks_1 = require("../../get-tracks");
7
- const calculateFlatSamples = (state) => {
8
- const tracks = (0, get_tracks_1.getTracks)(state);
9
- const allTracks = [
10
- ...tracks.videoTracks,
11
- ...tracks.audioTracks,
12
- ...tracks.otherTracks,
13
- ];
14
- const flatSamples = allTracks
15
- .map((track) => {
16
- const { samplePositions } = (0, get_sample_positions_from_track_1.getSamplePositionsFromTrack)({
17
- trakBox: track.trakBox,
18
- moofBoxes: (0, traversal_1.getMoofBoxes)(state.structure.getIsoStructure().boxes),
19
- tfraBoxes: (0, traversal_1.getTfraBoxes)(state.structure.getIsoStructure()),
20
- });
21
- return samplePositions.map((samplePosition) => {
22
- return {
23
- track,
24
- samplePosition,
25
- };
26
- });
27
- })
28
- .flat(1);
29
- return flatSamples;
30
- };
31
- exports.calculateFlatSamples = calculateFlatSamples;
32
- const cachedSamplePositionsState = () => {
33
- const cachedForMdatStart = {};
34
- return {
35
- getSamples: (mdatStart) => {
36
- if (cachedForMdatStart[mdatStart]) {
37
- return cachedForMdatStart[mdatStart];
38
- }
39
- return null;
40
- },
41
- setSamples: (mdatStart, samples) => {
42
- cachedForMdatStart[mdatStart] = samples;
43
- },
44
- };
45
- };
46
- exports.cachedSamplePositionsState = cachedSamplePositionsState;
@@ -1,24 +0,0 @@
1
- import type { MediaParserController } from '../../controller/media-parser-controller';
2
- import type { LogLevel } from '../../log';
3
- import type { ParseMediaSrc } from '../../options';
4
- import type { ReaderInterface } from '../../readers/reader';
5
- export declare const isoBaseMediaState: ({ contentLength, controller, readerInterface, src, logLevel, }: {
6
- contentLength: number;
7
- controller: MediaParserController;
8
- readerInterface: ReaderInterface;
9
- src: ParseMediaSrc;
10
- logLevel: LogLevel;
11
- }) => {
12
- flatSamples: {
13
- getSamples: (mdatStart: number) => import("./cached-sample-positions").FlatSample[] | null;
14
- setSamples: (mdatStart: number, samples: import("./cached-sample-positions").FlatSample[]) => void;
15
- };
16
- moov: {
17
- setMoovBox: (moov: MediaParserController) => void;
18
- getMoovBox: () => any;
19
- };
20
- mfra: {
21
- triggerLoad: () => Promise<IsoBaseMediaBox[] | null> | null;
22
- };
23
- };
24
- export type IsoBaseMediaState = ReturnType<typeof isoBaseMediaState>;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isoBaseMediaState = void 0;
4
- const cached_sample_positions_1 = require("./cached-sample-positions");
5
- const lazy_mfra_load_1 = require("./lazy-mfra-load");
6
- const moov_box_1 = require("./moov-box");
7
- const isoBaseMediaState = ({ contentLength, controller, readerInterface, src, logLevel, }) => {
8
- return {
9
- flatSamples: (0, cached_sample_positions_1.cachedSamplePositionsState)(),
10
- moov: (0, moov_box_1.moovState)(),
11
- mfra: (0, lazy_mfra_load_1.lazyMfraLoad)({
12
- contentLength,
13
- controller,
14
- readerInterface,
15
- src,
16
- logLevel,
17
- }),
18
- };
19
- };
20
- exports.isoBaseMediaState = isoBaseMediaState;
@@ -1,13 +0,0 @@
1
- import type { MediaParserController } from '../../controller/media-parser-controller';
2
- import { type LogLevel } from '../../log';
3
- import type { ParseMediaSrc } from '../../options';
4
- import type { ReaderInterface } from '../../readers/reader';
5
- export declare const lazyMfraLoad: ({ contentLength, controller, readerInterface, src, logLevel, }: {
6
- contentLength: number;
7
- controller: MediaParserController;
8
- readerInterface: ReaderInterface;
9
- src: ParseMediaSrc;
10
- logLevel: LogLevel;
11
- }) => {
12
- triggerLoad: () => Promise<IsoBaseMediaBox[] | null> | null;
13
- };
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.lazyMfraLoad = void 0;
4
- const get_mfra_seeking_box_1 = require("../../containers/iso-base-media/get-mfra-seeking-box");
5
- const log_1 = require("../../log");
6
- const lazyMfraLoad = ({ contentLength, controller, readerInterface, src, logLevel, }) => {
7
- let prom = null;
8
- const triggerLoad = () => {
9
- if (prom) {
10
- return prom;
11
- }
12
- log_1.Log.verbose(logLevel, 'Moof box found, trying to lazy load mfra');
13
- prom = (0, get_mfra_seeking_box_1.getMfraSeekingBox)({
14
- contentLength,
15
- controller,
16
- readerInterface,
17
- src,
18
- logLevel,
19
- }).then((boxes) => {
20
- log_1.Log.verbose(logLevel, 'Lazily found mfra atom.');
21
- return boxes;
22
- });
23
- return prom;
24
- };
25
- return {
26
- triggerLoad,
27
- };
28
- };
29
- exports.lazyMfraLoad = lazyMfraLoad;
@@ -1,5 +0,0 @@
1
- import type { MoovBox } from '../../containers/iso-base-media/moov/moov';
2
- export declare const moovState: () => {
3
- setMoovBox: (moov: MoovBox) => void;
4
- getMoovBox: () => any;
5
- };
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.moovState = void 0;
4
- const moovState = () => {
5
- let moovBox = null;
6
- return {
7
- setMoovBox: (moov) => {
8
- moovBox = moov;
9
- },
10
- getMoovBox: () => moovBox,
11
- };
12
- };
13
- exports.moovState = moovState;
@@ -1,6 +0,0 @@
1
- import type { MediaParserKeyframe } from '../options';
2
- export declare const keyframesState: () => {
3
- addKeyframe: (keyframe: MediaParserKeyframe) => void;
4
- getKeyframes: () => MediaParserKeyframe[];
5
- };
6
- export type KeyframesState = ReturnType<typeof keyframesState>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.keyframesState = void 0;
4
- const keyframesState = () => {
5
- const keyframes = [];
6
- return {
7
- addKeyframe: (keyframe) => {
8
- keyframes.push(keyframe);
9
- },
10
- getKeyframes: () => {
11
- return keyframes;
12
- },
13
- };
14
- };
15
- exports.keyframesState = keyframesState;