@remotion/media-parser 4.0.287 → 4.0.289

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 (140) hide show
  1. package/dist/containers/aac/get-seeking-byte.d.ts +6 -0
  2. package/dist/containers/aac/get-seeking-byte.js +30 -0
  3. package/dist/containers/aac/parse-aac.js +23 -18
  4. package/dist/containers/aac/seeking-hints.d.ts +13 -0
  5. package/dist/containers/aac/seeking-hints.js +14 -0
  6. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  7. package/dist/containers/flac/get-seeking-byte.d.ts +5 -0
  8. package/dist/containers/flac/get-seeking-byte.js +30 -0
  9. package/dist/containers/flac/parse-flac-frame.js +18 -17
  10. package/dist/containers/flac/parse-flac.js +5 -25
  11. package/dist/containers/flac/parse-meta.d.ts +6 -0
  12. package/dist/containers/flac/parse-meta.js +31 -0
  13. package/dist/containers/flac/seeking-hints.d.ts +18 -0
  14. package/dist/containers/flac/seeking-hints.js +20 -0
  15. package/dist/containers/iso-base-media/collect-sample-positions-from-trak.js +7 -5
  16. package/dist/containers/iso-base-media/get-children.d.ts +2 -1
  17. package/dist/containers/iso-base-media/get-children.js +2 -1
  18. package/dist/containers/iso-base-media/get-mfra-seeking-box.js +1 -0
  19. package/dist/containers/iso-base-media/get-moov-atom.js +2 -1
  20. package/dist/containers/iso-base-media/get-video-codec-from-iso-track.d.ts +1 -1
  21. package/dist/containers/iso-base-media/mdat/mdat.js +33 -35
  22. package/dist/containers/iso-base-media/mdat/postprocess-bytes.d.ts +5 -0
  23. package/dist/containers/iso-base-media/mdat/postprocess-bytes.js +25 -0
  24. package/dist/containers/iso-base-media/moov/moov.d.ts +2 -1
  25. package/dist/containers/iso-base-media/moov/moov.js +2 -1
  26. package/dist/containers/iso-base-media/parse-boxes.js +1 -0
  27. package/dist/containers/iso-base-media/process-box.d.ts +2 -1
  28. package/dist/containers/iso-base-media/process-box.js +10 -4
  29. package/dist/containers/iso-base-media/seeking-hints.js +6 -5
  30. package/dist/containers/iso-base-media/should-group-audio-samples.d.ts +6 -0
  31. package/dist/containers/iso-base-media/should-group-audio-samples.js +16 -0
  32. package/dist/containers/iso-base-media/stsd/mebx.d.ts +2 -1
  33. package/dist/containers/iso-base-media/stsd/mebx.js +2 -1
  34. package/dist/containers/iso-base-media/stsd/samples.d.ts +4 -2
  35. package/dist/containers/iso-base-media/stsd/samples.js +7 -2
  36. package/dist/containers/iso-base-media/stsd/stsd.d.ts +2 -1
  37. package/dist/containers/iso-base-media/stsd/stsd.js +2 -1
  38. package/dist/containers/iso-base-media/trak/trak.d.ts +2 -1
  39. package/dist/containers/iso-base-media/trak/trak.js +2 -1
  40. package/dist/containers/mp3/audio-sample-from-cbr.d.ts +11 -0
  41. package/dist/containers/mp3/audio-sample-from-cbr.js +35 -0
  42. package/dist/containers/mp3/get-duration.js +33 -6
  43. package/dist/containers/mp3/get-seeking-byte.d.ts +6 -0
  44. package/dist/containers/mp3/get-seeking-byte.js +49 -0
  45. package/dist/containers/mp3/parse-mp3.js +9 -0
  46. package/dist/containers/mp3/parse-mpeg-header.js +74 -263
  47. package/dist/containers/mp3/parse-packet-header.d.ts +30 -0
  48. package/dist/containers/mp3/parse-packet-header.js +258 -0
  49. package/dist/containers/mp3/parse-xing.d.ts +19 -0
  50. package/dist/containers/mp3/parse-xing.js +120 -0
  51. package/dist/containers/mp3/seek/audio-sample-from-cbr.d.ts +16 -0
  52. package/dist/containers/mp3/seek/audio-sample-from-cbr.js +35 -0
  53. package/dist/containers/mp3/seek/audio-sample-from-vbr.d.ts +8 -0
  54. package/dist/containers/mp3/seek/audio-sample-from-vbr.js +47 -0
  55. package/dist/containers/mp3/seek/get-approximate-byte-from-bitrate.d.ts +9 -0
  56. package/dist/containers/mp3/seek/get-approximate-byte-from-bitrate.js +28 -0
  57. package/dist/containers/mp3/seek/get-byte-from-observed-samples.d.ts +6 -0
  58. package/dist/containers/mp3/seek/get-byte-from-observed-samples.js +27 -0
  59. package/dist/containers/mp3/seek/get-seek-point-from-xing.d.ts +7 -0
  60. package/dist/containers/mp3/seek/get-seek-point-from-xing.js +29 -0
  61. package/dist/containers/mp3/seek/wait-until-syncword.d.ts +4 -0
  62. package/dist/containers/mp3/seek/wait-until-syncword.js +25 -0
  63. package/dist/containers/mp3/seeking-hints.d.ts +24 -0
  64. package/dist/containers/mp3/seeking-hints.js +21 -0
  65. package/dist/containers/riff/expect-riff-box.d.ts +6 -1
  66. package/dist/containers/riff/expect-riff-box.js +37 -27
  67. package/dist/containers/riff/get-seeking-byte.d.ts +8 -0
  68. package/dist/containers/riff/get-seeking-byte.js +56 -0
  69. package/dist/containers/riff/has-index.d.ts +2 -0
  70. package/dist/containers/riff/has-index.js +8 -0
  71. package/dist/containers/riff/parse-avih.js +3 -0
  72. package/dist/containers/riff/parse-idx1.d.ts +6 -0
  73. package/dist/containers/riff/parse-idx1.js +47 -0
  74. package/dist/containers/riff/parse-list-box.d.ts +4 -2
  75. package/dist/containers/riff/parse-list-box.js +8 -3
  76. package/dist/containers/riff/parse-movi.js +35 -40
  77. package/dist/containers/riff/parse-riff-body.js +5 -1
  78. package/dist/containers/riff/parse-riff-box.d.ts +4 -2
  79. package/dist/containers/riff/parse-riff-box.js +10 -3
  80. package/dist/containers/riff/riff-box.d.ts +14 -1
  81. package/dist/containers/riff/seek/fetch-idx1.d.ts +15 -0
  82. package/dist/containers/riff/seek/fetch-idx1.js +38 -0
  83. package/dist/containers/riff/seeking-hints.d.ts +23 -0
  84. package/dist/containers/riff/seeking-hints.js +36 -0
  85. package/dist/containers/transport-stream/handle-aac-packet.js +4 -8
  86. package/dist/containers/transport-stream/handle-avc-packet.js +4 -8
  87. package/dist/containers/wav/get-duration-from-wav.js +1 -10
  88. package/dist/containers/wav/parse-media-section.js +14 -18
  89. package/dist/containers/webm/parse-ebml.js +3 -16
  90. package/dist/containers/webm/seek/seeking-hints.js +1 -1
  91. package/dist/emit-available-info.js +8 -8
  92. package/dist/esm/index.mjs +1549 -403
  93. package/dist/esm/worker-server-entry.mjs +1543 -397
  94. package/dist/esm/worker-web-entry.mjs +1543 -397
  95. package/dist/find-last-keyframe.d.ts +5 -0
  96. package/dist/find-last-keyframe.js +18 -0
  97. package/dist/get-audio-codec.d.ts +1 -0
  98. package/dist/get-audio-codec.js +13 -2
  99. package/dist/get-sample-positions-from-mp4.d.ts +4 -1
  100. package/dist/get-sample-positions-from-mp4.js +3 -1
  101. package/dist/get-sample-positions.d.ts +2 -0
  102. package/dist/get-sample-positions.js +2 -0
  103. package/dist/get-seeking-byte.d.ts +3 -1
  104. package/dist/get-seeking-byte.js +45 -7
  105. package/dist/get-seeking-hints.d.ts +12 -1
  106. package/dist/get-seeking-hints.js +40 -9
  107. package/dist/index.d.ts +56 -8
  108. package/dist/internal-parse-media.js +6 -0
  109. package/dist/parse-loop.js +15 -0
  110. package/dist/samples-from-moof.js +2 -0
  111. package/dist/seeking-hints.d.ts +5 -1
  112. package/dist/set-seeking-hints.js +28 -8
  113. package/dist/state/aac-state.d.ts +6 -0
  114. package/dist/state/aac-state.js +7 -2
  115. package/dist/state/audio-sample-map.d.ts +11 -0
  116. package/dist/state/audio-sample-map.js +21 -0
  117. package/dist/state/flac-state.d.ts +6 -0
  118. package/dist/state/flac-state.js +3 -0
  119. package/dist/state/keyframes.d.ts +1 -2
  120. package/dist/state/keyframes.js +2 -2
  121. package/dist/state/matroska/lazy-cues-fetch.js +13 -1
  122. package/dist/state/parser-state.d.ts +52 -6
  123. package/dist/state/parser-state.js +6 -6
  124. package/dist/state/riff/lazy-idx1-fetch.d.ts +30 -0
  125. package/dist/state/riff/lazy-idx1-fetch.js +63 -0
  126. package/dist/state/riff/riff-keyframes.d.ts +10 -0
  127. package/dist/state/riff/riff-keyframes.js +26 -0
  128. package/dist/state/riff/sample-counter.d.ts +12 -0
  129. package/dist/state/riff/sample-counter.js +52 -0
  130. package/dist/state/riff.d.ts +41 -1
  131. package/dist/state/riff.js +12 -1
  132. package/dist/state/sample-callbacks.d.ts +3 -4
  133. package/dist/state/sample-callbacks.js +3 -16
  134. package/dist/state/samples-observed/slow-duration-fps.d.ts +3 -1
  135. package/dist/state/samples-observed/slow-duration-fps.js +7 -0
  136. package/dist/version.d.ts +1 -1
  137. package/dist/version.js +1 -1
  138. package/dist/work-on-seek-request.d.ts +10 -0
  139. package/dist/work-on-seek-request.js +20 -2
  140. package/package.json +3 -3
