@remotion/media-parser 4.0.280 → 4.0.282

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 (189) hide show
  1. package/dist/check-if-done.js +1 -1
  2. package/dist/containers/aac/parse-aac.js +21 -12
  3. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  4. package/dist/containers/flac/get-duration-from-flac.js +1 -1
  5. package/dist/containers/flac/get-sample-rate.js +1 -1
  6. package/dist/containers/flac/parse-flac-frame.js +18 -13
  7. package/dist/containers/flac/parse-flac.js +3 -3
  8. package/dist/containers/flac/parse-header.js +1 -1
  9. package/dist/containers/flac/parse-metadata.js +1 -1
  10. package/dist/containers/flac/parse-streaminfo.js +7 -2
  11. package/dist/containers/flac/parse-unknown-block.js +1 -1
  12. package/dist/containers/iso-base-media/base-media-box.d.ts +2 -1
  13. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +11 -0
  14. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.js +13 -0
  15. package/dist/containers/iso-base-media/collect-sample-positions-from-trak.d.ts +2 -0
  16. package/dist/containers/iso-base-media/collect-sample-positions-from-trak.js +46 -0
  17. package/dist/containers/iso-base-media/find-keyframe-before-time.d.ts +10 -0
  18. package/dist/containers/iso-base-media/find-keyframe-before-time.js +28 -0
  19. package/dist/containers/iso-base-media/get-children.d.ts +7 -3
  20. package/dist/containers/iso-base-media/get-children.js +7 -3
  21. package/dist/containers/iso-base-media/get-keyframes.js +9 -4
  22. package/dist/containers/iso-base-media/get-mfra-atom.d.ts +9 -0
  23. package/dist/containers/iso-base-media/get-mfra-atom.js +12 -0
  24. package/dist/containers/iso-base-media/get-mfra-seeking-box.d.ts +13 -0
  25. package/dist/containers/iso-base-media/get-mfra-seeking-box.js +32 -0
  26. package/dist/containers/iso-base-media/get-moov-atom.js +58 -42
  27. package/dist/containers/iso-base-media/get-sample-position-bounds.d.ts +5 -0
  28. package/dist/containers/iso-base-media/get-sample-position-bounds.js +19 -0
  29. package/dist/containers/iso-base-media/get-sample-positions-from-track.d.ts +7 -2
  30. package/dist/containers/iso-base-media/get-sample-positions-from-track.js +18 -48
  31. package/dist/containers/iso-base-media/get-seeking-from-mp4.d.ts +11 -5
  32. package/dist/containers/iso-base-media/get-seeking-from-mp4.js +100 -36
  33. package/dist/containers/iso-base-media/get-seeking-info-from-mp4.d.ts +11 -0
  34. package/dist/containers/iso-base-media/get-seeking-info-from-mp4.js +25 -0
  35. package/dist/containers/iso-base-media/mdat/mdat.js +42 -26
  36. package/dist/containers/iso-base-media/mfra/find-best-segment-from-tfra.d.ts +11 -0
  37. package/dist/containers/iso-base-media/mfra/find-best-segment-from-tfra.js +27 -0
  38. package/dist/containers/iso-base-media/mfra/get-mfra-atom.d.ts +81 -0
  39. package/dist/containers/iso-base-media/mfra/get-mfra-atom.js +23 -0
  40. package/dist/containers/iso-base-media/mfra/get-mfro-atom.d.ts +9 -0
  41. package/dist/containers/iso-base-media/mfra/get-mfro-atom.js +38 -0
  42. package/dist/containers/iso-base-media/mfra/mfra.d.ts +2 -0
  43. package/dist/containers/iso-base-media/mfra/mfra.js +11 -0
  44. package/dist/containers/iso-base-media/mfra/tfra.d.ts +19 -0
  45. package/dist/containers/iso-base-media/mfra/tfra.js +100 -0
  46. package/dist/containers/iso-base-media/moov/moov.d.ts +7 -3
  47. package/dist/containers/iso-base-media/moov/moov.js +4 -2
  48. package/dist/containers/iso-base-media/parse-boxes.js +20 -4
  49. package/dist/containers/iso-base-media/process-box.d.ts +26 -2
  50. package/dist/containers/iso-base-media/process-box.js +54 -15
  51. package/dist/containers/iso-base-media/stsd/mebx.d.ts +5 -3
  52. package/dist/containers/iso-base-media/stsd/mebx.js +6 -4
  53. package/dist/containers/iso-base-media/stsd/samples.d.ts +8 -5
  54. package/dist/containers/iso-base-media/stsd/samples.js +16 -9
  55. package/dist/containers/iso-base-media/stsd/stsd.d.ts +5 -3
  56. package/dist/containers/iso-base-media/stsd/stsd.js +3 -3
  57. package/dist/containers/iso-base-media/trak/trak.d.ts +5 -3
  58. package/dist/containers/iso-base-media/trak/trak.js +4 -2
  59. package/dist/containers/iso-base-media/traversal.d.ts +9 -2
  60. package/dist/containers/iso-base-media/traversal.js +15 -7
  61. package/dist/containers/m3u/get-duration-from-m3u.js +1 -1
  62. package/dist/containers/m3u/get-streams.js +1 -1
  63. package/dist/containers/m3u/iterate-over-segment-files.d.ts +1 -1
  64. package/dist/containers/m3u/iterate-over-segment-files.js +1 -1
  65. package/dist/containers/m3u/parse-m3u.js +1 -1
  66. package/dist/containers/m3u/run-over-m3u.js +11 -2
  67. package/dist/containers/mp3/id3.js +1 -1
  68. package/dist/containers/mp3/parse-mpeg-header.js +8 -2
  69. package/dist/containers/riff/expect-riff-box.js +7 -2
  70. package/dist/containers/riff/get-tracks-from-avi.js +1 -1
  71. package/dist/containers/riff/parse-movi.js +35 -26
  72. package/dist/containers/riff/parse-riff-body.js +13 -5
  73. package/dist/containers/riff/parse-riff-header.js +1 -1
  74. package/dist/containers/riff/parse-video-section.d.ts +1 -1
  75. package/dist/containers/riff/parse-video-section.js +3 -3
  76. package/dist/containers/transport-stream/get-tracks.js +1 -1
  77. package/dist/containers/transport-stream/handle-aac-packet.js +12 -3
  78. package/dist/containers/transport-stream/handle-avc-packet.js +16 -3
  79. package/dist/containers/transport-stream/parse-packet.js +1 -1
  80. package/dist/containers/transport-stream/parse-transport-stream.js +1 -1
  81. package/dist/containers/wav/get-duration-from-wav.js +1 -1
  82. package/dist/containers/wav/get-seeking-byte.d.ts +7 -0
  83. package/dist/containers/wav/get-seeking-byte.js +15 -0
  84. package/dist/containers/wav/get-seeking-info.d.ts +7 -0
  85. package/dist/containers/wav/get-seeking-info.js +20 -0
  86. package/dist/containers/wav/parse-data.js +2 -2
  87. package/dist/containers/wav/parse-fmt.js +7 -2
  88. package/dist/containers/wav/parse-header.js +1 -1
  89. package/dist/containers/wav/parse-id3.js +1 -1
  90. package/dist/containers/wav/parse-list.js +1 -1
  91. package/dist/containers/wav/parse-media-section.d.ts +5 -0
  92. package/dist/containers/wav/parse-media-section.js +44 -0
  93. package/dist/containers/wav/parse-video-section.js +7 -5
  94. package/dist/containers/wav/parse-wav.js +4 -4
  95. package/dist/containers/webm/get-ready-tracks.js +2 -2
  96. package/dist/containers/webm/parse-ebml.js +17 -5
  97. package/dist/containers/webm/parse-webm-header.js +1 -1
  98. package/dist/controller/emitter.d.ts +33 -0
  99. package/dist/controller/emitter.js +65 -0
  100. package/dist/controller/media-parser-controller.d.ts +23 -0
  101. package/dist/controller/media-parser-controller.js +41 -0
  102. package/dist/controller/pause-signal.d.ts +11 -0
  103. package/dist/controller/pause-signal.js +38 -0
  104. package/dist/controller/performed-seeks-stats.d.ts +11 -0
  105. package/dist/controller/performed-seeks-stats.js +21 -0
  106. package/dist/controller/seek-signal.d.ts +19 -0
  107. package/dist/controller/seek-signal.js +24 -0
  108. package/dist/convert-audio-or-video-sample.d.ts +4 -1
  109. package/dist/convert-audio-or-video-sample.js +19 -6
  110. package/dist/disallow-forward-seek-if-samples-are-needed.d.ts +6 -0
  111. package/dist/disallow-forward-seek-if-samples-are-needed.js +14 -0
  112. package/dist/emit-audio-sample.d.ts +8 -5
  113. package/dist/emit-audio-sample.js +6 -6
  114. package/dist/emit-available-info.js +6 -6
  115. package/dist/emitter.d.ts +9 -0
  116. package/dist/emitter.js +35 -3
  117. package/dist/esm/index.mjs +5687 -4586
  118. package/dist/esm/server-worker.mjs +453 -0
  119. package/dist/esm/worker-server-entry.mjs +6551 -5447
  120. package/dist/esm/worker-web-entry.mjs +5452 -4348
  121. package/dist/esm/worker.mjs +14 -11
  122. package/dist/forward-controller.d.ts +1 -1
  123. package/dist/get-dimensions.js +2 -2
  124. package/dist/get-duration.js +21 -31
  125. package/dist/get-fps.js +7 -3
  126. package/dist/get-keyframes.js +2 -2
  127. package/dist/get-seeking-info.d.ts +19 -3
  128. package/dist/get-seeking-info.js +33 -7
  129. package/dist/get-tracks.js +12 -4
  130. package/dist/has-all-info.js +1 -1
  131. package/dist/index.d.ts +153 -135
  132. package/dist/index.js +3 -1
  133. package/dist/init-video.js +21 -12
  134. package/dist/internal-parse-media.js +6 -2
  135. package/dist/media-parser-controller.d.ts +2 -1
  136. package/dist/media-parser-controller.js +3 -2
  137. package/dist/metadata/get-metadata.js +1 -1
  138. package/dist/metadata/metadata-from-iso.js +5 -1
  139. package/dist/options.d.ts +1 -1
  140. package/dist/parse-loop.js +17 -4
  141. package/dist/parse-media-on-worker-entry.js +7 -0
  142. package/dist/perform-seek.d.ts +23 -3
  143. package/dist/perform-seek.js +44 -8
  144. package/dist/readers/reader.d.ts +1 -1
  145. package/dist/register-track.d.ts +17 -4
  146. package/dist/register-track.js +31 -17
  147. package/dist/run-parse-iteration.js +1 -1
  148. package/dist/seek-backwards.d.ts +15 -2
  149. package/dist/seek-backwards.js +7 -8
  150. package/dist/seek-forwards.d.ts +19 -2
  151. package/dist/seek-forwards.js +19 -12
  152. package/dist/seek-signal.d.ts +3 -6
  153. package/dist/seek-signal.js +4 -6
  154. package/dist/seeking-info.d.ts +11 -1
  155. package/dist/server-worker.d.ts +3 -0
  156. package/dist/server-worker.js +7 -0
  157. package/dist/server-worker.module.d.ts +2 -0
  158. package/dist/server-worker.module.js +12 -0
  159. package/dist/state/current-reader.d.ts +6 -0
  160. package/dist/state/current-reader.js +13 -0
  161. package/dist/state/iso-base-media/cached-sample-positions.js +7 -9
  162. package/dist/state/iso-base-media/iso-state.d.ts +15 -1
  163. package/dist/state/iso-base-media/iso-state.js +9 -1
  164. package/dist/state/iso-base-media/lazy-mfra-load.d.ts +14 -0
  165. package/dist/state/iso-base-media/lazy-mfra-load.js +29 -0
  166. package/dist/state/need-samples-for-fields.d.ts +1 -0
  167. package/dist/state/need-samples-for-fields.js +3 -3
  168. package/dist/state/parser-state.d.ts +145 -130
  169. package/dist/state/parser-state.js +15 -4
  170. package/dist/state/sample-callbacks.d.ts +3 -2
  171. package/dist/state/sample-callbacks.js +2 -4
  172. package/dist/state/seek-infinite-loop.d.ts +5 -0
  173. package/dist/state/seek-infinite-loop.js +22 -0
  174. package/dist/state/video-section.d.ts +23 -6
  175. package/dist/state/video-section.js +50 -22
  176. package/dist/state/work-on-seek-request-options.d.ts +3 -0
  177. package/dist/state/work-on-seek-request-options.js +26 -0
  178. package/dist/throttled-progress.d.ts +1 -1
  179. package/dist/version.d.ts +1 -1
  180. package/dist/version.js +1 -1
  181. package/dist/work-on-seek-request.d.ts +42 -1
  182. package/dist/work-on-seek-request.js +104 -15
  183. package/dist/worker/forward-controller.d.ts +1 -1
  184. package/dist/worker/forward-controller.js +4 -0
  185. package/dist/worker/worker-types.d.ts +6 -1
  186. package/dist/worker-server.js +1 -1
  187. package/dist/worker.module.d.ts +4 -0
  188. package/dist/worker.module.js +12 -0
  189. package/package.json +12 -3
