@remotion/media-parser 4.0.285 → 4.0.287

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 (279) hide show
  1. package/dist/aac-codecprivate.d.ts +1 -1
  2. package/dist/combine-uint8-arrays.d.ts +1 -1
  3. package/dist/containers/aac/parse-aac.js +0 -3
  4. package/dist/containers/avc/create-sps-pps-data.d.ts +1 -1
  5. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  6. package/dist/containers/flac/parse-flac-frame.js +0 -2
  7. package/dist/containers/flac/parse-streaminfo.js +0 -2
  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 +4 -3
  11. package/dist/containers/iso-base-media/get-keyframes.js +1 -1
  12. package/dist/containers/iso-base-media/get-moov-atom.js +0 -4
  13. package/dist/containers/iso-base-media/get-sample-positions-from-track.d.ts +2 -2
  14. package/dist/containers/iso-base-media/get-seeking-byte.d.ts +15 -0
  15. package/dist/containers/iso-base-media/{get-seeking-from-mp4.js → get-seeking-byte.js} +16 -2
  16. package/dist/containers/iso-base-media/mdat/mdat.js +6 -6
  17. package/dist/containers/iso-base-media/mfra/get-mfra-atom.d.ts +3 -3
  18. package/dist/containers/iso-base-media/parse-boxes.js +0 -2
  19. package/dist/containers/iso-base-media/process-box.d.ts +0 -2
  20. package/dist/containers/iso-base-media/process-box.js +6 -6
  21. package/dist/containers/iso-base-media/{get-seeking-info-from-mp4.d.ts → seeking-hints.d.ts} +8 -3
  22. package/dist/containers/iso-base-media/seeking-hints.js +52 -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 +24 -20
  26. package/dist/containers/m3u/run-over-m3u.js +0 -3
  27. package/dist/containers/mp3/parse-mpeg-header.js +0 -3
  28. package/dist/containers/riff/expect-riff-box.js +0 -2
  29. package/dist/containers/riff/parse-movi.js +0 -3
  30. package/dist/containers/riff/parse-video-section.js +1 -1
  31. package/dist/containers/transport-stream/adts-header.d.ts +1 -1
  32. package/dist/containers/transport-stream/discard-rest-of-packet.d.ts +1 -1
  33. package/dist/containers/transport-stream/find-separator.d.ts +17 -1
  34. package/dist/containers/transport-stream/find-separator.js +6 -5
  35. package/dist/containers/transport-stream/handle-aac-packet.d.ts +10 -3
  36. package/dist/containers/transport-stream/handle-aac-packet.js +24 -16
  37. package/dist/containers/transport-stream/handle-avc-packet.d.ts +10 -3
  38. package/dist/containers/transport-stream/handle-avc-packet.js +29 -17
  39. package/dist/containers/transport-stream/parse-packet.d.ts +8 -4
  40. package/dist/containers/transport-stream/parse-packet.js +15 -16
  41. package/dist/containers/transport-stream/parse-pes.d.ts +5 -1
  42. package/dist/containers/transport-stream/parse-pes.js +4 -3
  43. package/dist/containers/transport-stream/parse-stream-packet.d.ts +6 -6
  44. package/dist/containers/transport-stream/parse-stream-packet.js +10 -115
  45. package/dist/containers/transport-stream/parse-transport-stream.js +15 -3
  46. package/dist/containers/transport-stream/process-stream-buffers.d.ts +26 -6
  47. package/dist/containers/transport-stream/process-stream-buffers.js +77 -12
  48. package/dist/containers/transport-stream/seeking-hints.d.ts +9 -0
  49. package/dist/containers/transport-stream/seeking-hints.js +26 -0
  50. package/dist/containers/transport-stream/traversal.d.ts +3 -1
  51. package/dist/containers/transport-stream/traversal.js +10 -2
  52. package/dist/containers/wav/get-seeking-byte.d.ts +2 -2
  53. package/dist/containers/wav/get-seeking-byte.js +2 -2
  54. package/dist/containers/wav/parse-fmt.js +0 -2
  55. package/dist/containers/wav/parse-media-section.js +0 -2
  56. package/dist/containers/wav/seeking-hints.d.ts +12 -0
  57. package/dist/containers/wav/seeking-hints.js +25 -0
  58. package/dist/containers/webm/get-byte-for-cues.d.ts +5 -0
  59. package/dist/containers/webm/get-byte-for-cues.js +33 -0
  60. package/dist/containers/webm/get-ready-tracks.d.ts +9 -4
  61. package/dist/containers/webm/get-ready-tracks.js +6 -6
  62. package/dist/containers/webm/get-sample-from-block.d.ts +3 -2
  63. package/dist/containers/webm/get-sample-from-block.js +9 -8
  64. package/dist/containers/webm/parse-ebml.d.ts +5 -4
  65. package/dist/containers/webm/parse-ebml.js +29 -34
  66. package/dist/containers/webm/parse-webm-header.js +14 -2
  67. package/dist/containers/webm/seek/fetch-web-cues.d.ts +12 -0
  68. package/dist/containers/webm/seek/fetch-web-cues.js +32 -0
  69. package/dist/containers/webm/seek/format-cues.d.ts +8 -0
  70. package/dist/containers/webm/seek/format-cues.js +42 -0
  71. package/dist/containers/webm/seek/get-seeking-byte.d.ts +12 -0
  72. package/dist/containers/webm/seek/get-seeking-byte.js +100 -0
  73. package/dist/containers/webm/seek/seeking-hints.d.ts +10 -0
  74. package/dist/containers/webm/seek/seeking-hints.js +28 -0
  75. package/dist/containers/webm/segments/all-segments.d.ts +1 -0
  76. package/dist/containers/webm/segments.d.ts +10 -4
  77. package/dist/containers/webm/segments.js +30 -12
  78. package/dist/containers/webm/state-for-processing.d.ts +15 -0
  79. package/dist/containers/webm/state-for-processing.js +14 -0
  80. package/dist/controller/media-parser-controller.d.ts +3 -0
  81. package/dist/controller/media-parser-controller.js +15 -0
  82. package/dist/controller/seek-signal.d.ts +2 -2
  83. package/dist/download-and-parse-media.js +3 -1
  84. package/dist/emit-audio-sample.d.ts +2 -5
  85. package/dist/emit-audio-sample.js +2 -5
  86. package/dist/emit-available-info.js +1 -1
  87. package/dist/esm/index.mjs +3859 -2963
  88. package/dist/esm/node-writer.mjs +1 -2
  89. package/dist/esm/node.mjs +1 -2
  90. package/dist/esm/server-worker.mjs +46 -1
  91. package/dist/esm/universal.mjs +3 -5
  92. package/dist/esm/web.mjs +2 -3
  93. package/dist/esm/worker-server-entry.mjs +2681 -1756
  94. package/dist/esm/worker-web-entry.mjs +2680 -1754
  95. package/dist/esm/worker.mjs +46 -1
  96. package/dist/file-types/detect-file-type.js +3 -1
  97. package/dist/{forward-controller.d.ts → forward-controller-pause-resume-abort.d.ts} +1 -1
  98. package/dist/{forward-controller.js → forward-controller-pause-resume-abort.js} +3 -3
  99. package/dist/get-audio-codec.d.ts +2 -1
  100. package/dist/get-audio-codec.js +17 -3
  101. package/dist/get-dimensions.js +1 -1
  102. package/dist/get-duration.js +3 -2
  103. package/dist/get-fps.js +1 -0
  104. package/dist/get-is-hdr.js +2 -2
  105. package/dist/get-keyframes.js +1 -1
  106. package/dist/{get-sample-positions-from-lpcm.d.ts → get-sample-positions-from-mp4.d.ts} +1 -1
  107. package/dist/{get-sample-positions-from-lpcm.js → get-sample-positions-from-mp4.js} +3 -3
  108. package/dist/{get-seeking-info.d.ts → get-seeking-byte.d.ts} +10 -9
  109. package/dist/get-seeking-byte.js +51 -0
  110. package/dist/get-seeking-hints.d.ts +19 -0
  111. package/dist/get-seeking-hints.js +35 -0
  112. package/dist/get-tracks.d.ts +4 -4
  113. package/dist/get-tracks.js +14 -8
  114. package/dist/get-video-codec.js +2 -2
  115. package/dist/has-all-info.js +1 -1
  116. package/dist/index.d.ts +74 -21
  117. package/dist/init-video.js +4 -3
  118. package/dist/internal-parse-media.js +18 -2
  119. package/dist/iterator/buffer-iterator.d.ts +3 -3
  120. package/dist/iterator/buffer-iterator.js +3 -4
  121. package/dist/iterator/buffer-manager.d.ts +3 -3
  122. package/dist/log.d.ts +5 -5
  123. package/dist/metadata/metadata-from-iso.js +1 -0
  124. package/dist/options.d.ts +3 -0
  125. package/dist/parse-loop.js +0 -3
  126. package/dist/parse-media-on-worker-entry.d.ts +1 -1
  127. package/dist/parse-media-on-worker-entry.js +51 -1
  128. package/dist/parse-media.js +3 -1
  129. package/dist/readers/from-web-file.js +1 -1
  130. package/dist/register-track.d.ts +2 -5
  131. package/dist/register-track.js +2 -10
  132. package/dist/samples-from-moof.d.ts +2 -2
  133. package/dist/samples-from-moof.js +5 -8
  134. package/dist/seek-backwards.js +2 -3
  135. package/dist/seeking-hints.d.ts +39 -0
  136. package/dist/set-seeking-hints.d.ts +6 -0
  137. package/dist/set-seeking-hints.js +27 -0
  138. package/dist/state/has-tracks-section.js +3 -1
  139. package/dist/state/iso-base-media/cached-sample-positions.d.ts +1 -1
  140. package/dist/state/iso-base-media/cached-sample-positions.js +1 -1
  141. package/dist/state/iso-base-media/iso-state.d.ts +18 -2
  142. package/dist/state/iso-base-media/iso-state.js +4 -0
  143. package/dist/state/iso-base-media/lazy-mfra-load.d.ts +3 -0
  144. package/dist/state/iso-base-media/lazy-mfra-load.js +13 -0
  145. package/dist/state/iso-base-media/moov-box.d.ts +7 -2
  146. package/dist/state/iso-base-media/moov-box.js +1 -1
  147. package/dist/state/iso-base-media/precomputed-moof.d.ts +11 -0
  148. package/dist/state/iso-base-media/precomputed-moof.js +28 -0
  149. package/dist/state/iso-base-media/precomputed-tfra.d.ts +6 -0
  150. package/dist/state/iso-base-media/precomputed-tfra.js +17 -0
  151. package/dist/state/keyframes.d.ts +2 -0
  152. package/dist/state/keyframes.js +17 -6
  153. package/dist/state/matroska/lazy-cues-fetch.d.ts +25 -0
  154. package/dist/state/matroska/lazy-cues-fetch.js +72 -0
  155. package/dist/state/matroska/webm.d.ts +53 -0
  156. package/dist/state/{webm.js → matroska/webm.js} +27 -7
  157. package/dist/state/parser-state.d.ts +64 -11
  158. package/dist/state/parser-state.js +7 -6
  159. package/dist/state/sample-callbacks.d.ts +1 -1
  160. package/dist/state/sample-callbacks.js +9 -9
  161. package/dist/{readers/state → state/samples-observed}/slow-duration-fps.d.ts +3 -3
  162. package/dist/state/samples-observed/slow-duration-fps.js +89 -0
  163. package/dist/state/seek-infinite-loop.js +12 -2
  164. package/dist/state/transport-stream/observed-pes-header.d.ts +15 -0
  165. package/dist/state/transport-stream/observed-pes-header.js +39 -0
  166. package/dist/state/transport-stream/pts-start-offset.d.ts +8 -0
  167. package/dist/state/transport-stream/{start-offset.js → pts-start-offset.js} +4 -4
  168. package/dist/state/transport-stream/transport-stream.d.ts +11 -1
  169. package/dist/state/transport-stream/transport-stream.js +4 -2
  170. package/dist/state/video-section.js +14 -2
  171. package/dist/version.d.ts +1 -1
  172. package/dist/version.js +1 -1
  173. package/dist/with-resolvers.d.ts +5 -0
  174. package/dist/work-on-seek-request.d.ts +8 -0
  175. package/dist/work-on-seek-request.js +31 -10
  176. package/dist/worker/{forward-controller.js → forward-controller-to-worker.js} +17 -0
  177. package/dist/worker/serialize-error.d.ts +6 -1
  178. package/dist/worker/serialize-error.js +2 -1
  179. package/dist/worker/worker-types.d.ts +12 -2
  180. package/dist/worker-server.js +16 -4
  181. package/dist/worker.d.ts +0 -1
  182. package/package.json +4 -4
  183. package/dist/containers/iso-base-media/get-mfra-atom.d.ts +0 -9
  184. package/dist/containers/iso-base-media/get-mfra-atom.js +0 -12
  185. package/dist/containers/iso-base-media/get-seeking-from-mp4.d.ts +0 -11
  186. package/dist/containers/iso-base-media/get-seeking-info-from-mp4.js +0 -25
  187. package/dist/containers/iso-base-media/mfra/mfra.d.ts +0 -2
  188. package/dist/containers/iso-base-media/mfra/mfra.js +0 -11
  189. package/dist/containers/transport-stream/next-pes-header-store.d.ts +0 -6
  190. package/dist/containers/transport-stream/next-pes-header-store.js +0 -18
  191. package/dist/containers/transport-stream/start-offset.d.ts +0 -4
  192. package/dist/containers/transport-stream/start-offset.js +0 -13
  193. package/dist/containers/wav/get-seeking-info.d.ts +0 -7
  194. package/dist/containers/wav/get-seeking-info.js +0 -20
  195. package/dist/containers/wav/parse-video-section.d.ts +0 -5
  196. package/dist/containers/wav/parse-video-section.js +0 -41
  197. package/dist/emitter.d.ts +0 -33
  198. package/dist/emitter.js +0 -65
  199. package/dist/get-seeking-info.js +0 -48
  200. package/dist/media-parser-controller.d.ts +0 -21
  201. package/dist/media-parser-controller.js +0 -38
  202. package/dist/pause-signal.d.ts +0 -11
  203. package/dist/pause-signal.js +0 -38
  204. package/dist/readers/state/aac-state.d.ts +0 -13
  205. package/dist/readers/state/aac-state.js +0 -17
  206. package/dist/readers/state/can-skip-tracks.d.ts +0 -16
  207. package/dist/readers/state/can-skip-tracks.js +0 -60
  208. package/dist/readers/state/current-reader.d.ts +0 -6
  209. package/dist/readers/state/current-reader.js +0 -13
  210. package/dist/readers/state/emitted-fields.d.ts +0 -1
  211. package/dist/readers/state/emitted-fields.js +0 -37
  212. package/dist/readers/state/flac-state.d.ts +0 -4
  213. package/dist/readers/state/flac-state.js +0 -13
  214. package/dist/readers/state/has-tracks-section.d.ts +0 -14
  215. package/dist/readers/state/has-tracks-section.js +0 -37
  216. package/dist/readers/state/images.d.ts +0 -9
  217. package/dist/readers/state/images.js +0 -14
  218. package/dist/readers/state/iso-base-media/cached-sample-positions.d.ts +0 -12
  219. package/dist/readers/state/iso-base-media/cached-sample-positions.js +0 -46
  220. package/dist/readers/state/iso-base-media/iso-state.d.ts +0 -24
  221. package/dist/readers/state/iso-base-media/iso-state.js +0 -20
  222. package/dist/readers/state/iso-base-media/lazy-mfra-load.d.ts +0 -13
  223. package/dist/readers/state/iso-base-media/lazy-mfra-load.js +0 -29
  224. package/dist/readers/state/iso-base-media/moov-box.d.ts +0 -5
  225. package/dist/readers/state/iso-base-media/moov-box.js +0 -13
  226. package/dist/readers/state/keyframes.d.ts +0 -6
  227. package/dist/readers/state/keyframes.js +0 -15
  228. package/dist/readers/state/m3u-state.d.ts +0 -44
  229. package/dist/readers/state/m3u-state.js +0 -124
  230. package/dist/readers/state/may-skip-video-data.d.ts +0 -4
  231. package/dist/readers/state/may-skip-video-data.js +0 -18
  232. package/dist/readers/state/mp3.d.ts +0 -15
  233. package/dist/readers/state/mp3.js +0 -19
  234. package/dist/readers/state/need-samples-for-fields.d.ts +0 -6
  235. package/dist/readers/state/need-samples-for-fields.js +0 -39
  236. package/dist/readers/state/parser-state.d.ts +0 -252
  237. package/dist/readers/state/parser-state.js +0 -124
  238. package/dist/readers/state/riff.d.ts +0 -10
  239. package/dist/readers/state/riff.js +0 -32
  240. package/dist/readers/state/sample-callbacks.d.ts +0 -44
  241. package/dist/readers/state/sample-callbacks.js +0 -118
  242. package/dist/readers/state/seek-infinite-loop.d.ts +0 -5
  243. package/dist/readers/state/seek-infinite-loop.js +0 -22
  244. package/dist/readers/state/slow-duration-fps.js +0 -86
  245. package/dist/readers/state/structure.d.ts +0 -15
  246. package/dist/readers/state/structure.js +0 -78
  247. package/dist/readers/state/timings.d.ts +0 -8
  248. package/dist/readers/state/timings.js +0 -13
  249. package/dist/readers/state/transport-stream/last-emitted-sample.d.ts +0 -6
  250. package/dist/readers/state/transport-stream/last-emitted-sample.js +0 -16
  251. package/dist/readers/state/transport-stream/next-pes-header-store.d.ts +0 -6
  252. package/dist/readers/state/transport-stream/next-pes-header-store.js +0 -18
  253. package/dist/readers/state/transport-stream/start-offset.d.ts +0 -4
  254. package/dist/readers/state/transport-stream/start-offset.js +0 -13
  255. package/dist/readers/state/transport-stream/transport-stream.d.ts +0 -19
  256. package/dist/readers/state/transport-stream/transport-stream.js +0 -25
  257. package/dist/readers/state/video-section.d.ts +0 -33
  258. package/dist/readers/state/video-section.js +0 -65
  259. package/dist/readers/state/webm.d.ts +0 -28
  260. package/dist/readers/state/webm.js +0 -109
  261. package/dist/seek-signal.d.ts +0 -19
  262. package/dist/seek-signal.js +0 -24
  263. package/dist/seeking-info.d.ts +0 -18
  264. package/dist/server-worker.module.d.ts +0 -2
  265. package/dist/server-worker.module.js +0 -12
  266. package/dist/state/slow-duration-fps.d.ts +0 -11
  267. package/dist/state/slow-duration-fps.js +0 -86
  268. package/dist/state/transport-stream/start-offset.d.ts +0 -4
  269. package/dist/state/transport-stream.d.ts +0 -8
  270. package/dist/state/transport-stream.js +0 -11
  271. package/dist/state/uml.d.ts +0 -32
  272. package/dist/state/uml.js +0 -52
  273. package/dist/state/webm.d.ts +0 -30
  274. package/dist/state/work-on-seek-request-options.d.ts +0 -3
  275. package/dist/state/work-on-seek-request-options.js +0 -26
  276. package/dist/worker.module.d.ts +0 -4
  277. package/dist/worker.module.js +0 -12
  278. /package/dist/{seeking-info.js → seeking-hints.js} +0 -0
  279. /package/dist/worker/{forward-controller.d.ts → forward-controller-to-worker.d.ts} +0 -0