@@ -7,5 +7,7 @@ export declare const samplesObservedState: () => {
7
7
  getSlowNumberOfFrames: () => number;
8
8
  getAudioBitrate: () => number | null;
9
9
  getVideoBitrate: () => number | null;
10
+ getLastSampleObserved: () => boolean;
11
+ setLastSampleObserved: () => void;
10
12
  };
11
- export type SlowDurationAndFpsState = ReturnType<typeof samplesObservedState>;
13
+ export type SamplesObservedState = ReturnType<typeof samplesObservedState>;
@@ -6,6 +6,7 @@ const samplesObservedState = () => {
6
6
  let largestVideoSample;
7
7
  let smallestAudioSample;
8
8
  let largestAudioSample;
9
+ let lastSampleObserved = false;
9
10
  const videoSamples = new Map();
10
11
  const audioSamples = new Map();
11
12
  const getSlowVideoDurationInSeconds = () => {
@@ -76,6 +77,10 @@ const samplesObservedState = () => {
76
77
  const videoSizesInBytes = Array.from(videoSamples.values()).reduce((acc, size) => acc + size, 0);
77
78
  return (videoSizesInBytes * 8) / videoDuration;
78
79
  };
80
+ const getLastSampleObserved = () => lastSampleObserved;
81
+ const setLastSampleObserved = () => {
82
+ lastSampleObserved = true;
83
+ };
79
84
  return {
80
85
  addVideoSample,
81
86
  addAudioSample,
@@ -84,6 +89,8 @@ const samplesObservedState = () => {
84
89
  getSlowNumberOfFrames,
85
90
  getAudioBitrate,
86
91
  getVideoBitrate,
92
+ getLastSampleObserved,
93
+ setLastSampleObserved,
87
94
  };
88
95
  };
89
96
  exports.samplesObservedState = samplesObservedState;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "4.0.287";
1
+ export declare const VERSION = "4.0.289";
package/dist/version.js CHANGED
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Automatically generated on publish
5
- exports.VERSION = '4.0.287';
5
+ exports.VERSION = '4.0.289';
@@ -5,12 +5,17 @@ import type { LogLevel } from './log';
5
5
  import type { ParseMediaMode, ParseMediaSrc } from './options';
6
6
  import type { IsoBaseMediaStructure } from './parse-result';
7
7
  import type { ReaderInterface } from './readers/reader';
8
+ import type { AacState } from './state/aac-state';
8
9
  import type { CurrentReader } from './state/current-reader';
10
+ import type { FlacState } from './state/flac-state';
9
11
  import type { TracksState } from './state/has-tracks-section';
10
12
  import type { IsoBaseMediaState } from './state/iso-base-media/iso-state';
11
13
  import type { KeyframesState } from './state/keyframes';
12
14
  import type { WebmState } from './state/matroska/webm';
15
+ import type { Mp3State } from './state/mp3';
13
16
  import type { ParserState } from './state/parser-state';
17
+ import type { RiffState } from './state/riff';
18
+ import type { SamplesObservedState } from './state/samples-observed/slow-duration-fps';
14
19
  import type { SeekInfiniteLoop } from './state/seek-infinite-loop';
15
20
  import type { StructureState } from './state/structure';
16
21
  import type { TransportStreamState } from './state/transport-stream/transport-stream';
@@ -35,6 +40,11 @@ export type WorkOnSeekRequestOptions = {
35
40
  tracksState: TracksState;
36
41
  webmState: WebmState;
37
42
  keyframes: KeyframesState;
43
+ flacState: FlacState;
44
+ samplesObserved: SamplesObservedState;
45
+ riffState: RiffState;
46
+ mp3State: Mp3State;
47
+ aacState: AacState;
38
48
  };
39
49
  export declare const getWorkOnSeekRequestOptions: (state: ParserState) => WorkOnSeekRequestOptions;
40
50
  export declare const workOnSeekRequest: (options: WorkOnSeekRequestOptions) => Promise<void>;
@@ -5,7 +5,7 @@ const get_seeking_byte_1 = require("./get-seeking-byte");
5
5
  const get_seeking_hints_1 = require("./get-seeking-hints");
6
6
  const log_1 = require("./log");
7
7
  const perform_seek_1 = require("./perform-seek");
8
- const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, mp4HeaderSegment, isoState, transportStream, tracksState, webmState, keyframes, }) => {
8
+ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, mp4HeaderSegment, isoState, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, contentLength, aacState, }) => {
9
9
  const mediaSections = mediaSectionState.getMediaSections();
10
10
  if (mediaSections.length === 0) {
11
11
  log_1.Log.trace(logLevel, 'No media sections defined, cannot seek yet');
@@ -18,6 +18,8 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
18
18
  throw new Error(`Cannot seek to a negative time: ${JSON.stringify(seek)}`);
19
19
  }
20
20
  const seekingHints = (0, get_seeking_hints_1.getSeekingHints)({
21
+ riffState,
22
+ samplesObserved,
21
23
  structureState,
22
24
  mp4HeaderSegment,
23
25
  mediaSectionState,
@@ -26,6 +28,10 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
26
28
  tracksState,
27
29
  keyframesState: keyframes,
28
30
  webmState,
31
+ flacState,
32
+ mp3State,
33
+ contentLength,
34
+ aacState,
29
35
  });
30
36
  if (!seekingHints) {
31
37
  log_1.Log.trace(logLevel, 'No seeking info, cannot seek yet');
@@ -44,6 +50,7 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
44
50
  mediaSection: mediaSectionState,
45
51
  mp4HeaderSegment,
46
52
  structure: structureState,
53
+ riffState,
47
54
  });
