@remotion/media-parser 4.0.302 → 4.0.303
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.
- package/dist/check-if-done.js +4 -0
- package/dist/containers/aac/parse-aac.js +1 -0
- package/dist/containers/avc/key.d.ts +1 -1
- package/dist/containers/avc/key.js +5 -1
- package/dist/containers/avc/max-buffer-size.d.ts +3 -0
- package/dist/containers/avc/max-buffer-size.js +40 -0
- package/dist/containers/avc/parse-avc.d.ts +6 -7
- package/dist/containers/avc/parse-avc.js +83 -7
- package/dist/containers/flac/parse-streaminfo.js +1 -0
- package/dist/containers/iso-base-media/base-media-box.d.ts +2 -1
- package/dist/containers/iso-base-media/elst.d.ts +19 -0
- package/dist/containers/iso-base-media/elst.js +33 -0
- package/dist/containers/iso-base-media/find-keyframe-before-time.d.ts +2 -1
- package/dist/containers/iso-base-media/find-keyframe-before-time.js +3 -3
- package/dist/containers/iso-base-media/get-moov-atom.js +1 -0
- package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.js +1 -0
- package/dist/containers/iso-base-media/get-seeking-byte.js +1 -0
- package/dist/containers/iso-base-media/make-track.d.ts +1 -1
- package/dist/containers/iso-base-media/make-track.js +4 -1
- package/dist/containers/iso-base-media/mdat/get-editlist.d.ts +5 -0
- package/dist/containers/iso-base-media/mdat/get-editlist.js +21 -0
- package/dist/containers/iso-base-media/mdat/mdat.js +8 -5
- package/dist/containers/iso-base-media/parse-boxes.js +1 -0
- package/dist/containers/iso-base-media/process-box.d.ts +2 -0
- package/dist/containers/iso-base-media/process-box.js +31 -4
- package/dist/containers/iso-base-media/traversal.d.ts +2 -0
- package/dist/containers/iso-base-media/traversal.js +10 -1
- package/dist/containers/mp3/parse-mpeg-header.js +1 -0
- package/dist/containers/riff/convert-queued-sample-to-mediaparser-sample.d.ts +14 -0
- package/dist/containers/riff/convert-queued-sample-to-mediaparser-sample.js +55 -0
- package/dist/containers/riff/get-seeking-byte.d.ts +3 -1
- package/dist/containers/riff/get-seeking-byte.js +5 -1
- package/dist/containers/riff/get-strh-for-index.d.ts +2 -0
- package/dist/containers/riff/get-strh-for-index.js +17 -0
- package/dist/containers/riff/get-tracks-from-avi.js +2 -0
- package/dist/containers/riff/parse-movi.js +51 -44
- package/dist/containers/riff/parse-riff-body.js +8 -0
- package/dist/containers/transport-stream/handle-aac-packet.js +1 -0
- package/dist/containers/transport-stream/handle-avc-packet.d.ts +3 -1
- package/dist/containers/transport-stream/handle-avc-packet.js +4 -3
- package/dist/containers/transport-stream/parse-transport-stream.js +1 -0
- package/dist/containers/transport-stream/process-audio.d.ts +3 -1
- package/dist/containers/transport-stream/process-audio.js +2 -1
- package/dist/containers/transport-stream/process-sample-if-possible.js +2 -0
- package/dist/containers/transport-stream/process-stream-buffers.d.ts +5 -2
- package/dist/containers/transport-stream/process-stream-buffers.js +4 -2
- package/dist/containers/transport-stream/process-video.d.ts +3 -1
- package/dist/containers/transport-stream/process-video.js +2 -1
- package/dist/containers/wav/parse-fmt.js +1 -0
- package/dist/containers/webm/get-sample-from-block.d.ts +3 -1
- package/dist/containers/webm/get-sample-from-block.js +4 -3
- package/dist/containers/webm/make-track.js +2 -0
- package/dist/containers/webm/parse-ebml.d.ts +1 -1
- package/dist/containers/webm/parse-ebml.js +3 -1
- package/dist/containers/webm/state-for-processing.d.ts +3 -1
- package/dist/containers/webm/state-for-processing.js +2 -1
- package/dist/convert-audio-or-video-sample.js +1 -0
- package/dist/esm/index.mjs +597 -127
- package/dist/esm/universal.mjs +9 -8
- package/dist/esm/web.mjs +9 -8
- package/dist/esm/worker-server-entry.mjs +596 -126
- package/dist/esm/worker-web-entry.mjs +596 -126
- package/dist/get-seeking-byte.d.ts +3 -1
- package/dist/get-seeking-byte.js +2 -1
- package/dist/get-tracks.d.ts +3 -0
- package/dist/get-tracks.js +10 -1
- package/dist/index.d.ts +34 -3
- package/dist/readers/from-fetch.js +2 -1
- package/dist/run-parse-iteration.js +0 -3
- package/dist/state/avc/avc-state.d.ts +12 -0
- package/dist/state/avc/avc-state.js +44 -0
- package/dist/state/iso-base-media/iso-state.d.ts +4 -0
- package/dist/state/iso-base-media/iso-state.js +2 -0
- package/dist/state/iso-base-media/timescale-state.d.ts +5 -0
- package/dist/state/iso-base-media/timescale-state.js +13 -0
- package/dist/state/parser-state.d.ts +34 -3
- package/dist/state/parser-state.js +3 -0
- package/dist/state/riff/queued-b-frames.d.ts +9 -0
- package/dist/state/riff/queued-b-frames.js +47 -0
- package/dist/state/riff/queued-frames.d.ts +9 -0
- package/dist/state/riff/queued-frames.js +39 -0
- package/dist/state/riff/riff-keyframes.js +1 -0
- package/dist/state/riff/sample-counter.d.ts +13 -2
- package/dist/state/riff/sample-counter.js +34 -7
- package/dist/state/riff.d.ts +19 -2
- package/dist/state/riff.js +3 -0
- package/dist/state/transport-stream/last-emitted-sample.d.ts +1 -1
- package/dist/state/transport-stream/transport-stream.d.ts +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webcodec-sample-types.d.ts +11 -0
- package/dist/work-on-seek-request.d.ts +2 -0
- package/dist/work-on-seek-request.js +5 -2
- package/package.json +3 -3
package/dist/state/riff.d.ts
CHANGED
|
@@ -16,6 +16,13 @@ export declare const riffSpecificState: ({ controller, logLevel, readerInterface
|
|
|
16
16
|
onProfile: (profile: SpsAndPps) => Promise<void>;
|
|
17
17
|
registerOnAvcProfileCallback: (callback: AvcProfileInfoCallback) => void;
|
|
18
18
|
getNextTrackIndex: () => number;
|
|
19
|
+
queuedBFrames: {
|
|
20
|
+
addFrame: (frame: import("./riff/queued-frames").QueuedVideoSample, maxFramesInBuffer: number) => void;
|
|
21
|
+
flush: () => void;
|
|
22
|
+
getReleasedFrame: () => import("./riff/queued-frames").QueuedVideoSample | null;
|
|
23
|
+
hasReleasedFrames: () => boolean;
|
|
24
|
+
clear: () => void;
|
|
25
|
+
};
|
|
19
26
|
incrementNextTrackIndex: () => void;
|
|
20
27
|
lazyIdx1: {
|
|
21
28
|
triggerLoad: (position: number) => Promise<{
|
|
@@ -38,14 +45,24 @@ export declare const riffSpecificState: ({ controller, logLevel, readerInterface
|
|
|
38
45
|
};
|
|
39
46
|
sampleCounter: {
|
|
40
47
|
onAudioSample: (trackId: number, audioSample: import("..").MediaParserAudioSample) => void;
|
|
41
|
-
onVideoSample: (
|
|
42
|
-
|
|
48
|
+
onVideoSample: (videoSample: import("..").MediaParserVideoSample) => void;
|
|
49
|
+
getSampleCountForTrack: ({ trackId }: {
|
|
50
|
+
trackId: number;
|
|
51
|
+
}) => number;
|
|
43
52
|
setSamplesFromSeek: (samples: Record<number, number>) => void;
|
|
44
53
|
riffKeys: {
|
|
45
54
|
addKeyframe: (keyframe: import("./riff/riff-keyframes").RiffKeyframe) => void;
|
|
46
55
|
getKeyframes: () => import("./riff/riff-keyframes").RiffKeyframe[];
|
|
47
56
|
setFromSeekingHints: (keyframesFromHints: import("./riff/riff-keyframes").RiffKeyframe[]) => void;
|
|
48
57
|
};
|
|
58
|
+
setPocAtKeyframeOffset: ({ keyframeOffset, poc, }: {
|
|
59
|
+
keyframeOffset: number;
|
|
60
|
+
poc: number;
|
|
61
|
+
}) => void;
|
|
62
|
+
getPocAtKeyframeOffset: ({ keyframeOffset, }: {
|
|
63
|
+
keyframeOffset: number;
|
|
64
|
+
}) => number[];
|
|
65
|
+
getKeyframeAtOffset: (sample: import("./riff/queued-frames").QueuedVideoSample) => number | null;
|
|
49
66
|
};
|
|
50
67
|
};
|
|
51
68
|
export type RiffState = ReturnType<typeof riffSpecificState>;
|
package/dist/state/riff.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.riffSpecificState = void 0;
|
|
4
4
|
const lazy_idx1_fetch_1 = require("./riff/lazy-idx1-fetch");
|
|
5
|
+
const queued_frames_1 = require("./riff/queued-frames");
|
|
5
6
|
const sample_counter_1 = require("./riff/sample-counter");
|
|
6
7
|
const riffSpecificState = ({ controller, logLevel, readerInterface, src, prefetchCache, }) => {
|
|
7
8
|
let avcProfile = null;
|
|
@@ -25,6 +26,7 @@ const riffSpecificState = ({ controller, logLevel, readerInterface, src, prefetc
|
|
|
25
26
|
prefetchCache,
|
|
26
27
|
});
|
|
27
28
|
const sampleCounter = (0, sample_counter_1.riffSampleCounter)();
|
|
29
|
+
const queuedBFrames = (0, queued_frames_1.queuedBFramesState)();
|
|
28
30
|
return {
|
|
29
31
|
getAvcProfile: () => {
|
|
30
32
|
return avcProfile;
|
|
@@ -34,6 +36,7 @@ const riffSpecificState = ({ controller, logLevel, readerInterface, src, prefetc
|
|
|
34
36
|
getNextTrackIndex: () => {
|
|
35
37
|
return nextTrackIndex;
|
|
36
38
|
},
|
|
39
|
+
queuedBFrames,
|
|
37
40
|
incrementNextTrackIndex: () => {
|
|
38
41
|
nextTrackIndex++;
|
|
39
42
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MediaParserAudioSample, MediaParserVideoSample } from '../../webcodec-sample-types';
|
|
2
2
|
export declare const lastEmittedSampleState: () => {
|
|
3
3
|
setLastEmittedSample: (sample: MediaParserAudioSample | MediaParserVideoSample) => void;
|
|
4
|
-
getLastEmittedSample: () =>
|
|
4
|
+
getLastEmittedSample: () => MediaParserVideoSample | MediaParserAudioSample | null;
|
|
5
5
|
resetLastEmittedSample: () => void;
|
|
6
6
|
};
|
|
@@ -22,7 +22,7 @@ export declare const transportStreamState: () => {
|
|
|
22
22
|
resetBeforeSeek: () => void;
|
|
23
23
|
lastEmittedSample: {
|
|
24
24
|
setLastEmittedSample: (sample: import("../..").MediaParserAudioSample | import("../..").MediaParserVideoSample) => void;
|
|
25
|
-
getLastEmittedSample: () => import("../..").
|
|
25
|
+
getLastEmittedSample: () => import("../..").MediaParserVideoSample | import("../..").MediaParserAudioSample | null;
|
|
26
26
|
resetLastEmittedSample: () => void;
|
|
27
27
|
};
|
|
28
28
|
};
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.303";
|
package/dist/version.js
CHANGED
|
@@ -23,6 +23,16 @@ export type MediaParserAudioSample = {
|
|
|
23
23
|
offset: number;
|
|
24
24
|
timescale: number;
|
|
25
25
|
};
|
|
26
|
+
export type MediaParserAvcKeyframeInfo = {
|
|
27
|
+
type: 'keyframe';
|
|
28
|
+
poc: number | null;
|
|
29
|
+
};
|
|
30
|
+
export type MediaParserAvcDeltaFrameInfo = {
|
|
31
|
+
type: 'delta-frame';
|
|
32
|
+
isBidirectionalFrame: boolean;
|
|
33
|
+
poc: number | null;
|
|
34
|
+
};
|
|
35
|
+
export type MediaParserAvcExtraInfo = MediaParserAvcKeyframeInfo | MediaParserAvcDeltaFrameInfo;
|
|
26
36
|
export type MediaParserVideoSample = {
|
|
27
37
|
data: Uint8Array;
|
|
28
38
|
timestamp: number;
|
|
@@ -33,4 +43,5 @@ export type MediaParserVideoSample = {
|
|
|
33
43
|
dts: number;
|
|
34
44
|
offset: number;
|
|
35
45
|
timescale: number;
|
|
46
|
+
avc?: MediaParserAvcExtraInfo;
|
|
36
47
|
};
|
|
@@ -6,6 +6,7 @@ import type { MediaParserLogLevel } from './log';
|
|
|
6
6
|
import type { M3uPlaylistContext, ParseMediaMode, ParseMediaSrc } from './options';
|
|
7
7
|
import type { MediaParserReaderInterface } from './readers/reader';
|
|
8
8
|
import type { AacState } from './state/aac-state';
|
|
9
|
+
import type { AvcState } from './state/avc/avc-state';
|
|
9
10
|
import type { CurrentReader } from './state/current-reader';
|
|
10
11
|
import type { FlacState } from './state/flac-state';
|
|
11
12
|
import type { TracksState } from './state/has-tracks-section';
|
|
@@ -48,6 +49,7 @@ export type WorkOnSeekRequestOptions = {
|
|
|
48
49
|
aacState: AacState;
|
|
49
50
|
m3uState: M3uState;
|
|
50
51
|
prefetchCache: PrefetchCache;
|
|
52
|
+
avcState: AvcState;
|
|
51
53
|
};
|
|
52
54
|
export declare const getWorkOnSeekRequestOptions: (state: ParserState) => WorkOnSeekRequestOptions;
|
|
53
55
|
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, m3uPlaylistContext, isoState, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, contentLength, aacState, m3uState, }) => {
|
|
8
|
+
const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, m3uPlaylistContext, isoState, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, contentLength, aacState, m3uState, avcState, }) => {
|
|
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');
|
|
@@ -51,6 +51,7 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
|
|
|
51
51
|
structure: structureState,
|
|
52
52
|
riffState,
|
|
53
53
|
m3uState,
|
|
54
|
+
avcState,
|
|
54
55
|
});
|
|
55
56
|
return seekingByte;
|
|
56
57
|
};
|
|
@@ -82,11 +83,12 @@ const getWorkOnSeekRequestOptions = (state) => {
|
|
|
82
83
|
aacState: state.aac,
|
|
83
84
|
m3uState: state.m3u,
|
|
84
85
|
prefetchCache: state.prefetchCache,
|
|
86
|
+
avcState: state.avc,
|
|
85
87
|
};
|
|
86
88
|
};
|
|
87
89
|
exports.getWorkOnSeekRequestOptions = getWorkOnSeekRequestOptions;
|
|
88
90
|
const workOnSeekRequest = async (options) => {
|
|
89
|
-
const { logLevel, controller, mediaSection, m3uPlaylistContext, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, aacState, prefetchCache, m3uState, } = options;
|
|
91
|
+
const { logLevel, controller, mediaSection, m3uPlaylistContext, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, aacState, prefetchCache, m3uState, avcState, } = options;
|
|
90
92
|
const seek = controller._internals.seekSignal.getSeek();
|
|
91
93
|
if (seek === null) {
|
|
92
94
|
return;
|
|
@@ -111,6 +113,7 @@ const workOnSeekRequest = async (options) => {
|
|
|
111
113
|
contentLength,
|
|
112
114
|
aacState,
|
|
113
115
|
m3uState,
|
|
116
|
+
avcState,
|
|
114
117
|
});
|
|
115
118
|
log_1.Log.trace(logLevel, `Seek action: ${JSON.stringify(resolution)}`);
|
|
116
119
|
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.
|
|
6
|
+
"version": "4.0.303",
|
|
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.
|
|
14
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
13
|
+
"@remotion/example-videos": "4.0.303",
|
|
14
|
+
"@remotion/eslint-config-internal": "4.0.303"
|
|
15
15
|
},
|
|
16
16
|
"publishConfig": {
|
|
17
17
|
"access": "public"
|