@@ -1,36 +1,49 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.workOnSeekRequest = exports.getWorkOnSeekRequestOptions = void 0;
4
- const get_seeking_info_1 = require("./get-seeking-info");
4
+ const get_seeking_byte_1 = require("./get-seeking-byte");
5
+ const get_seeking_hints_1 = require("./get-seeking-hints");
5
6
  const log_1 = require("./log");
6
7
  const perform_seek_1 = require("./perform-seek");
7
- const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, mp4HeaderSegment, isoState, }) => {
8
+ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, mp4HeaderSegment, isoState, transportStream, tracksState, webmState, keyframes, }) => {
8
9
  const mediaSections = mediaSectionState.getMediaSections();
9
10
  if (mediaSections.length === 0) {
10
- log_1.Log.trace(logLevel, 'No video sections defined, cannot seek yet');
11
+ log_1.Log.trace(logLevel, 'No media sections defined, cannot seek yet');
11
12
  return {
12
13
  type: 'valid-but-must-wait',
13
14
  };
14
15
  }
15
- if (seek.type === 'keyframe-before-time-in-seconds') {
16
- const seekingInfo = (0, get_seeking_info_1.getSeekingInfo)({
16
+ if (seek.type === 'keyframe-before-time') {
17
+ if (seek.timeInSeconds < 0) {
18
+ throw new Error(`Cannot seek to a negative time: ${JSON.stringify(seek)}`);
19
+ }
20
+ const seekingHints = (0, get_seeking_hints_1.getSeekingHints)({
17
21
  structureState,
18
22
  mp4HeaderSegment,
19
23
  mediaSectionState,
20
24
  isoState,
25
+ transportStream,
26
+ tracksState,
27
+ keyframesState: keyframes,
28
+ webmState,
21
29
  });
22
- if (!seekingInfo) {
30
+ if (!seekingHints) {
23
31
  log_1.Log.trace(logLevel, 'No seeking info, cannot seek yet');
24
32
  return {
25
33
  type: 'valid-but-must-wait',
26
34
  };
27
35
  }
28
- const seekingByte = await (0, get_seeking_info_1.getSeekingByte)({
29
- info: seekingInfo,
30
- time: seek.time,
36
+ const seekingByte = await (0, get_seeking_byte_1.getSeekingByte)({
37
+ info: seekingHints,
38
+ time: seek.timeInSeconds,
31
39
  logLevel,
32
40
  currentPosition: iterator.counter.getOffset(),
33
41
  isoState,
42
+ transportStream,
43
+ webmState,
44
+ mediaSection: mediaSectionState,
45
+ mp4HeaderSegment,
46
+ structure: structureState,
34
47
  });
35
48
  return seekingByte;
36
49
  }
@@ -59,11 +72,15 @@ const getWorkOnSeekRequestOptions = (state) => {
59
72
  currentReader: state.currentReader,
60
73
  discardReadBytes: state.discardReadBytes,
61
74
  fields: state.fields,
75
+ transportStream: state.transportStream,
76
+ tracksState: state.callbacks.tracks,
77
+ webmState: state.webm,
78
+ keyframes: state.keyframes,
62
79
  };
63
80
  };
64
81
  exports.getWorkOnSeekRequestOptions = getWorkOnSeekRequestOptions;
65
82
  const workOnSeekRequest = async (options) => {
66
- const { logLevel, controller, mediaSection, mp4HeaderSegment, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, } = options;
83
+ const { logLevel, controller, mediaSection, mp4HeaderSegment, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, } = options;
67
84
  const seek = controller._internals.seekSignal.getSeek();
68
85
  if (!seek) {
69
86
  return;
@@ -77,6 +94,10 @@ const workOnSeekRequest = async (options) => {
77
94
  structureState,
78
95
  mp4HeaderSegment,
79
96
  isoState,
97
+ transportStream,
98
+ tracksState,
99
+ webmState,
100
+ keyframes,
80
101
  });
81
102
  log_1.Log.trace(logLevel, `Seek action: ${JSON.stringify(resolution)}`);
82
103
  if (resolution.type === 'intermediary-seek') {
@@ -12,6 +12,23 @@ const forwardMediaParserControllerToWorker = (controller) => {
12
12
  controller._experimentalSeek(message.payload);
13
13
  return;
14
14
  }
15
+ if (message.type === 'request-get-seeking-hints') {
16
+ controller
17
+ .getSeekingHints()
18
+ .then((hints) => {
19
+ postMessage({
20
+ type: 'response-get-seeking-hints',
21
+ payload: hints,
22
+ });
23
+ })
24
+ .catch((error) => {
25
+ postMessage({
26
+ type: 'response-error',
27
+ payload: error,
28
+ });
29
+ });
30
+ return;
31
+ }
15
32
  if (message.type === 'request-resume') {
16
33
  controller.resume();
17
34
  return;
@@ -1,4 +1,9 @@
1
1
  import type { LogLevel } from '../log';
2
+ import type { SeekingHints } from '../seeking-hints';
2
3
  import type { ResponseError } from './worker-types';
3
- export declare const serializeError: (error: Error, logLevel: LogLevel) => ResponseError;
4
+ export declare const serializeError: ({ error, logLevel, seekingHints, }: {
5
+ error: Error;
6
+ logLevel: LogLevel;
7
+ seekingHints: SeekingHints | null;
8
+ }) => ResponseError;
4
9
  export declare const deserializeError: (error: ResponseError) => Error;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deserializeError = exports.serializeError = void 0;
4
4
  const errors_1 = require("../errors");
5
5
  const log_1 = require("../log");
6
- const serializeError = (error, logLevel) => {
6
+ const serializeError = ({ error, logLevel, seekingHints, }) => {
7
7
  var _a, _b, _c, _d, _e;
8
8
  if (error instanceof errors_1.IsAGifError) {
9
9
  return {
@@ -46,6 +46,7 @@ const serializeError = (error, logLevel) => {
46
46
  errorName: 'MediaParserAbortError',
47
47
  errorMessage: error.message,
48
48
  errorStack: (_d = error.stack) !== null && _d !== void 0 ? _d : '',
49
+ seekingHints,
49
50
  };
50
51
  }
51
52
  if (error.name !== 'Error') {
@@ -8,6 +8,7 @@ import type { MediaParserAudioCodec, MediaParserVideoCodec } from '../get-tracks
8
8
  import type { MediaParserMetadataEntry } from '../metadata/get-metadata';
9
9
  import type { MediaParserContainer, MediaParserKeyframe, MediaParserTracks, ParseMediaProgress, ParseMediaResult, ParseMediaSrc, SerializeableOptionalParseMediaParams } from '../options';
10
10
  import type { MediaParserStructureUnstable } from '../parse-result';
11
+ import type { SeekingHints } from '../seeking-hints';
11
12
  import type { MediaParserEmbeddedImage } from '../state/images';
12
13
  import type { InternalStats } from '../state/parser-state';
13
14
  import type { AudioOrVideoSample, OnAudioTrackParams, OnVideoTrackParams } from '../webcodec-sample-types';
@@ -59,12 +60,20 @@ type RequestSeek = {
59
60
  type RequestResume = {
60
61
  type: 'request-resume';
61
62
  };
63
+ type RequestGetSeekingHints = {
64
+ type: 'request-get-seeking-hints';
65
+ };
62
66
  type RequestAbort = {
63
67
  type: 'request-abort';
64
68
  };
65
69
  type ResponseDone = {
66
70
  type: 'response-done';
67
71
  payload: ParseMediaResult<Options<ParseMediaFields>>;
72
+ seekingHints: SeekingHints | null;
73
+ };
74
+ type ResponseGetSeekingHints = {
75
+ type: 'response-get-seeking-hints';
76
+ payload: SeekingHints;
68
77
  };
69
78
  type BaseError = {
70
79
  errorStack: string;
@@ -101,6 +110,7 @@ type IsAnUnsupportedFileTypeError = BaseError & {
101
110
  };
102
111
  type MediaParserAbortError = BaseError & {
103
112
  errorName: 'MediaParserAbortError';
113
+ seekingHints: SeekingHints | null;
104
114
  };
105
115
  type AnyError = GenericError | IsAGifError | IsAnImageError | IsAPdfError | IsAnUnsupportedFileTypeError | MediaParserAbortError;
106
116
  export type ResponseError = {
@@ -244,6 +254,6 @@ export type SignalErrorInCallback = {
244
254
  type: 'signal-error-in-callback';
245
255
  nonce: string;
246
256
  };
247
- export type WorkerRequestPayload = ParseMediaOnWorkerPayload | RequestResume | RequestPause | RequestAbort | RequestSeek | AcknowledgeCallback | SignalErrorInCallback;
248
- export type WorkerResponsePayload = ResponseDone | ResponseError | ResponseOnCallbackRequest;
257
+ export type WorkerRequestPayload = ParseMediaOnWorkerPayload | RequestResume | RequestPause | RequestAbort | RequestSeek | RequestGetSeekingHints | AcknowledgeCallback | SignalErrorInCallback;
258
+ export type WorkerResponsePayload = ResponseDone | ResponseError | ResponseOnCallbackRequest | ResponseGetSeekingHints;
249
259
  export {};
@@ -5,7 +5,7 @@ const select_stream_1 = require("./containers/m3u/select-stream");
5
5
  const media_parser_controller_1 = require("./controller/media-parser-controller");
6
6
  const internal_parse_media_1 = require("./internal-parse-media");
7
7
  const with_resolvers_1 = require("./with-resolvers");
8
- const forward_controller_1 = require("./worker/forward-controller");
8
+ const forward_controller_to_worker_1 = require("./worker/forward-controller-to-worker");
9
9
  const serialize_error_1 = require("./worker/serialize-error");
10
10
  const post = (message) => {
11
11
  postMessage(message);
@@ -42,7 +42,7 @@ const executeCallback = (payload) => {
42
42
  };
43
43
  const startParsing = async (message, reader) => {
44
44
  const { payload, src } = message;
45
- const { fields, acknowledgeRemotionLicense, logLevel: userLogLevel, progressIntervalInMs, mp4HeaderSegment, } = payload;
45
+ const { fields, acknowledgeRemotionLicense, logLevel: userLogLevel, progressIntervalInMs, mp4HeaderSegment, seekingHints, makeSamplesStartAtZero, } = payload;
46
46
  const { postAudioCodec, postContainer, postDimensions, postFps, postImages, postInternalStats, postIsHdr, postKeyframes, postLocation, postM3uStreams, postMetadata, postMimeType, postName, postNumberOfAudioChannels, postRotation, postSampleRate, postSlowAudioBitrate, postSlowNumberOfFrames, postSlowFps, postSlowDurationInSeconds, postSlowVideoBitrate, postStructure, postTracks, postUnrotatedDimensions, postVideoCodec, postSize, postSlowKeyframes, postDurationInSeconds, postParseProgress, postM3uStreamSelection, postM3uAssociatedPlaylistsSelection, postOnAudioTrack, postOnVideoTrack, } = message;
47
47
  const logLevel = userLogLevel !== null && userLogLevel !== void 0 ? userLogLevel : 'info';
48
48
  try {
@@ -357,17 +357,29 @@ const startParsing = async (message, reader) => {
357
357
  }
358
358
  : null,
359
359
  onDiscardedData: null,
360
+ makeSamplesStartAtZero: makeSamplesStartAtZero !== null && makeSamplesStartAtZero !== void 0 ? makeSamplesStartAtZero : true,
361
+ seekingHints: seekingHints !== null && seekingHints !== void 0 ? seekingHints : null,
360
362
  });
361
363
  post({
362
364
  type: 'response-done',
363
365
  payload: ret,
366
+ seekingHints: await controller.getSeekingHints(),
364
367
  });
365
368
  }
366
369
  catch (e) {
367
- post((0, serialize_error_1.serializeError)(e, logLevel));
370
+ let seekingHintsRes = null;
371
+ try {
372
+ seekingHintsRes = await controller.getSeekingHints();
373
+ }
374
+ catch (_a) { }
375
+ post((0, serialize_error_1.serializeError)({
376
+ error: e,
377
+ logLevel,
378
+ seekingHints: seekingHintsRes,
379
+ }));
368
380
  }
369
381
  };
370
- const onMessageForWorker = (0, forward_controller_1.forwardMediaParserControllerToWorker)(controller);
382
+ const onMessageForWorker = (0, forward_controller_to_worker_1.forwardMediaParserControllerToWorker)(controller);
371
383
  const messageHandler = (message, readerInterface) => {
372
384
  const data = message.data;
373
385
  if (data.type === 'request-worker') {
package/dist/worker.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  import type { ParseMediaOnWorker } from './options';
2
2
  export type { ParseMediaOnWorker, ParseMediaOnWorkerOptions } from './options';
3
3
  export declare const parseMediaOnWebWorker: ParseMediaOnWorker;
4
- export declare const parseMediaOnServerWorker: ParseMediaOnWorker;
package/package.json CHANGED
@@ -3,15 +3,15 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-parser"
4
4
  },
5
5
  "name": "@remotion/media-parser",
6
- "version": "4.0.285",
6
+ "version": "4.0.287",
7
7
  "main": "dist/index.js",
8
8
  "sideEffects": false,
9
9
  "devDependencies": {
10
10
  "@types/wicg-file-system-access": "2023.10.5",
11
11
  "eslint": "9.19.0",
12
- "@types/bun": "1.2.5",
13
- "@remotion/example-videos": "4.0.285",
14
- "@remotion/eslint-config-internal": "4.0.285"
12
+ "@types/bun": "1.2.8",
13
+ "@remotion/example-videos": "4.0.287",
14
+ "@remotion/eslint-config-internal": "4.0.287"
15
15
  },
16
16
  "publishConfig": {
17
17
  "access": "public"
@@ -1,9 +0,0 @@
1
- import type { MediaParserController } from '../../controller/media-parser-controller';
2
- import type { ParseMediaSrc } from '../../options';
3
- import type { ReaderInterface } from '../../readers/reader';
4
- export declare const getMfraAtom: ({ src, contentLength, readerInterface, controller, }: {
5
- src: ParseMediaSrc;
6
- contentLength: number;
7
- readerInterface: ReaderInterface;
8
- controller: MediaParserController;
9
- }) => Promise<import("../../readers/reader").Reader>;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMfraAtom = void 0;
4
- const getMfraAtom = async ({ src, contentLength, readerInterface, controller, }) => {
5
- const result = await readerInterface.read({
6
- controller,
7
- range: [contentLength - 16, contentLength - 1],
8
- src,
9
- });
10
- return result.reader;
11
- };
12
- exports.getMfraAtom = getMfraAtom;
@@ -1,11 +0,0 @@
1
- import type { LogLevel } from '../../log';
2
- import type { IsoBaseMediaSeekingInfo } from '../../seeking-info';
3
- import type { IsoBaseMediaState } from '../../state/iso-base-media/iso-state';
4
- import type { SeekResolution } from '../../work-on-seek-request';
5
- export declare const getSeekingByteFromIsoBaseMedia: ({ info, time, logLevel, currentPosition, isoState, }: {
6
- info: IsoBaseMediaSeekingInfo;
7
- time: number;
8
- logLevel: LogLevel;
9
- currentPosition: number;
10
- isoState: IsoBaseMediaState;
11
- }) => Promise<SeekResolution>;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSeekingInfoFromMp4 = void 0;
4
- const traversal_1 = require("./traversal");
5
- const getSeekingInfoFromMp4 = ({ structureState, isoState, mp4HeaderSegment, mediaSectionState, }) => {
6
- const structure = structureState.getIsoStructure();
7
- const moovAtom = (0, traversal_1.getMoovBoxFromState)({
8
- isoState,
9
- mp4HeaderSegment,
10
- structureState,
11
- });
12
- const moofBoxes = (0, traversal_1.getMoofBoxes)(structure.boxes);
13
- const tfraBoxes = (0, traversal_1.getTfraBoxes)(structure);
14
- if (!moovAtom) {
15
- return null;
16
- }
17
- return {
18
- type: 'iso-base-media-seeking-info',
19
- moovBox: moovAtom,
20
- moofBoxes,
21
- tfraBoxes,
22
- mediaSections: mediaSectionState.getMediaSections(),
23
- };
24
- };
25
- exports.getSeekingInfoFromMp4 = getSeekingInfoFromMp4;
@@ -1,2 +0,0 @@
1
- import type { IsoBaseMediaBox } from '../base-media-box';
2
- export declare const parseMfraBox: ({ iterator, size, offset }: IsoBaseMediaBox) => null;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseMfraBox = void 0;
4
- const parseMfraBox = ({ iterator, size, offset }) => {
5
- const mfraBox = iterator.readBox();
6
- if (mfraBox.type !== 'mfra') {
7
- throw new Error('Expected mfra box');
8
- }
9
- return null;
10
- };
11
- exports.parseMfraBox = parseMfraBox;
@@ -1,6 +0,0 @@
1
- import type { PacketPes } from './parse-pes';
2
- export declare const makeNextPesHeaderStore: () => {
3
- setNextPesHeader: (pesHeader: PacketPes) => void;
4
- getNextPesHeader: () => PacketPes;
5
- };
6
- export type NextPesHeaderStore = ReturnType<typeof makeNextPesHeaderStore>;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeNextPesHeaderStore = void 0;
4
- const makeNextPesHeaderStore = () => {
5
- let nextPesHeader = null;
6
- return {
7
- setNextPesHeader: (pesHeader) => {
8
- nextPesHeader = pesHeader;
9
- },
10
- getNextPesHeader: () => {
11
- if (!nextPesHeader) {
12
- throw new Error('No next PES header found');
13
- }
14
- return nextPesHeader;
15
- },
16
- };
17
- };
18
- exports.makeNextPesHeaderStore = makeNextPesHeaderStore;
@@ -1,4 +0,0 @@
1
- export declare const startOffsetStore: () => {
2
- getOffset: () => number;
3
- setOffset: (newOffset: number) => void;
4
- };
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startOffsetStore = void 0;
4
- const startOffsetStore = () => {
5
- let offset = 0;
6
- return {
7
- getOffset: () => offset,
8
- setOffset: (newOffset) => {
9
- offset = newOffset;
10
- },
11
- };
12
- };
13
- exports.startOffsetStore = startOffsetStore;
@@ -1,7 +0,0 @@
1
- import type { WavSeekingInfo } from '../../seeking-info';
2
- import type { MediaSectionState } from '../../state/video-section';
3
- import type { WavStructure } from './types';
4
- export declare const getSeekingInfoFromWav: ({ structure, mediaSectionState, }: {
5
- structure: WavStructure;
6
- mediaSectionState: MediaSectionState;
7
- }) => WavSeekingInfo | null;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSeekingInfoFromWav = void 0;
4
- const getSeekingInfoFromWav = ({ structure, mediaSectionState, }) => {
5
- const fmtBox = structure.boxes.find((box) => box.type === 'wav-fmt');
6
- if (!fmtBox) {
7
- return null;
8
- }
9
- const mediaSection = mediaSectionState.getMediaSections();
10
- if (mediaSection.length !== 1) {
11
- return null;
12
- }
13
- return {
14
- type: 'wav-seeking-info',
15
- sampleRate: fmtBox.sampleRate,
16
- blockAlign: fmtBox.blockAlign,
17
- mediaSections: mediaSection[0],
18
- };
19
- };
20
- exports.getSeekingInfoFromWav = getSeekingInfoFromWav;
@@ -1,5 +0,0 @@
1
- import type { ParseResult } from '../../parse-result';
2
- import type { ParserState } from '../../state/parser-state';
3
- export declare const parseVideoSection: ({ state, }: {
4
- state: ParserState;
5
- }) => Promise<ParseResult>;
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseVideoSection = void 0;
4
- const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
5
- const emit_audio_sample_1 = require("../../emit-audio-sample");
6
- const work_on_seek_request_1 = require("../../work-on-seek-request");
7
- const get_seeking_byte_1 = require("./get-seeking-byte");
8
- const parseVideoSection = async ({ state, }) => {
9
- const { iterator } = state;
10
- const structure = state.structure.getWavStructure();
11
- const videoSection = state.videoSection.getVideoSectionAssertOnlyOne();
12
- const maxOffset = videoSection.start + videoSection.size;
13
- const maxRead = maxOffset - iterator.counter.getOffset();
14
- const offset = iterator.counter.getOffset();
15
- const fmtBox = structure.boxes.find((box) => box.type === 'wav-fmt');
16
- if (!fmtBox) {
17
- throw new Error('Expected fmt box');
18
- }
19
- const toRead = Math.min(maxRead, fmtBox.sampleRate * fmtBox.blockAlign * get_seeking_byte_1.WAVE_SECONDS_PER_SAMPLE);
20
- const duration = toRead / (fmtBox.sampleRate * fmtBox.blockAlign);
21
- const timestamp = (offset - videoSection.start) / (fmtBox.sampleRate * fmtBox.blockAlign);
22
- const data = iterator.getSlice(toRead);
23
- await (0, emit_audio_sample_1.emitAudioSample)({
24
- trackId: 0,
25
- audioSample: (0, convert_audio_or_video_sample_1.convertAudioOrVideoSampleToWebCodecsTimestamps)({
26
- cts: timestamp,
27
- dts: timestamp,
28
- data,
29
- duration,
30
- timestamp,
31
- trackId: 0,
32
- type: 'key',
33
- offset,
34
- timescale: 1000000,
35
- }, 1),
36
- workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
37
- callbacks: state.callbacks,
38
- });
39
- return null;
40
- };
41
- exports.parseVideoSection = parseVideoSection;
package/dist/emitter.d.ts DELETED
@@ -1,33 +0,0 @@
1
- import type { Seek } from './controller/seek-signal';
2
- type MediaParserEventMap = {
3
- pause: undefined;
4
- resume: undefined;
5
- abort: {
6
- reason?: unknown;
7
- };
8
- seek: {
9
- seek: Seek;
10
- };
11
- };
12
- export type MediaParserEventTypes = keyof MediaParserEventMap;
13
- export type CallbackListener<T extends MediaParserEventTypes> = (data: {
14
- detail: MediaParserEventMap[T];
15
- }) => void;
16
- type MediaParserListeners = {
17
- [EventType in MediaParserEventTypes]: CallbackListener<EventType>[];
18
- };
19
- export declare class MediaParserEmitter {
20
- #private;
21
- listeners: MediaParserListeners;
22
- readyPromise: Promise<void>;
23
- constructor();
24
- markAsReady: () => void;
25
- addEventListener: <Q extends MediaParserEventTypes>(name: Q, callback: CallbackListener<Q>) => void;
26
- removeEventListener: <Q extends MediaParserEventTypes>(name: Q, callback: CallbackListener<Q>) => void;
27
- private dispatchEvent;
28
- dispatchPause: () => void;
29
- dispatchResume: () => void;
30
- dispatchAbort: (reason?: unknown) => void;
31
- dispatchSeek: (seek: Seek) => void;
32
- }
33
- export {};
package/dist/emitter.js DELETED
@@ -1,65 +0,0 @@
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;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.MediaParserEmitter = void 0;
16
- class MediaParserEmitter {
17
- constructor() {
18
- this.listeners = {
19
- pause: [],
20
- resume: [],
21
- abort: [],
22
- seek: [],
23
- };
24
- _MediaParserEmitter_markAsReady.set(this, void 0);
25
- this.markAsReady = () => {
26
- __classPrivateFieldGet(this, _MediaParserEmitter_markAsReady, "f").call(this);
27
- };
28
- this.addEventListener = (name, callback) => {
29
- this.listeners[name].push(callback);
30
- };
31
- this.removeEventListener = (name, callback) => {
32
- this.listeners[name] = this.listeners[name].filter((l) => l !== callback);
33
- };
34
- this.dispatchPause = () => {
35
- this.readyPromise = this.readyPromise.then(() => {
36
- this.dispatchEvent('pause', undefined);
37
- });
38
- };
39
- this.dispatchResume = () => {
40
- this.readyPromise = this.readyPromise.then(() => {
41
- this.dispatchEvent('resume', undefined);
42
- });
43
- };
44
- this.dispatchAbort = (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
- });
53
- };
54
- const { promise, resolve } = Promise.withResolvers();
55
- this.readyPromise = promise;
56
- __classPrivateFieldSet(this, _MediaParserEmitter_markAsReady, resolve, "f");
57
- }
58
- dispatchEvent(dispatchName, context) {
59
- this.listeners[dispatchName].forEach((callback) => {
60
- callback({ detail: context });
61
- });
62
- }
63
- }
64
- exports.MediaParserEmitter = MediaParserEmitter;
65
- _MediaParserEmitter_markAsReady = new WeakMap();
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSeekingByte = exports.getSeekingInfo = void 0;
4
- const get_seeking_from_mp4_1 = require("./containers/iso-base-media/get-seeking-from-mp4");
5
- const get_seeking_info_from_mp4_1 = require("./containers/iso-base-media/get-seeking-info-from-mp4");
6
- const get_seeking_byte_1 = require("./containers/wav/get-seeking-byte");
7
- const get_seeking_info_1 = require("./containers/wav/get-seeking-info");
8
- const getSeekingInfo = ({ structureState, mp4HeaderSegment, mediaSectionState, isoState, }) => {
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_1.getSeekingInfoFromWav)({
23
- structure,
24
- mediaSectionState,
25
- });
26
- }
27
- throw new Error(`Seeking is not supported for this format: ${structure.type}`);
28
- };
29
- exports.getSeekingInfo = getSeekingInfo;
30
- const getSeekingByte = ({ info, time, logLevel, currentPosition, isoState, }) => {
31
- if (info.type === 'iso-base-media-seeking-info') {
32
- return (0, get_seeking_from_mp4_1.getSeekingByteFromIsoBaseMedia)({
33
- info,
34
- time,
35
- logLevel,
36
- currentPosition,
37
- isoState,
38
- });
39
- }
40
- if (info.type === 'wav-seeking-info') {
41
- return (0, get_seeking_byte_1.getSeekingByteFromWav)({
42
- info,
43
- time,
44
- });
45
- }
46
- throw new Error(`Unknown seeking info type: ${info}`);
47
- };
48
- exports.getSeekingByte = getSeekingByte;
@@ -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;