48
55
  return seekingByte;
49
56
  }
@@ -76,11 +83,16 @@ const getWorkOnSeekRequestOptions = (state) => {
76
83
  tracksState: state.callbacks.tracks,
77
84
  webmState: state.webm,
78
85
  keyframes: state.keyframes,
86
+ flacState: state.flac,
87
+ samplesObserved: state.samplesObserved,
88
+ riffState: state.riff,
89
+ mp3State: state.mp3,
90
+ aacState: state.aac,
79
91
  };
80
92
  };
81
93
  exports.getWorkOnSeekRequestOptions = getWorkOnSeekRequestOptions;
82
94
  const workOnSeekRequest = async (options) => {
83
- const { logLevel, controller, mediaSection, mp4HeaderSegment, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, } = options;
95
+ const { logLevel, controller, mediaSection, mp4HeaderSegment, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, aacState, } = options;
84
96
  const seek = controller._internals.seekSignal.getSeek();
85
97
  if (!seek) {
86
98
  return;
@@ -98,6 +110,12 @@ const workOnSeekRequest = async (options) => {
98
110
  tracksState,
99
111
  webmState,
100
112
  keyframes,
113
+ flacState,
114
+ samplesObserved,
115
+ riffState,
116
+ mp3State,
117
+ contentLength,
118
+ aacState,
101
119
  });
102
120
  log_1.Log.trace(logLevel, `Seek action: ${JSON.stringify(resolution)}`);
103
121
  if (resolution.type === 'intermediary-seek') {
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.287",
6
+ "version": "4.0.289",
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
12
  "@types/bun": "1.2.8",
13
- "@remotion/example-videos": "4.0.287",
14
- "@remotion/eslint-config-internal": "4.0.287"
13
+ "@remotion/example-videos": "4.0.289",
14
+ "@remotion/eslint-config-internal": "4.0.289"
15
15
  },
16
16
  "publishConfig": {
17
17
  "access": "public"