@remotion/media-parser 4.0.249 → 4.0.250
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/boxes/iso-base-media/continue-mdat-routine.d.ts +14 -0
- package/dist/boxes/iso-base-media/continue-mdat-routine.js +74 -0
- package/dist/boxes/iso-base-media/get-children.d.ts +2 -8
- package/dist/boxes/iso-base-media/get-children.js +14 -30
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +3 -23
- package/dist/boxes/iso-base-media/mdat/mdat.js +80 -130
- package/dist/boxes/iso-base-media/moov/moov.d.ts +1 -6
- package/dist/boxes/iso-base-media/moov/moov.js +5 -14
- package/dist/boxes/iso-base-media/parse-all-children.d.ts +8 -0
- package/dist/boxes/iso-base-media/parse-all-children.js +20 -0
- package/dist/boxes/iso-base-media/parse-boxes.d.ts +2 -10
- package/dist/boxes/iso-base-media/parse-boxes.js +33 -116
- package/dist/boxes/iso-base-media/parse-mdat-partially.d.ts +1 -4
- package/dist/boxes/iso-base-media/parse-mdat-partially.js +2 -11
- package/dist/boxes/iso-base-media/process-box.d.ts +1 -9
- package/dist/boxes/iso-base-media/process-box.js +49 -143
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +1 -4
- package/dist/boxes/iso-base-media/stsd/mebx.js +5 -14
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +4 -12
- package/dist/boxes/iso-base-media/stsd/samples.js +24 -66
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +1 -4
- package/dist/boxes/iso-base-media/stsd/stsd.js +2 -5
- package/dist/boxes/iso-base-media/trak/trak.d.ts +1 -6
- package/dist/boxes/iso-base-media/trak/trak.js +5 -14
- package/dist/boxes/iso-base-media/traversal.d.ts +0 -2
- package/dist/boxes/iso-base-media/traversal.js +1 -12
- package/dist/boxes/mp3/id3.d.ts +1 -3
- package/dist/boxes/mp3/id3.js +7 -5
- package/dist/boxes/mp3/parse-mp3.d.ts +2 -3
- package/dist/boxes/mp3/parse-mp3.js +3 -19
- package/dist/boxes/riff/expect-riff-box.d.ts +1 -9
- package/dist/boxes/riff/expect-riff-box.js +47 -25
- package/dist/boxes/riff/get-tracks-from-avi.d.ts +1 -1
- package/dist/boxes/riff/get-tracks-from-avi.js +6 -10
- package/dist/boxes/riff/parse-fmt-box.d.ts +3 -2
- package/dist/boxes/riff/parse-fmt-box.js +7 -5
- package/dist/boxes/riff/parse-list-box.d.ts +1 -3
- package/dist/boxes/riff/parse-list-box.js +16 -16
- package/dist/boxes/riff/parse-movi.d.ts +2 -5
- package/dist/boxes/riff/parse-movi.js +34 -56
- package/dist/boxes/riff/parse-riff-body.d.ts +2 -6
- package/dist/boxes/riff/parse-riff-body.js +15 -95
- package/dist/boxes/riff/parse-riff-box.d.ts +1 -4
- package/dist/boxes/riff/parse-riff-box.js +3 -7
- package/dist/boxes/riff/parse-riff-header.d.ts +7 -0
- package/dist/boxes/riff/parse-riff-header.js +23 -0
- package/dist/boxes/riff/parse-riff.d.ts +7 -0
- package/dist/boxes/riff/parse-riff.js +15 -0
- package/dist/boxes/riff/parse-strf.d.ts +4 -4
- package/dist/boxes/riff/parse-strf.js +4 -8
- package/dist/boxes/riff/parse-strh.js +11 -0
- package/dist/boxes/riff/parse-video-section.d.ts +6 -0
- package/dist/boxes/riff/parse-video-section.js +20 -0
- package/dist/boxes/riff/riff-box.d.ts +4 -5
- package/dist/boxes/riff/traversal.d.ts +1 -2
- package/dist/boxes/riff/traversal.js +1 -6
- package/dist/boxes/transport-stream/get-tracks.d.ts +2 -3
- package/dist/boxes/transport-stream/get-tracks.js +4 -3
- package/dist/boxes/transport-stream/parse-packet.d.ts +1 -7
- package/dist/boxes/transport-stream/parse-packet.js +3 -4
- package/dist/boxes/transport-stream/parse-stream-packet.d.ts +1 -5
- package/dist/boxes/transport-stream/parse-stream-packet.js +10 -12
- package/dist/boxes/transport-stream/parse-transport-stream.d.ts +1 -7
- package/dist/boxes/transport-stream/parse-transport-stream.js +7 -26
- package/dist/boxes/transport-stream/process-stream-buffers.d.ts +1 -2
- package/dist/boxes/transport-stream/process-stream-buffers.js +3 -3
- package/dist/boxes/webm/parse-ebml.js +3 -0
- package/dist/boxes/webm/parse-webm-header.d.ts +2 -4
- package/dist/boxes/webm/parse-webm-header.js +41 -25
- package/dist/boxes/webm/segments/parse-children.d.ts +2 -16
- package/dist/boxes/webm/segments/parse-children.js +7 -130
- package/dist/boxes/webm/segments.d.ts +4 -8
- package/dist/boxes/webm/segments.js +41 -123
- package/dist/buffer-iterator.d.ts +0 -3
- package/dist/buffer-iterator.js +6 -16
- package/dist/bun-reader.d.ts +1 -0
- package/dist/bun-reader.js +17 -0
- package/dist/emit-available-info.js +4 -4
- package/dist/esm/from-node.mjs +8 -9
- package/dist/esm/index.mjs +4224 -4950
- package/dist/file-types/detect-file-type.js +4 -2
- package/dist/get-audio-codec.d.ts +1 -1
- package/dist/get-audio-codec.js +2 -2
- package/dist/get-dimensions.js +1 -1
- package/dist/get-duration.js +1 -1
- package/dist/get-is-hdr.d.ts +1 -1
- package/dist/get-is-hdr.js +2 -2
- package/dist/get-tracks.d.ts +1 -1
- package/dist/get-tracks.js +14 -13
- package/dist/get-video-codec.d.ts +1 -1
- package/dist/get-video-codec.js +2 -2
- package/dist/index.d.ts +50 -24
- package/dist/index.js +1 -1
- package/dist/may-skip-video-data/may-skip-video-data.js +6 -2
- package/dist/parse-media.js +45 -30
- package/dist/parse-result.d.ts +1 -18
- package/dist/parse-video.d.ts +3 -17
- package/dist/parse-video.js +45 -32
- package/dist/readers/from-node.js +7 -8
- package/dist/state/can-skip-tracks.d.ts +8 -1
- package/dist/state/can-skip-tracks.js +38 -27
- package/dist/state/iso-base-media/cached-sample-positions.d.ts +15 -0
- package/dist/state/iso-base-media/cached-sample-positions.js +42 -0
- package/dist/state/iso-base-media/iso-state.d.ts +8 -0
- package/dist/state/iso-base-media/iso-state.js +15 -0
- package/dist/state/iso-state.d.ts +4 -0
- package/dist/state/iso-state.js +13 -0
- package/dist/state/parser-state.d.ts +49 -14
- package/dist/state/parser-state.js +11 -3
- package/dist/state/sample-callbacks.d.ts +5 -1
- package/dist/state/sample-callbacks.js +4 -1
- package/dist/state/transport-stream.d.ts +8 -0
- package/dist/state/transport-stream.js +11 -0
- package/dist/state/video-section.d.ts +16 -0
- package/dist/state/video-section.js +37 -0
- package/dist/state/webm.d.ts +15 -0
- package/dist/state/webm.js +32 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/test.json +663 -0
|
@@ -1,129 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const has_all_info_1 = require("../../has-all-info");
|
|
6
|
-
const may_skip_video_data_1 = require("../../may-skip-video-data/may-skip-video-data");
|
|
3
|
+
exports.parseIsoBaseMedia = void 0;
|
|
4
|
+
const mdat_1 = require("./mdat/mdat");
|
|
7
5
|
const process_box_1 = require("./process-box");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const continueParsing = () => {
|
|
13
|
-
return (0, exports.parseIsoBaseMediaBoxes)({
|
|
6
|
+
const parseIsoBaseMedia = async ({ iterator, state, }) => {
|
|
7
|
+
const videoSectionState = state.videoSection.isInVideoSectionState(iterator);
|
|
8
|
+
if (videoSectionState === 'in-section') {
|
|
9
|
+
const skipTo = await (0, mdat_1.parseMdatSection)({
|
|
14
10
|
iterator,
|
|
15
|
-
maxBytes,
|
|
16
|
-
allowIncompleteBoxes,
|
|
17
|
-
initialBoxes,
|
|
18
11
|
state,
|
|
19
|
-
signal,
|
|
20
|
-
logLevel,
|
|
21
|
-
fields,
|
|
22
12
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
if (result.type === 'partial-mdat-box') {
|
|
48
|
-
return {
|
|
49
|
-
status: 'incomplete',
|
|
50
|
-
continueParsing: () => {
|
|
51
|
-
return Promise.resolve((0, continue_mdat_routine_1.continueMdatRoutine)({
|
|
52
|
-
iterator,
|
|
53
|
-
maxBytes,
|
|
54
|
-
allowIncompleteBoxes,
|
|
55
|
-
initialBoxes,
|
|
56
|
-
state,
|
|
57
|
-
continueMdat: result,
|
|
58
|
-
signal,
|
|
59
|
-
logLevel,
|
|
60
|
-
fields,
|
|
61
|
-
}));
|
|
62
|
-
},
|
|
63
|
-
skipTo: null,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
if (result.box.type === 'mdat-box' && alreadyHasMdat) {
|
|
67
|
-
initialBoxes = initialBoxes.filter((b) => b.type !== 'mdat-box');
|
|
68
|
-
initialBoxes.push(result.box);
|
|
69
|
-
iterator.allowDiscard();
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
initialBoxes.push(result.box);
|
|
74
|
-
if ((0, has_all_info_1.hasAllInfo)({ fields, state })) {
|
|
75
|
-
return {
|
|
76
|
-
status: 'done',
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (result.skipTo !== null) {
|
|
81
|
-
if (!state.supportsContentRange) {
|
|
82
|
-
throw new Error('Content-Range header is not supported by the reader, but was asked to seek');
|
|
83
|
-
}
|
|
84
|
-
return {
|
|
85
|
-
status: 'incomplete',
|
|
86
|
-
continueParsing,
|
|
87
|
-
skipTo: result.skipTo,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
if (iterator.bytesRemaining() < 0) {
|
|
91
|
-
return {
|
|
92
|
-
status: 'incomplete',
|
|
93
|
-
continueParsing,
|
|
94
|
-
skipTo: null,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
iterator.removeBytesRead();
|
|
13
|
+
return {
|
|
14
|
+
skipTo,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const result = await (0, process_box_1.processBox)({
|
|
18
|
+
iterator,
|
|
19
|
+
state,
|
|
20
|
+
});
|
|
21
|
+
if (result.box) {
|
|
22
|
+
state.structure.getStructure().boxes.push(result.box);
|
|
23
|
+
}
|
|
24
|
+
if (iterator.counter.getOffset() === state.contentLength &&
|
|
25
|
+
state.iso.getShouldReturnToVideoSectionAfterEnd()) {
|
|
26
|
+
state.iso.setShouldReturnToVideoSectionAfterEnd(false);
|
|
27
|
+
return {
|
|
28
|
+
skipTo: state.videoSection.getVideoSection().start,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (result.skipTo !== null) {
|
|
32
|
+
return {
|
|
33
|
+
skipTo: result.skipTo,
|
|
34
|
+
};
|
|
98
35
|
}
|
|
99
|
-
|
|
100
|
-
const skipped = (mdatState === null || mdatState === void 0 ? void 0 : mdatState.status) === 'samples-skipped' &&
|
|
101
|
-
!(0, may_skip_video_data_1.maySkipVideoData)({ state }) &&
|
|
102
|
-
state.supportsContentRange;
|
|
103
|
-
const buffered = (mdatState === null || mdatState === void 0 ? void 0 : mdatState.status) === 'samples-buffered' && !(0, may_skip_video_data_1.maySkipVideoData)({ state });
|
|
104
|
-
if (skipped || buffered) {
|
|
36
|
+
if (iterator.bytesRemaining() < 0) {
|
|
105
37
|
return {
|
|
106
|
-
|
|
107
|
-
continueParsing: () => {
|
|
108
|
-
if (buffered) {
|
|
109
|
-
iterator.skipTo(mdatState.fileOffset, false);
|
|
110
|
-
}
|
|
111
|
-
return (0, exports.parseIsoBaseMediaBoxes)({
|
|
112
|
-
iterator,
|
|
113
|
-
maxBytes,
|
|
114
|
-
allowIncompleteBoxes: false,
|
|
115
|
-
initialBoxes,
|
|
116
|
-
state,
|
|
117
|
-
signal,
|
|
118
|
-
logLevel,
|
|
119
|
-
fields,
|
|
120
|
-
});
|
|
121
|
-
},
|
|
122
|
-
skipTo: skipped ? mdatState.fileOffset : null,
|
|
38
|
+
skipTo: null,
|
|
123
39
|
};
|
|
124
40
|
}
|
|
41
|
+
iterator.removeBytesRead();
|
|
125
42
|
return {
|
|
126
|
-
|
|
43
|
+
skipTo: null,
|
|
127
44
|
};
|
|
128
45
|
};
|
|
129
|
-
exports.
|
|
46
|
+
exports.parseIsoBaseMedia = parseIsoBaseMedia;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import type { BufferIterator } from '../../buffer-iterator';
|
|
2
|
-
import type { IsoBaseMediaBox } from '../../parse-result';
|
|
3
2
|
import type { BoxAndNext } from '../../parse-video';
|
|
4
3
|
import type { ParserState } from '../../state/parser-state';
|
|
5
|
-
export declare const parseMdatPartially: ({ iterator, boxSize, fileOffset,
|
|
4
|
+
export declare const parseMdatPartially: ({ iterator, boxSize, fileOffset, state, }: {
|
|
6
5
|
iterator: BufferIterator;
|
|
7
6
|
boxSize: number;
|
|
8
7
|
fileOffset: number;
|
|
9
|
-
parsedBoxes: IsoBaseMediaBox[];
|
|
10
8
|
state: ParserState;
|
|
11
|
-
signal: AbortSignal | null;
|
|
12
9
|
}) => Promise<BoxAndNext>;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseMdatPartially = void 0;
|
|
4
4
|
const mdat_1 = require("./mdat/mdat");
|
|
5
|
-
const parseMdatPartially = async ({ iterator, boxSize, fileOffset,
|
|
6
|
-
const box = await (0, mdat_1.
|
|
5
|
+
const parseMdatPartially = async ({ iterator, boxSize, fileOffset, state, }) => {
|
|
6
|
+
const box = await (0, mdat_1.parseMdatSection)({
|
|
7
7
|
data: iterator,
|
|
8
8
|
size: boxSize,
|
|
9
9
|
fileOffset,
|
|
@@ -15,15 +15,6 @@ const parseMdatPartially = async ({ iterator, boxSize, fileOffset, parsedBoxes,
|
|
|
15
15
|
if (box.type === 'partial-mdat-box') {
|
|
16
16
|
return box;
|
|
17
17
|
}
|
|
18
|
-
if ((box.status === 'samples-processed' || box.status === 'samples-buffered') &&
|
|
19
|
-
box.fileOffset + boxSize === iterator.counter.getOffset()) {
|
|
20
|
-
return {
|
|
21
|
-
type: 'complete',
|
|
22
|
-
box,
|
|
23
|
-
size: boxSize,
|
|
24
|
-
skipTo: null,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
18
|
return {
|
|
28
19
|
type: 'partial-mdat-box',
|
|
29
20
|
boxSize,
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
import type { BufferIterator } from '../../buffer-iterator';
|
|
2
|
-
import type { LogLevel } from '../../log';
|
|
3
|
-
import type { Options, ParseMediaFields } from '../../options';
|
|
4
|
-
import type { IsoBaseMediaBox } from '../../parse-result';
|
|
5
2
|
import type { BoxAndNext } from '../../parse-video';
|
|
6
3
|
import type { ParserState } from '../../state/parser-state';
|
|
7
|
-
export declare const processBox: ({ iterator,
|
|
4
|
+
export declare const processBox: ({ iterator, state, }: {
|
|
8
5
|
iterator: BufferIterator;
|
|
9
|
-
allowIncompleteBoxes: boolean;
|
|
10
|
-
parsedBoxes: IsoBaseMediaBox[];
|
|
11
6
|
state: ParserState;
|
|
12
|
-
signal: AbortSignal | null;
|
|
13
|
-
logLevel: LogLevel;
|
|
14
|
-
fields: Options<ParseMediaFields>;
|
|
15
7
|
}) => Promise<BoxAndNext>;
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.processBox = void 0;
|
|
4
|
-
const
|
|
5
|
-
const may_skip_video_data_1 = require("../../may-skip-video-data/may-skip-video-data");
|
|
4
|
+
const log_1 = require("../../log");
|
|
6
5
|
const register_track_1 = require("../../register-track");
|
|
7
6
|
const esds_1 = require("./esds/esds");
|
|
8
7
|
const ftyp_1 = require("./ftyp");
|
|
9
8
|
const get_children_1 = require("./get-children");
|
|
10
9
|
const make_track_1 = require("./make-track");
|
|
11
|
-
const mdat_1 = require("./mdat/mdat");
|
|
12
10
|
const mdhd_1 = require("./mdhd");
|
|
13
11
|
const hdlr_1 = require("./meta/hdlr");
|
|
14
12
|
const ilst_1 = require("./meta/ilst");
|
|
15
13
|
const moov_1 = require("./moov/moov");
|
|
16
14
|
const mvhd_1 = require("./mvhd");
|
|
17
|
-
const parse_mdat_partially_1 = require("./parse-mdat-partially");
|
|
18
15
|
const av1c_1 = require("./stsd/av1c");
|
|
19
16
|
const avcc_1 = require("./stsd/avcc");
|
|
20
17
|
const colr_1 = require("./stsd/colr");
|
|
@@ -34,18 +31,17 @@ const tfhd_1 = require("./tfhd");
|
|
|
34
31
|
const tkhd_1 = require("./tkhd");
|
|
35
32
|
const trak_1 = require("./trak/trak");
|
|
36
33
|
const trun_1 = require("./trun");
|
|
37
|
-
const processBox = async ({ iterator,
|
|
34
|
+
const processBox = async ({ iterator, state, }) => {
|
|
38
35
|
const fileOffset = iterator.counter.getOffset();
|
|
36
|
+
const { returnToCheckpoint } = iterator.startCheckpoint();
|
|
39
37
|
const bytesRemaining = iterator.bytesRemaining();
|
|
40
38
|
const boxSizeRaw = iterator.getFourByteNumber();
|
|
41
39
|
if (boxSizeRaw === 0) {
|
|
42
40
|
return {
|
|
43
|
-
type: 'complete',
|
|
44
41
|
box: {
|
|
45
42
|
type: 'void-box',
|
|
46
43
|
boxSize: 0,
|
|
47
44
|
},
|
|
48
|
-
size: 4,
|
|
49
45
|
skipTo: null,
|
|
50
46
|
};
|
|
51
47
|
}
|
|
@@ -53,64 +49,32 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
53
49
|
if ((boxSizeRaw === 1 && iterator.bytesRemaining() < 12) ||
|
|
54
50
|
iterator.bytesRemaining() < 4) {
|
|
55
51
|
iterator.counter.decrement(iterator.counter.getOffset() - fileOffset);
|
|
56
|
-
|
|
57
|
-
throw new Error(`Expected box size of ${bytesRemaining}, got ${boxSizeRaw}. Incomplete boxes are not allowed.`);
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
type: 'incomplete',
|
|
61
|
-
};
|
|
52
|
+
throw new Error(`Expected box size of ${bytesRemaining}, got ${boxSizeRaw}. Incomplete boxes are not allowed.`);
|
|
62
53
|
}
|
|
63
54
|
const boxType = iterator.getByteString(4, false);
|
|
64
55
|
const boxSize = boxSizeRaw === 1 ? iterator.getEightByteNumber() : boxSizeRaw;
|
|
56
|
+
log_1.Log.trace(state.logLevel, 'Found box', boxType, boxSize);
|
|
57
|
+
if (boxType === 'mdat') {
|
|
58
|
+
state.videoSection.setVideoSection({
|
|
59
|
+
size: boxSize - 8,
|
|
60
|
+
start: iterator.counter.getOffset(),
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
box: null,
|
|
64
|
+
skipTo: null,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
65
67
|
if (bytesRemaining < boxSize) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return {
|
|
72
|
-
type: 'incomplete',
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
// Check if the moov atom is at the end
|
|
76
|
-
const shouldSkip = (0, may_skip_video_data_1.maySkipVideoData)({ state }) ||
|
|
77
|
-
(!(0, get_tracks_1.getHasTracks)({ type: 'iso-base-media', boxes: parsedBoxes }, state) &&
|
|
78
|
-
state.supportsContentRange);
|
|
79
|
-
if (shouldSkip) {
|
|
80
|
-
const skipTo = fileOffset + boxSize;
|
|
81
|
-
const bytesToSkip = skipTo - iterator.counter.getOffset();
|
|
82
|
-
// If there is a huge mdat chunk, we can skip it because we don't need it for the metadata
|
|
83
|
-
if (bytesToSkip > 1000000) {
|
|
84
|
-
return {
|
|
85
|
-
type: 'complete',
|
|
86
|
-
box: {
|
|
87
|
-
type: 'mdat-box',
|
|
88
|
-
boxSize,
|
|
89
|
-
fileOffset,
|
|
90
|
-
status: 'samples-skipped',
|
|
91
|
-
},
|
|
92
|
-
size: boxSize,
|
|
93
|
-
skipTo: fileOffset + boxSize,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
return (0, parse_mdat_partially_1.parseMdatPartially)({
|
|
99
|
-
iterator,
|
|
100
|
-
boxSize,
|
|
101
|
-
fileOffset,
|
|
102
|
-
parsedBoxes,
|
|
103
|
-
state,
|
|
104
|
-
signal,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
68
|
+
returnToCheckpoint();
|
|
69
|
+
return {
|
|
70
|
+
box: null,
|
|
71
|
+
skipTo: null,
|
|
72
|
+
};
|
|
107
73
|
}
|
|
108
74
|
if (boxType === 'ftyp') {
|
|
109
75
|
const box = (0, ftyp_1.parseFtyp)({ iterator, size: boxSize, offset: fileOffset });
|
|
110
76
|
return {
|
|
111
|
-
type: 'complete',
|
|
112
77
|
box,
|
|
113
|
-
size: boxSize,
|
|
114
78
|
skipTo: null,
|
|
115
79
|
};
|
|
116
80
|
}
|
|
@@ -120,45 +84,35 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
120
84
|
size: boxSize,
|
|
121
85
|
});
|
|
122
86
|
return {
|
|
123
|
-
type: 'complete',
|
|
124
87
|
box,
|
|
125
|
-
size: boxSize,
|
|
126
88
|
skipTo: null,
|
|
127
89
|
};
|
|
128
90
|
}
|
|
129
91
|
if (boxType === 'mvhd') {
|
|
130
92
|
const box = (0, mvhd_1.parseMvhd)({ iterator, offset: fileOffset, size: boxSize });
|
|
131
93
|
return {
|
|
132
|
-
type: 'complete',
|
|
133
94
|
box,
|
|
134
|
-
size: boxSize,
|
|
135
95
|
skipTo: null,
|
|
136
96
|
};
|
|
137
97
|
}
|
|
138
98
|
if (boxType === 'tkhd') {
|
|
139
99
|
const box = (0, tkhd_1.parseTkhd)({ iterator, offset: fileOffset, size: boxSize });
|
|
140
100
|
return {
|
|
141
|
-
type: 'complete',
|
|
142
101
|
box,
|
|
143
|
-
size: boxSize,
|
|
144
102
|
skipTo: null,
|
|
145
103
|
};
|
|
146
104
|
}
|
|
147
105
|
if (boxType === 'trun') {
|
|
148
106
|
const box = (0, trun_1.parseTrun)({ iterator, offset: fileOffset, size: boxSize });
|
|
149
107
|
return {
|
|
150
|
-
type: 'complete',
|
|
151
108
|
box,
|
|
152
|
-
size: boxSize,
|
|
153
109
|
skipTo: null,
|
|
154
110
|
};
|
|
155
111
|
}
|
|
156
112
|
if (boxType === 'tfdt') {
|
|
157
113
|
const box = (0, tfdt_1.parseTfdt)({ iterator, size: boxSize, offset: fileOffset });
|
|
158
114
|
return {
|
|
159
|
-
type: 'complete',
|
|
160
115
|
box,
|
|
161
|
-
size: boxSize,
|
|
162
116
|
skipTo: null,
|
|
163
117
|
};
|
|
164
118
|
}
|
|
@@ -168,13 +122,9 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
168
122
|
offset: fileOffset,
|
|
169
123
|
size: boxSize,
|
|
170
124
|
state,
|
|
171
|
-
signal,
|
|
172
|
-
fields,
|
|
173
125
|
});
|
|
174
126
|
return {
|
|
175
|
-
type: 'complete',
|
|
176
127
|
box,
|
|
177
|
-
size: boxSize,
|
|
178
128
|
skipTo: null,
|
|
179
129
|
};
|
|
180
130
|
}
|
|
@@ -185,9 +135,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
185
135
|
size: boxSize,
|
|
186
136
|
});
|
|
187
137
|
return {
|
|
188
|
-
type: 'complete',
|
|
189
138
|
box,
|
|
190
|
-
size: boxSize,
|
|
191
139
|
skipTo: null,
|
|
192
140
|
};
|
|
193
141
|
}
|
|
@@ -199,9 +147,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
199
147
|
mode64Bit: boxType === 'co64',
|
|
200
148
|
});
|
|
201
149
|
return {
|
|
202
|
-
type: 'complete',
|
|
203
150
|
box,
|
|
204
|
-
size: boxSize,
|
|
205
151
|
skipTo: null,
|
|
206
152
|
};
|
|
207
153
|
}
|
|
@@ -212,9 +158,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
212
158
|
size: boxSize,
|
|
213
159
|
});
|
|
214
160
|
return {
|
|
215
|
-
type: 'complete',
|
|
216
161
|
box,
|
|
217
|
-
size: boxSize,
|
|
218
162
|
skipTo: null,
|
|
219
163
|
};
|
|
220
164
|
}
|
|
@@ -225,9 +169,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
225
169
|
boxSize,
|
|
226
170
|
});
|
|
227
171
|
return {
|
|
228
|
-
type: 'complete',
|
|
229
172
|
box,
|
|
230
|
-
size: boxSize,
|
|
231
173
|
skipTo: null,
|
|
232
174
|
};
|
|
233
175
|
}
|
|
@@ -238,9 +180,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
238
180
|
size: boxSize,
|
|
239
181
|
});
|
|
240
182
|
return {
|
|
241
|
-
type: 'complete',
|
|
242
183
|
box,
|
|
243
|
-
size: boxSize,
|
|
244
184
|
skipTo: null,
|
|
245
185
|
};
|
|
246
186
|
}
|
|
@@ -251,9 +191,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
251
191
|
size: boxSize,
|
|
252
192
|
});
|
|
253
193
|
return {
|
|
254
|
-
type: 'complete',
|
|
255
194
|
box,
|
|
256
|
-
size: boxSize,
|
|
257
195
|
skipTo: null,
|
|
258
196
|
};
|
|
259
197
|
}
|
|
@@ -263,31 +201,23 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
263
201
|
offset: fileOffset,
|
|
264
202
|
size: boxSize,
|
|
265
203
|
state,
|
|
266
|
-
signal,
|
|
267
|
-
fields,
|
|
268
204
|
});
|
|
269
205
|
return {
|
|
270
|
-
type: 'complete',
|
|
271
206
|
box,
|
|
272
|
-
size: boxSize,
|
|
273
207
|
skipTo: null,
|
|
274
208
|
};
|
|
275
209
|
}
|
|
276
210
|
if (boxType === 'hdlr') {
|
|
277
211
|
const box = await (0, hdlr_1.parseHdlr)({ iterator, size: boxSize, offset: fileOffset });
|
|
278
212
|
return {
|
|
279
|
-
type: 'complete',
|
|
280
213
|
box,
|
|
281
|
-
size: boxSize,
|
|
282
214
|
skipTo: null,
|
|
283
215
|
};
|
|
284
216
|
}
|
|
285
217
|
if (boxType === 'keys') {
|
|
286
218
|
const box = (0, keys_1.parseKeys)({ iterator, size: boxSize, offset: fileOffset });
|
|
287
219
|
return {
|
|
288
|
-
type: 'complete',
|
|
289
220
|
box,
|
|
290
|
-
size: boxSize,
|
|
291
221
|
skipTo: null,
|
|
292
222
|
};
|
|
293
223
|
}
|
|
@@ -298,27 +228,27 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
298
228
|
size: boxSize,
|
|
299
229
|
});
|
|
300
230
|
return {
|
|
301
|
-
type: 'complete',
|
|
302
231
|
box,
|
|
303
|
-
size: boxSize,
|
|
304
232
|
skipTo: null,
|
|
305
233
|
};
|
|
306
234
|
}
|
|
307
235
|
if (boxType === 'moov') {
|
|
236
|
+
if (state.callbacks.tracks.hasAllTracks()) {
|
|
237
|
+
iterator.discard(boxSize - 8);
|
|
238
|
+
return {
|
|
239
|
+
box: null,
|
|
240
|
+
skipTo: null,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
308
243
|
const box = await (0, moov_1.parseMoov)({
|
|
309
244
|
iterator,
|
|
310
245
|
offset: fileOffset,
|
|
311
246
|
size: boxSize,
|
|
312
247
|
state,
|
|
313
|
-
signal,
|
|
314
|
-
logLevel,
|
|
315
|
-
fields,
|
|
316
248
|
});
|
|
317
249
|
state.callbacks.tracks.setIsDone();
|
|
318
250
|
return {
|
|
319
|
-
type: 'complete',
|
|
320
251
|
box,
|
|
321
|
-
size: boxSize,
|
|
322
252
|
skipTo: null,
|
|
323
253
|
};
|
|
324
254
|
}
|
|
@@ -328,9 +258,6 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
328
258
|
size: boxSize,
|
|
329
259
|
offsetAtStart: fileOffset,
|
|
330
260
|
state,
|
|
331
|
-
signal,
|
|
332
|
-
logLevel,
|
|
333
|
-
fields,
|
|
334
261
|
});
|
|
335
262
|
const transformedTrack = (0, make_track_1.makeBaseMediaTrack)(box);
|
|
336
263
|
if (transformedTrack) {
|
|
@@ -341,9 +268,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
341
268
|
});
|
|
342
269
|
}
|
|
343
270
|
return {
|
|
344
|
-
type: 'complete',
|
|
345
271
|
box,
|
|
346
|
-
size: boxSize,
|
|
347
272
|
skipTo: null,
|
|
348
273
|
};
|
|
349
274
|
}
|
|
@@ -354,9 +279,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
354
279
|
fileOffset,
|
|
355
280
|
});
|
|
356
281
|
return {
|
|
357
|
-
type: 'complete',
|
|
358
282
|
box,
|
|
359
|
-
size: boxSize,
|
|
360
283
|
skipTo: null,
|
|
361
284
|
};
|
|
362
285
|
}
|
|
@@ -366,9 +289,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
366
289
|
size: boxSize,
|
|
367
290
|
});
|
|
368
291
|
return {
|
|
369
|
-
type: 'complete',
|
|
370
292
|
box,
|
|
371
|
-
size: boxSize,
|
|
372
293
|
skipTo: null,
|
|
373
294
|
};
|
|
374
295
|
}
|
|
@@ -378,9 +299,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
378
299
|
size: boxSize,
|
|
379
300
|
});
|
|
380
301
|
return {
|
|
381
|
-
type: 'complete',
|
|
382
302
|
box,
|
|
383
|
-
size: boxSize,
|
|
384
303
|
skipTo: null,
|
|
385
304
|
};
|
|
386
305
|
}
|
|
@@ -391,9 +310,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
391
310
|
offset: fileOffset,
|
|
392
311
|
});
|
|
393
312
|
return {
|
|
394
|
-
type: 'complete',
|
|
395
313
|
box,
|
|
396
|
-
size: boxSize,
|
|
397
314
|
skipTo: null,
|
|
398
315
|
};
|
|
399
316
|
}
|
|
@@ -404,9 +321,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
404
321
|
size: boxSize,
|
|
405
322
|
});
|
|
406
323
|
return {
|
|
407
|
-
type: 'complete',
|
|
408
324
|
box,
|
|
409
|
-
size: boxSize,
|
|
410
325
|
skipTo: null,
|
|
411
326
|
};
|
|
412
327
|
}
|
|
@@ -417,9 +332,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
417
332
|
fileOffset,
|
|
418
333
|
});
|
|
419
334
|
return {
|
|
420
|
-
type: 'complete',
|
|
421
335
|
box,
|
|
422
|
-
size: boxSize,
|
|
423
336
|
skipTo: null,
|
|
424
337
|
};
|
|
425
338
|
}
|
|
@@ -430,52 +343,45 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, state,
|
|
|
430
343
|
fileOffset,
|
|
431
344
|
});
|
|
432
345
|
return {
|
|
433
|
-
type: 'complete',
|
|
434
346
|
box,
|
|
435
|
-
size: boxSize,
|
|
436
347
|
skipTo: null,
|
|
437
348
|
};
|
|
438
349
|
}
|
|
439
|
-
if (boxType === '
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
350
|
+
if (boxType === 'mdia' ||
|
|
351
|
+
boxType === 'minf' ||
|
|
352
|
+
boxType === 'stbl' ||
|
|
353
|
+
boxType === 'udta' ||
|
|
354
|
+
boxType === 'moof' ||
|
|
355
|
+
boxType === 'dims' ||
|
|
356
|
+
boxType === 'meta' ||
|
|
357
|
+
boxType === 'wave' ||
|
|
358
|
+
boxType === 'traf' ||
|
|
359
|
+
boxType === 'stsb') {
|
|
360
|
+
const children = await (0, get_children_1.getIsoBaseMediaChildren)({
|
|
361
|
+
iterator,
|
|
445
362
|
state,
|
|
446
|
-
|
|
447
|
-
maySkipSampleProcessing: state.supportsContentRange,
|
|
363
|
+
size: boxSize - 8,
|
|
448
364
|
});
|
|
449
|
-
if (box.type === 'partial-mdat-box') {
|
|
450
|
-
return box;
|
|
451
|
-
}
|
|
452
365
|
return {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
366
|
+
box: {
|
|
367
|
+
type: 'regular-box',
|
|
368
|
+
boxType,
|
|
369
|
+
boxSize,
|
|
370
|
+
children,
|
|
371
|
+
offset: fileOffset,
|
|
372
|
+
},
|
|
456
373
|
skipTo: null,
|
|
457
374
|
};
|
|
458
375
|
}
|
|
459
|
-
|
|
460
|
-
const children = await (0, get_children_1.getChildren)({
|
|
461
|
-
boxType,
|
|
462
|
-
iterator,
|
|
463
|
-
bytesRemainingInBox,
|
|
464
|
-
state,
|
|
465
|
-
signal,
|
|
466
|
-
logLevel,
|
|
467
|
-
fields,
|
|
468
|
-
});
|
|
376
|
+
iterator.discard(boxSize - 8);
|
|
469
377
|
return {
|
|
470
|
-
type: 'complete',
|
|
471
378
|
box: {
|
|
472
379
|
type: 'regular-box',
|
|
473
380
|
boxType,
|
|
474
381
|
boxSize,
|
|
475
|
-
children,
|
|
382
|
+
children: [],
|
|
476
383
|
offset: fileOffset,
|
|
477
384
|
},
|
|
478
|
-
size: boxSize,
|
|
479
385
|
skipTo: null,
|
|
480
386
|
};
|
|
481
387
|
};
|