@@ -21,12 +21,12 @@ const emitAvailableInfo = async ({ hasInfo, state, }) => {
21
21
  const keys = Object.keys(hasInfo);
22
22
  const { emittedFields, fieldsInReturnValue, returnValue, name, callbackFunctions, } = state;
23
23
  for (const key of keys) {
24
- await (0, work_on_seek_request_1.workOnSeekRequest)(state);
24
+ await (0, work_on_seek_request_1.workOnSeekRequest)((0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state));
25
25
  if (key === 'structure') {
26
26
  if (hasInfo.structure && !emittedFields.structure) {
27
- await ((_a = callbackFunctions.onStructure) === null || _a === void 0 ? void 0 : _a.call(callbackFunctions, state.getStructure()));
27
+ await ((_a = callbackFunctions.onStructure) === null || _a === void 0 ? void 0 : _a.call(callbackFunctions, state.structure.getStructure()));
28
28
  if (fieldsInReturnValue.structure) {
29
- returnValue.structure = state.getStructure();
29
+ returnValue.structure = state.structure.getStructure();
30
30
  }
31
31
  emittedFields.structure = true;
32
32
  }
@@ -225,7 +225,7 @@ const emitAvailableInfo = async ({ hasInfo, state, }) => {
225
225
  }
226
226
  if (key === 'container') {
227
227
  if (!returnValue.container && hasInfo.container) {
228
- const container = (0, get_container_1.getContainer)(state.getStructure());
228
+ const container = (0, get_container_1.getContainer)(state.structure.getStructure());
229
229
  await ((_u = callbackFunctions.onContainer) === null || _u === void 0 ? void 0 : _u.call(callbackFunctions, container));
230
230
  if (fieldsInReturnValue.container) {
231
231
  returnValue.container = container;
@@ -345,7 +345,7 @@ const emitAvailableInfo = async ({ hasInfo, state, }) => {
345
345
  if (key === 'm3uStreams') {
346
346
  if (!emittedFields.m3uStreams && hasInfo.m3uStreams) {
347
347
  const streams = (0, get_streams_1.getM3uStreams)({
348
- structure: state.getStructureOrNull(),
348
+ structure: state.structure.getStructureOrNull(),
349
349
  originalSrc: state.src,
350
350
  readerInterface: state.readerInterface,
351
351
  });
@@ -359,6 +359,6 @@ const emitAvailableInfo = async ({ hasInfo, state, }) => {
359
359
  }
360
360
  throw new Error(`Unhandled key: ${key}`);
361
361
  }
362
- await (0, work_on_seek_request_1.workOnSeekRequest)(state);
362
+ await (0, work_on_seek_request_1.workOnSeekRequest)((0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state));
363
363
  };
364
364
  exports.emitAvailableInfo = emitAvailableInfo;
package/dist/emitter.d.ts CHANGED
@@ -1,9 +1,13 @@
1
+ import type { Seek } from './controller/seek-signal';
1
2
  type MediaParserEventMap = {
2
3
  pause: undefined;
3
4
  resume: undefined;
4
5
  abort: {
5
6
  reason?: unknown;
6
7
  };
8
+ seek: {
9
+ seek: Seek;
10
+ };
7
11
  };
8
12
  export type MediaParserEventTypes = keyof MediaParserEventMap;
9
13
  export type CallbackListener<T extends MediaParserEventTypes> = (data: {
@@ -13,12 +17,17 @@ type MediaParserListeners = {
13
17
  [EventType in MediaParserEventTypes]: CallbackListener<EventType>[];
14
18
  };
15
19
  export declare class MediaParserEmitter {
20
+ #private;
16
21
  listeners: MediaParserListeners;
22
+ readyPromise: Promise<void>;
23
+ constructor();
24
+ markAsReady: () => void;
17
25
  addEventListener: <Q extends MediaParserEventTypes>(name: Q, callback: CallbackListener<Q>) => void;
18
26
  removeEventListener: <Q extends MediaParserEventTypes>(name: Q, callback: CallbackListener<Q>) => void;
19
27
  private dispatchEvent;
20
28
  dispatchPause: () => void;
21
29
  dispatchResume: () => void;
22
30
  dispatchAbort: (reason?: unknown) => void;
31
+ dispatchSeek: (seek: Seek) => void;
23
32
  }
24
33
  export {};
package/dist/emitter.js CHANGED
@@ -1,4 +1,16 @@
1
1
  "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _MediaParserEmitter_markAsReady;
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
15
  exports.MediaParserEmitter = void 0;
4
16
  class MediaParserEmitter {
@@ -7,6 +19,11 @@ class MediaParserEmitter {
7
19
  pause: [],
8
20
  resume: [],
9
21
  abort: [],
22
+ seek: [],
23
+ };
24
+ _MediaParserEmitter_markAsReady.set(this, void 0);
25
+ this.markAsReady = () => {
26
+ __classPrivateFieldGet(this, _MediaParserEmitter_markAsReady, "f").call(this);
10
27
  };
11
28
  this.addEventListener = (name, callback) => {
12
29
  this.listeners[name].push(callback);
@@ -15,14 +32,28 @@ class MediaParserEmitter {
15
32
  this.listeners[name] = this.listeners[name].filter((l) => l !== callback);
16
33
  };
17
34
  this.dispatchPause = () => {
18
- this.dispatchEvent('pause', undefined);
35
+ this.readyPromise = this.readyPromise.then(() => {
36
+ this.dispatchEvent('pause', undefined);
37
+ });
19
38
  };
20
39
  this.dispatchResume = () => {
21
- this.dispatchEvent('resume', undefined);
40
+ this.readyPromise = this.readyPromise.then(() => {
41
+ this.dispatchEvent('resume', undefined);
42
+ });
22
43
  };
23
44
  this.dispatchAbort = (reason) => {
24
- this.dispatchEvent('abort', { reason });
45
+ this.readyPromise = this.readyPromise.then(() => {
46
+ this.dispatchEvent('abort', { reason });
47
+ });
48
+ };
49
+ this.dispatchSeek = (seek) => {
50
+ this.readyPromise = this.readyPromise.then(() => {
51
+ this.dispatchEvent('seek', { seek });
52
+ });
25
53
  };
54
+ const { promise, resolve } = Promise.withResolvers();
55
+ this.readyPromise = promise;
56
+ __classPrivateFieldSet(this, _MediaParserEmitter_markAsReady, resolve, "f");
26
57
  }
27
58
  dispatchEvent(dispatchName, context) {
28
59
  this.listeners[dispatchName].forEach((callback) => {
@@ -31,3 +62,4 @@ class MediaParserEmitter {
31
62
  }
32
63
  }
33
64
  exports.MediaParserEmitter = MediaParserEmitter;
65
+ _MediaParserEmitter_markAsReady = new WeakMap();