@remotion/media-parser 4.0.209 → 4.0.211
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/buffer.js +2 -0
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +1 -1
- package/dist/boxes/iso-base-media/make-track.js +14 -2
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +13 -4
- package/dist/boxes/iso-base-media/mdat/mdat.js +20 -5
- package/dist/boxes/iso-base-media/moov/moov.d.ts +2 -1
- package/dist/boxes/iso-base-media/moov/moov.js +2 -1
- package/dist/boxes/iso-base-media/process-box.d.ts +6 -3
- package/dist/boxes/iso-base-media/process-box.js +66 -12
- package/dist/boxes/iso-base-media/stsd/avcc.d.ts +1 -1
- package/dist/boxes/iso-base-media/stsd/avcc.js +2 -2
- package/dist/boxes/iso-base-media/stsd/ctts.js +2 -5
- package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +1 -1
- package/dist/boxes/iso-base-media/stsd/hvcc.js +2 -2
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +2 -1
- package/dist/boxes/iso-base-media/stsd/mebx.js +2 -1
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +4 -2
- package/dist/boxes/iso-base-media/stsd/samples.js +69 -11
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +2 -1
- package/dist/boxes/iso-base-media/stsd/stsd.js +2 -1
- package/dist/boxes/iso-base-media/trak/trak.d.ts +2 -1
- package/dist/boxes/iso-base-media/trak/trak.js +2 -1
- package/dist/boxes/iso-base-media/traversal.d.ts +39 -0
- package/dist/boxes/iso-base-media/traversal.js +201 -0
- package/dist/boxes/webm/color.d.ts +4 -0
- package/dist/boxes/webm/color.js +127 -0
- package/dist/boxes/webm/description.js +1 -1
- package/dist/boxes/webm/ebml.d.ts +1 -1
- package/dist/boxes/webm/get-ready-tracks.js +3 -3
- package/dist/boxes/webm/get-sample-from-block.js +1 -1
- package/dist/boxes/webm/make-track.d.ts +9 -0
- package/dist/boxes/webm/make-track.js +260 -0
- package/dist/boxes/webm/parse-ebml.js +2 -2
- package/dist/boxes/webm/segments/all-segments.d.ts +36 -3
- package/dist/boxes/webm/segments/all-segments.js +34 -6
- package/dist/boxes/webm/segments/parse-children.js +6 -0
- package/dist/boxes/webm/traversal.d.ts +26 -1
- package/dist/boxes/webm/traversal.js +214 -1
- package/dist/buffer-iterator.d.ts +4 -1
- package/dist/buffer-iterator.js +31 -5
- package/dist/create/cluster-segment.js +0 -2
- package/dist/create/cluster.d.ts +16 -2
- package/dist/create/cluster.js +17 -10
- package/dist/create/create-media.d.ts +4 -2
- package/dist/create/create-media.js +101 -22
- package/dist/create/make-duration-with-padding.d.ts +1 -1
- package/dist/create/make-duration-with-padding.js +3 -3
- package/dist/create/matroska-cues.d.ts +6 -0
- package/dist/create/matroska-cues.js +49 -0
- package/dist/create/matroska-info.js +1 -1
- package/dist/create/matroska-seek.d.ts +6 -0
- package/dist/create/matroska-seek.js +32 -0
- package/dist/create/matroska-segment.d.ts +1 -0
- package/dist/create/matroska-segment.js +3 -2
- package/dist/create/matroska-trackentry.d.ts +9 -14
- package/dist/create/matroska-trackentry.js +79 -102
- package/dist/emit-available-info.d.ts +12 -0
- package/dist/emit-available-info.js +133 -0
- package/dist/esm/buffer.mjs +57 -0
- package/dist/esm/from-fetch.mjs +107 -0
- package/dist/esm/from-node.mjs +49 -0
- package/dist/esm/from-web-file.mjs +49 -0
- package/dist/esm/index.mjs +6822 -0
- package/dist/esm/web-fs.mjs +67 -0
- package/dist/get-audio-codec.d.ts +5 -5
- package/dist/get-audio-codec.js +44 -57
- package/dist/get-container.d.ts +4 -0
- package/dist/get-container.js +26 -0
- package/dist/get-duration.js +1 -1
- package/dist/get-fps.js +1 -1
- package/dist/get-sample-aspect-ratio.d.ts +1 -1
- package/dist/get-sample-aspect-ratio.js +19 -19
- package/dist/get-tracks.d.ts +13 -0
- package/dist/get-tracks.js +8 -8
- package/dist/get-video-codec.d.ts +5 -2
- package/dist/get-video-codec.js +111 -21
- package/dist/has-all-info.d.ts +2 -2
- package/dist/has-all-info.js +23 -9
- package/dist/index.d.ts +4 -1
- package/dist/options.d.ts +97 -30
- package/dist/parse-media.js +59 -69
- package/dist/parse-video.d.ts +2 -1
- package/dist/parse-video.js +3 -1
- package/dist/parser-context.d.ts +1 -0
- package/dist/parser-state.js +1 -2
- package/dist/readers/from-fetch.d.ts +12 -0
- package/dist/readers/from-fetch.js +83 -17
- package/dist/readers/from-node.js +14 -3
- package/dist/readers/from-web-file.js +15 -2
- package/dist/readers/reader.d.ts +7 -1
- package/dist/samples-from-moof.js +1 -1
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +7 -0
- package/dist/writers/buffer.d.ts +2 -0
- package/dist/writers/buffer.js +58 -0
- package/dist/writers/web-fs.d.ts +1 -0
- package/dist/writers/web-fs.js +42 -18
- package/dist/writers/writer.d.ts +4 -2
- package/fetch.js +2 -0
- package/node.js +2 -0
- package/package.json +43 -8
- package/web-file.js +2 -0
- package/web-fs.js +2 -0
- package/.eslintrc +0 -8
- package/dist/av1-codec-string.d.ts +0 -3
- package/dist/av1-codec-string.js +0 -91
- package/dist/boxes/iso-base-media/ftype.d.ts +0 -9
- package/dist/boxes/iso-base-media/ftype.js +0 -31
- package/dist/boxes/iso-base-media/stsd/avcc-hvcc.d.ts +0 -20
- package/dist/boxes/iso-base-media/stsd/avcc-hvcc.js +0 -73
- package/dist/boxes/iso-base-media/stts/stts.d.ts +0 -15
- package/dist/boxes/iso-base-media/stts/stts.js +0 -35
- package/dist/boxes/webm/bitstream/av1/bitstream-frame-header.d.ts +0 -14
- package/dist/boxes/webm/bitstream/av1/bitstream-frame-header.js +0 -67
- package/dist/boxes/webm/bitstream/av1/bitstream-frame.d.ts +0 -11
- package/dist/boxes/webm/bitstream/av1/bitstream-frame.js +0 -14
- package/dist/boxes/webm/bitstream/av1/chroma-sample-position.d.ts +0 -6
- package/dist/boxes/webm/bitstream/av1/chroma-sample-position.js +0 -9
- package/dist/boxes/webm/bitstream/av1/color-config.d.ts +0 -16
- package/dist/boxes/webm/bitstream/av1/color-config.js +0 -103
- package/dist/boxes/webm/bitstream/av1/color-primaries.d.ts +0 -14
- package/dist/boxes/webm/bitstream/av1/color-primaries.js +0 -17
- package/dist/boxes/webm/bitstream/av1/decoder-model-info.d.ts +0 -9
- package/dist/boxes/webm/bitstream/av1/decoder-model-info.js +0 -17
- package/dist/boxes/webm/bitstream/av1/frame.d.ts +0 -0
- package/dist/boxes/webm/bitstream/av1/frame.js +0 -1
- package/dist/boxes/webm/bitstream/av1/header-segment.d.ts +0 -51
- package/dist/boxes/webm/bitstream/av1/header-segment.js +0 -183
- package/dist/boxes/webm/bitstream/av1/matrix-coefficients.d.ts +0 -17
- package/dist/boxes/webm/bitstream/av1/matrix-coefficients.js +0 -20
- package/dist/boxes/webm/bitstream/av1/operating-parameters-info.d.ts +0 -10
- package/dist/boxes/webm/bitstream/av1/operating-parameters-info.js +0 -15
- package/dist/boxes/webm/bitstream/av1/temporal-point-info.d.ts +0 -5
- package/dist/boxes/webm/bitstream/av1/temporal-point-info.js +0 -8
- package/dist/boxes/webm/bitstream/av1/timing-info.d.ts +0 -8
- package/dist/boxes/webm/bitstream/av1/timing-info.js +0 -20
- package/dist/boxes/webm/bitstream/av1/transfer-characteristics.d.ts +0 -21
- package/dist/boxes/webm/bitstream/av1/transfer-characteristics.js +0 -24
- package/dist/boxes/webm/bitstream/av1/uvlc.d.ts +0 -2
- package/dist/boxes/webm/bitstream/av1/uvlc.js +0 -20
- package/dist/boxes/webm/bitstream/av1.d.ts +0 -20
- package/dist/boxes/webm/bitstream/av1.js +0 -118
- package/dist/boxes/webm/bitstream/h264/get-h264-descriptor.d.ts +0 -0
- package/dist/boxes/webm/bitstream/h264/get-h264-descriptor.js +0 -1
- package/dist/boxes/webm/segments/duration.d.ts +0 -6
- package/dist/boxes/webm/segments/duration.js +0 -19
- package/dist/boxes/webm/segments/info.d.ts +0 -9
- package/dist/boxes/webm/segments/info.js +0 -22
- package/dist/boxes/webm/segments/main.d.ts +0 -5
- package/dist/boxes/webm/segments/main.js +0 -2
- package/dist/boxes/webm/segments/muxing.d.ts +0 -6
- package/dist/boxes/webm/segments/muxing.js +0 -11
- package/dist/boxes/webm/segments/seek-head.d.ts +0 -9
- package/dist/boxes/webm/segments/seek-head.js +0 -22
- package/dist/boxes/webm/segments/seek-position.d.ts +0 -6
- package/dist/boxes/webm/segments/seek-position.js +0 -11
- package/dist/boxes/webm/segments/seek.d.ts +0 -13
- package/dist/boxes/webm/segments/seek.js +0 -35
- package/dist/boxes/webm/segments/timestamp-scale.d.ts +0 -6
- package/dist/boxes/webm/segments/timestamp-scale.js +0 -11
- package/dist/boxes/webm/segments/tracks.d.ts +0 -8
- package/dist/boxes/webm/segments/tracks.js +0 -21
- package/dist/boxes/webm/segments/unknown.d.ts +0 -6
- package/dist/boxes/webm/segments/unknown.js +0 -11
- package/dist/boxes/webm/segments/void.d.ts +0 -6
- package/dist/boxes/webm/segments/void.js +0 -11
- package/dist/boxes/webm/segments/writing.d.ts +0 -6
- package/dist/boxes/webm/segments/writing.js +0 -11
- package/dist/boxes/webm/tracks.d.ts +0 -8
- package/dist/boxes/webm/tracks.js +0 -21
- package/dist/combine-uint8array.d.ts +0 -1
- package/dist/combine-uint8array.js +0 -13
- package/dist/from-web.d.ts +0 -2
- package/dist/from-web.js +0 -45
- package/dist/get-video-metadata.d.ts +0 -2
- package/dist/get-video-metadata.js +0 -44
- package/dist/read-and-increment-offset.d.ts +0 -28
- package/dist/read-and-increment-offset.js +0 -177
- package/dist/understand-vorbis.d.ts +0 -1
- package/dist/understand-vorbis.js +0 -12
- package/input.webm +0 -0
- package/src/add-new-matroska-tracks.ts +0 -23
- package/src/boxes/iso-base-media/base-type.ts +0 -4
- package/src/boxes/iso-base-media/esds/decoder-specific-config.ts +0 -68
- package/src/boxes/iso-base-media/esds/esds-descriptors.ts +0 -135
- package/src/boxes/iso-base-media/esds/esds.ts +0 -49
- package/src/boxes/iso-base-media/ftyp.ts +0 -39
- package/src/boxes/iso-base-media/get-sample-positions-from-track.ts +0 -69
- package/src/boxes/iso-base-media/make-track.ts +0 -116
- package/src/boxes/iso-base-media/mdat/mdat.ts +0 -140
- package/src/boxes/iso-base-media/mdhd.ts +0 -59
- package/src/boxes/iso-base-media/moov/moov.ts +0 -43
- package/src/boxes/iso-base-media/mvhd.ts +0 -114
- package/src/boxes/iso-base-media/process-box.ts +0 -748
- package/src/boxes/iso-base-media/stsd/av1c.ts +0 -19
- package/src/boxes/iso-base-media/stsd/avcc.ts +0 -36
- package/src/boxes/iso-base-media/stsd/colr.ts +0 -49
- package/src/boxes/iso-base-media/stsd/ctts.ts +0 -64
- package/src/boxes/iso-base-media/stsd/hvcc.ts +0 -32
- package/src/boxes/iso-base-media/stsd/keys.ts +0 -27
- package/src/boxes/iso-base-media/stsd/mebx.ts +0 -54
- package/src/boxes/iso-base-media/stsd/pasp.ts +0 -32
- package/src/boxes/iso-base-media/stsd/samples.ts +0 -359
- package/src/boxes/iso-base-media/stsd/stco.ts +0 -52
- package/src/boxes/iso-base-media/stsd/stsc.ts +0 -61
- package/src/boxes/iso-base-media/stsd/stsd.ts +0 -55
- package/src/boxes/iso-base-media/stsd/stss.ts +0 -47
- package/src/boxes/iso-base-media/stsd/stsz.ts +0 -75
- package/src/boxes/iso-base-media/stsd/stts.ts +0 -62
- package/src/boxes/iso-base-media/tfdt.ts +0 -37
- package/src/boxes/iso-base-media/tfhd.ts +0 -66
- package/src/boxes/iso-base-media/tkhd.ts +0 -150
- package/src/boxes/iso-base-media/to-date.ts +0 -9
- package/src/boxes/iso-base-media/trak/trak.ts +0 -43
- package/src/boxes/iso-base-media/trun.ts +0 -74
- package/src/boxes/iso-base-media/void-box.ts +0 -4
- package/src/boxes/webm/allowed-partial-segments.ts +0 -1
- package/src/boxes/webm/av1-codec-private.ts +0 -113
- package/src/boxes/webm/description.ts +0 -104
- package/src/boxes/webm/ebml.ts +0 -98
- package/src/boxes/webm/get-ready-tracks.ts +0 -36
- package/src/boxes/webm/get-sample-from-block.ts +0 -125
- package/src/boxes/webm/get-track.ts +0 -257
- package/src/boxes/webm/make-header.ts +0 -253
- package/src/boxes/webm/parse-ebml.ts +0 -259
- package/src/boxes/webm/parse-webm-header.ts +0 -18
- package/src/boxes/webm/segments/all-segments.ts +0 -888
- package/src/boxes/webm/segments/block-simple-block-flags.ts +0 -52
- package/src/boxes/webm/segments/parse-children.ts +0 -144
- package/src/boxes/webm/segments/track-entry.ts +0 -38
- package/src/boxes/webm/segments.ts +0 -147
- package/src/boxes/webm/traversal.ts +0 -45
- package/src/buffer-iterator.ts +0 -555
- package/src/create/cluster-segment.ts +0 -62
- package/src/create/cluster.ts +0 -64
- package/src/create/create-media.ts +0 -136
- package/src/create/make-duration-with-padding.ts +0 -15
- package/src/create/matroska-header.ts +0 -63
- package/src/create/matroska-info.ts +0 -30
- package/src/create/matroska-segment.ts +0 -10
- package/src/create/matroska-trackentry.ts +0 -325
- package/src/create/timescale.ts +0 -1
- package/src/get-audio-codec.ts +0 -270
- package/src/get-dimensions.ts +0 -47
- package/src/get-duration.ts +0 -103
- package/src/get-fps.ts +0 -113
- package/src/get-sample-aspect-ratio.ts +0 -204
- package/src/get-sample-positions.ts +0 -93
- package/src/get-tracks.ts +0 -147
- package/src/get-video-codec.ts +0 -117
- package/src/has-all-info.ts +0 -81
- package/src/index.ts +0 -18
- package/src/make-hvc1-codec-strings.ts +0 -55
- package/src/options.ts +0 -118
- package/src/parse-media.ts +0 -183
- package/src/parse-result.ts +0 -79
- package/src/parse-video.ts +0 -83
- package/src/parser-context.ts +0 -10
- package/src/parser-state.ts +0 -178
- package/src/readers/from-fetch.ts +0 -90
- package/src/readers/from-node.ts +0 -51
- package/src/readers/from-web-file.ts +0 -49
- package/src/readers/reader.ts +0 -15
- package/src/samples-from-moof.ts +0 -102
- package/src/test/aspect-ratio.test.ts +0 -42
- package/src/test/av1.test.ts +0 -108
- package/src/test/create-matroska.test.ts +0 -287
- package/src/test/duration.test.ts +0 -18
- package/src/test/keys.test.ts +0 -47
- package/src/test/matroska.test.ts +0 -463
- package/src/test/mvhd.test.ts +0 -94
- package/src/test/parse-esds.test.ts +0 -98
- package/src/test/parse-stco.test.ts +0 -61
- package/src/test/parse-stsc.test.ts +0 -104
- package/src/test/parse-stsz.test.ts +0 -57
- package/src/test/parse-stts.test.ts +0 -38
- package/src/test/parse-video.test.ts +0 -101
- package/src/test/parse-webm.test.ts +0 -17
- package/src/test/samples-from-moof.test.ts +0 -2496
- package/src/test/stream-local.test.ts +0 -743
- package/src/test/stream-remote.test.ts +0 -59
- package/src/test/stream-samples.test.ts +0 -181
- package/src/test/stsd.test.ts +0 -265
- package/src/test/tkhd.test.ts +0 -87
- package/src/traversal.ts +0 -528
- package/src/webcodec-sample-types.ts +0 -29
- package/src/writers/web-fs.ts +0 -50
- package/src/writers/writer.ts +0 -12
- package/tsconfig.json +0 -14
- package/tsconfig.tsbuildinfo +0 -1
package/buffer.js
ADDED
|
@@ -4,7 +4,7 @@ exports.getSamplePositionsFromTrack = void 0;
|
|
|
4
4
|
const get_fps_1 = require("../../get-fps");
|
|
5
5
|
const get_sample_positions_1 = require("../../get-sample-positions");
|
|
6
6
|
const samples_from_moof_1 = require("../../samples-from-moof");
|
|
7
|
-
const traversal_1 = require("
|
|
7
|
+
const traversal_1 = require("./traversal");
|
|
8
8
|
const getSamplePositionsFromTrack = (trakBox, moofBox) => {
|
|
9
9
|
const stszBox = (0, traversal_1.getStszBox)(trakBox);
|
|
10
10
|
const stcoBox = (0, traversal_1.getStcoBox)(trakBox);
|
|
@@ -5,8 +5,9 @@ const get_audio_codec_1 = require("../../get-audio-codec");
|
|
|
5
5
|
const get_fps_1 = require("../../get-fps");
|
|
6
6
|
const get_sample_aspect_ratio_1 = require("../../get-sample-aspect-ratio");
|
|
7
7
|
const get_video_codec_1 = require("../../get-video-codec");
|
|
8
|
-
const traversal_1 = require("
|
|
8
|
+
const traversal_1 = require("./traversal");
|
|
9
9
|
const makeBaseMediaTrack = (trakBox) => {
|
|
10
|
+
var _a;
|
|
10
11
|
const tkhdBox = (0, traversal_1.getTkhdBox)(trakBox);
|
|
11
12
|
const videoDescriptors = (0, traversal_1.getVideoDescriptors)(trakBox);
|
|
12
13
|
const timescaleAndDuration = (0, get_fps_1.getTimescaleAndDuration)(trakBox);
|
|
@@ -35,6 +36,8 @@ const makeBaseMediaTrack = (trakBox) => {
|
|
|
35
36
|
sampleRate,
|
|
36
37
|
description,
|
|
37
38
|
trakBox,
|
|
39
|
+
codecPrivate: null,
|
|
40
|
+
codecWithoutConfig: (0, get_audio_codec_1.getAudioCodecFromTrack)(trakBox),
|
|
38
41
|
};
|
|
39
42
|
}
|
|
40
43
|
if (!(0, get_fps_1.trakBoxContainsVideo)(trakBox)) {
|
|
@@ -45,7 +48,7 @@ const makeBaseMediaTrack = (trakBox) => {
|
|
|
45
48
|
trakBox,
|
|
46
49
|
};
|
|
47
50
|
}
|
|
48
|
-
const videoSample = (0, get_sample_aspect_ratio_1.
|
|
51
|
+
const videoSample = (0, get_sample_aspect_ratio_1.getStsdVideoConfig)(trakBox);
|
|
49
52
|
if (!videoSample) {
|
|
50
53
|
throw new Error('No video sample');
|
|
51
54
|
}
|
|
@@ -63,6 +66,7 @@ const makeBaseMediaTrack = (trakBox) => {
|
|
|
63
66
|
if (!codec) {
|
|
64
67
|
throw new Error('Could not find video codec');
|
|
65
68
|
}
|
|
69
|
+
const privateData = (0, get_video_codec_1.getVideoPrivateData)(trakBox);
|
|
66
70
|
const track = {
|
|
67
71
|
type: 'video',
|
|
68
72
|
trackId: tkhdBox.trackId,
|
|
@@ -79,6 +83,14 @@ const makeBaseMediaTrack = (trakBox) => {
|
|
|
79
83
|
displayAspectHeight,
|
|
80
84
|
rotation,
|
|
81
85
|
trakBox,
|
|
86
|
+
codecPrivate: privateData,
|
|
87
|
+
color: (_a = (0, get_video_codec_1.getIsoBmColrConfig)(trakBox)) !== null && _a !== void 0 ? _a : {
|
|
88
|
+
fullRange: null,
|
|
89
|
+
matrixCoefficients: null,
|
|
90
|
+
primaries: null,
|
|
91
|
+
transferCharacteristics: null,
|
|
92
|
+
},
|
|
93
|
+
codecWithoutConfig: (0, get_video_codec_1.getVideoCodecFromIsoTrak)(trakBox),
|
|
82
94
|
};
|
|
83
95
|
return track;
|
|
84
96
|
};
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import type { BufferIterator } from '../../../buffer-iterator';
|
|
2
2
|
import type { AnySegment } from '../../../parse-result';
|
|
3
3
|
import type { ParserContext } from '../../../parser-context';
|
|
4
|
-
|
|
4
|
+
type MdatStatus = {
|
|
5
|
+
status: 'samples-buffered';
|
|
6
|
+
} | {
|
|
7
|
+
status: 'samples-skipped';
|
|
8
|
+
} | {
|
|
9
|
+
status: 'samples-processed';
|
|
10
|
+
};
|
|
11
|
+
export type MdatBox = {
|
|
5
12
|
type: 'mdat-box';
|
|
6
|
-
samplesProcessed: boolean;
|
|
7
13
|
boxSize: number;
|
|
8
14
|
fileOffset: number;
|
|
9
|
-
}
|
|
10
|
-
export declare const parseMdat: ({ data, size, fileOffset, existingBoxes, options, }: {
|
|
15
|
+
} & MdatStatus;
|
|
16
|
+
export declare const parseMdat: ({ data, size, fileOffset, existingBoxes, options, signal, maySkipSampleProcessing, }: {
|
|
11
17
|
data: BufferIterator;
|
|
12
18
|
size: number;
|
|
13
19
|
fileOffset: number;
|
|
14
20
|
existingBoxes: AnySegment[];
|
|
15
21
|
options: ParserContext;
|
|
22
|
+
signal: AbortSignal | null;
|
|
23
|
+
maySkipSampleProcessing: boolean;
|
|
16
24
|
}) => Promise<MdatBox>;
|
|
25
|
+
export {};
|
|
@@ -2,16 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseMdat = void 0;
|
|
4
4
|
const get_tracks_1 = require("../../../get-tracks");
|
|
5
|
-
const traversal_1 = require("../../../traversal");
|
|
6
5
|
const get_sample_positions_from_track_1 = require("../get-sample-positions-from-track");
|
|
7
|
-
const
|
|
6
|
+
const traversal_1 = require("../traversal");
|
|
7
|
+
const parseMdat = async ({ data, size, fileOffset, existingBoxes, options, signal, maySkipSampleProcessing, }) => {
|
|
8
8
|
const alreadyHas = (0, get_tracks_1.hasTracks)(existingBoxes);
|
|
9
9
|
if (!alreadyHas) {
|
|
10
|
+
if (maySkipSampleProcessing) {
|
|
11
|
+
data.discard(size - (data.counter.getOffset() - fileOffset));
|
|
12
|
+
return Promise.resolve({
|
|
13
|
+
type: 'mdat-box',
|
|
14
|
+
boxSize: size,
|
|
15
|
+
status: 'samples-skipped',
|
|
16
|
+
fileOffset,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
10
19
|
data.discard(size - (data.counter.getOffset() - fileOffset));
|
|
20
|
+
data.disallowDiscard();
|
|
11
21
|
return Promise.resolve({
|
|
12
22
|
type: 'mdat-box',
|
|
13
23
|
boxSize: size,
|
|
14
|
-
|
|
24
|
+
status: 'samples-buffered',
|
|
15
25
|
fileOffset,
|
|
16
26
|
});
|
|
17
27
|
}
|
|
@@ -37,6 +47,9 @@ const parseMdat = async ({ data, size, fileOffset, existingBoxes, options, }) =>
|
|
|
37
47
|
.flat(1);
|
|
38
48
|
// eslint-disable-next-line no-constant-condition
|
|
39
49
|
while (true) {
|
|
50
|
+
if (signal && signal.aborted) {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
40
53
|
const samplesWithIndex = flatSamples.find((sample) => {
|
|
41
54
|
return sample.samplePosition.offset === data.counter.getOffset();
|
|
42
55
|
});
|
|
@@ -62,9 +75,11 @@ const parseMdat = async ({ data, size, fileOffset, existingBoxes, options, }) =>
|
|
|
62
75
|
}
|
|
63
76
|
const bytes = data.getSlice(samplesWithIndex.samplePosition.size);
|
|
64
77
|
if (samplesWithIndex.track.type === 'audio') {
|
|
78
|
+
const timestamp = Math.floor((samplesWithIndex.samplePosition.cts * 1000000) /
|
|
79
|
+
samplesWithIndex.track.timescale);
|
|
65
80
|
await options.parserState.onAudioSample(samplesWithIndex.track.trackId, {
|
|
66
81
|
data: bytes,
|
|
67
|
-
timestamp
|
|
82
|
+
timestamp,
|
|
68
83
|
trackId: samplesWithIndex.track.trackId,
|
|
69
84
|
type: samplesWithIndex.samplePosition.isKeyframe ? 'key' : 'delta',
|
|
70
85
|
});
|
|
@@ -93,7 +108,7 @@ const parseMdat = async ({ data, size, fileOffset, existingBoxes, options, }) =>
|
|
|
93
108
|
return Promise.resolve({
|
|
94
109
|
type: 'mdat-box',
|
|
95
110
|
boxSize: size,
|
|
96
|
-
|
|
111
|
+
status: 'samples-processed',
|
|
97
112
|
fileOffset,
|
|
98
113
|
});
|
|
99
114
|
};
|
|
@@ -6,9 +6,10 @@ export interface MoovBox extends BaseBox {
|
|
|
6
6
|
type: 'moov-box';
|
|
7
7
|
children: AnySegment[];
|
|
8
8
|
}
|
|
9
|
-
export declare const parseMoov: ({ iterator, offset, size, options, }: {
|
|
9
|
+
export declare const parseMoov: ({ iterator, offset, size, options, signal, }: {
|
|
10
10
|
iterator: BufferIterator;
|
|
11
11
|
offset: number;
|
|
12
12
|
size: number;
|
|
13
13
|
options: ParserContext;
|
|
14
|
+
signal: AbortSignal | null;
|
|
14
15
|
}) => Promise<MoovBox>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseMoov = void 0;
|
|
4
4
|
const process_box_1 = require("../process-box");
|
|
5
|
-
const parseMoov = async ({ iterator, offset, size, options, }) => {
|
|
5
|
+
const parseMoov = async ({ iterator, offset, size, options, signal, }) => {
|
|
6
6
|
const children = await (0, process_box_1.parseBoxes)({
|
|
7
7
|
iterator,
|
|
8
8
|
maxBytes: size - (iterator.counter.getOffset() - offset),
|
|
@@ -11,6 +11,7 @@ const parseMoov = async ({ iterator, offset, size, options, }) => {
|
|
|
11
11
|
options,
|
|
12
12
|
continueMdat: false,
|
|
13
13
|
littleEndian: false,
|
|
14
|
+
signal,
|
|
14
15
|
});
|
|
15
16
|
if (children.status === 'incomplete') {
|
|
16
17
|
throw new Error('Incomplete boxes are not allowed');
|
|
@@ -2,21 +2,23 @@ import type { BufferIterator } from '../../buffer-iterator';
|
|
|
2
2
|
import type { AnySegment, IsoBaseMediaBox, ParseResult } from '../../parse-result';
|
|
3
3
|
import type { BoxAndNext, PartialMdatBox } from '../../parse-video';
|
|
4
4
|
import type { ParserContext } from '../../parser-context';
|
|
5
|
-
export declare const parseMdatPartially: ({ iterator, boxSize, fileOffset, parsedBoxes, options, }: {
|
|
5
|
+
export declare const parseMdatPartially: ({ iterator, boxSize, fileOffset, parsedBoxes, options, signal, }: {
|
|
6
6
|
iterator: BufferIterator;
|
|
7
7
|
boxSize: number;
|
|
8
8
|
fileOffset: number;
|
|
9
9
|
parsedBoxes: AnySegment[];
|
|
10
10
|
options: ParserContext;
|
|
11
|
+
signal: AbortSignal | null;
|
|
11
12
|
}) => Promise<BoxAndNext>;
|
|
12
|
-
export declare const processBox: ({ iterator, allowIncompleteBoxes, parsedBoxes, options, littleEndian, }: {
|
|
13
|
+
export declare const processBox: ({ iterator, allowIncompleteBoxes, parsedBoxes, options, littleEndian, signal, }: {
|
|
13
14
|
iterator: BufferIterator;
|
|
14
15
|
allowIncompleteBoxes: boolean;
|
|
15
16
|
parsedBoxes: AnySegment[];
|
|
16
17
|
options: ParserContext;
|
|
17
18
|
littleEndian: boolean;
|
|
19
|
+
signal: AbortSignal | null;
|
|
18
20
|
}) => Promise<BoxAndNext>;
|
|
19
|
-
export declare const parseBoxes: ({ iterator, maxBytes, allowIncompleteBoxes, initialBoxes, options, continueMdat, littleEndian, }: {
|
|
21
|
+
export declare const parseBoxes: ({ iterator, maxBytes, allowIncompleteBoxes, initialBoxes, options, continueMdat, littleEndian, signal, }: {
|
|
20
22
|
iterator: BufferIterator;
|
|
21
23
|
maxBytes: number;
|
|
22
24
|
allowIncompleteBoxes: boolean;
|
|
@@ -24,4 +26,5 @@ export declare const parseBoxes: ({ iterator, maxBytes, allowIncompleteBoxes, in
|
|
|
24
26
|
options: ParserContext;
|
|
25
27
|
continueMdat: false | PartialMdatBox;
|
|
26
28
|
littleEndian: boolean;
|
|
29
|
+
signal: AbortSignal | null;
|
|
27
30
|
}) => Promise<ParseResult>;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseBoxes = exports.processBox = exports.parseMdatPartially = void 0;
|
|
4
4
|
const get_tracks_1 = require("../../get-tracks");
|
|
5
|
-
const traversal_1 = require("../../traversal");
|
|
6
5
|
const esds_1 = require("./esds/esds");
|
|
7
6
|
const ftyp_1 = require("./ftyp");
|
|
8
7
|
const make_track_1 = require("./make-track");
|
|
@@ -27,8 +26,9 @@ const tfdt_1 = require("./tfdt");
|
|
|
27
26
|
const tfhd_1 = require("./tfhd");
|
|
28
27
|
const tkhd_1 = require("./tkhd");
|
|
29
28
|
const trak_1 = require("./trak/trak");
|
|
29
|
+
const traversal_1 = require("./traversal");
|
|
30
30
|
const trun_1 = require("./trun");
|
|
31
|
-
const getChildren = async ({ boxType, iterator, bytesRemainingInBox, options, littleEndian, }) => {
|
|
31
|
+
const getChildren = async ({ boxType, iterator, bytesRemainingInBox, options, littleEndian, signal, }) => {
|
|
32
32
|
const parseChildren = boxType === 'mdia' ||
|
|
33
33
|
boxType === 'minf' ||
|
|
34
34
|
boxType === 'stbl' ||
|
|
@@ -46,6 +46,7 @@ const getChildren = async ({ boxType, iterator, bytesRemainingInBox, options, li
|
|
|
46
46
|
options,
|
|
47
47
|
continueMdat: false,
|
|
48
48
|
littleEndian,
|
|
49
|
+
signal,
|
|
49
50
|
});
|
|
50
51
|
if (parsed.status === 'incomplete') {
|
|
51
52
|
throw new Error('Incomplete boxes are not allowed');
|
|
@@ -58,15 +59,17 @@ const getChildren = async ({ boxType, iterator, bytesRemainingInBox, options, li
|
|
|
58
59
|
iterator.discard(bytesRemainingInBox);
|
|
59
60
|
return [];
|
|
60
61
|
};
|
|
61
|
-
const parseMdatPartially = async ({ iterator, boxSize, fileOffset, parsedBoxes, options, }) => {
|
|
62
|
+
const parseMdatPartially = async ({ iterator, boxSize, fileOffset, parsedBoxes, options, signal, }) => {
|
|
62
63
|
const box = await (0, mdat_1.parseMdat)({
|
|
63
64
|
data: iterator,
|
|
64
65
|
size: boxSize,
|
|
65
66
|
fileOffset,
|
|
66
67
|
existingBoxes: parsedBoxes,
|
|
67
68
|
options,
|
|
69
|
+
signal,
|
|
70
|
+
maySkipSampleProcessing: options.supportsContentRange,
|
|
68
71
|
});
|
|
69
|
-
if (box.
|
|
72
|
+
if ((box.status === 'samples-processed' || box.status === 'samples-buffered') &&
|
|
70
73
|
box.fileOffset + boxSize === iterator.counter.getOffset()) {
|
|
71
74
|
return {
|
|
72
75
|
type: 'complete',
|
|
@@ -82,7 +85,7 @@ const parseMdatPartially = async ({ iterator, boxSize, fileOffset, parsedBoxes,
|
|
|
82
85
|
};
|
|
83
86
|
};
|
|
84
87
|
exports.parseMdatPartially = parseMdatPartially;
|
|
85
|
-
const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options, littleEndian, }) => {
|
|
88
|
+
const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options, littleEndian, signal, }) => {
|
|
86
89
|
var _a, _b;
|
|
87
90
|
const fileOffset = iterator.counter.getOffset();
|
|
88
91
|
const bytesRemaining = iterator.bytesRemaining();
|
|
@@ -113,7 +116,8 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
113
116
|
const boxSize = boxSizeRaw === 1 ? iterator.getEightByteNumber(littleEndian) : boxSizeRaw;
|
|
114
117
|
if (bytesRemaining < boxSize) {
|
|
115
118
|
if (boxType === 'mdat') {
|
|
116
|
-
const shouldSkip = options.canSkipVideoData || !(0, get_tracks_1.hasTracks)(parsedBoxes)
|
|
119
|
+
const shouldSkip = (options.canSkipVideoData || !(0, get_tracks_1.hasTracks)(parsedBoxes)) &&
|
|
120
|
+
options.supportsContentRange;
|
|
117
121
|
if (shouldSkip) {
|
|
118
122
|
const skipTo = fileOffset + boxSize;
|
|
119
123
|
const bytesToSkip = skipTo - iterator.counter.getOffset();
|
|
@@ -125,7 +129,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
125
129
|
type: 'mdat-box',
|
|
126
130
|
boxSize,
|
|
127
131
|
fileOffset,
|
|
128
|
-
|
|
132
|
+
status: 'samples-skipped',
|
|
129
133
|
},
|
|
130
134
|
size: boxSize,
|
|
131
135
|
skipTo: fileOffset + boxSize,
|
|
@@ -139,6 +143,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
139
143
|
fileOffset,
|
|
140
144
|
parsedBoxes,
|
|
141
145
|
options,
|
|
146
|
+
signal,
|
|
142
147
|
});
|
|
143
148
|
}
|
|
144
149
|
}
|
|
@@ -212,6 +217,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
212
217
|
offset: fileOffset,
|
|
213
218
|
size: boxSize,
|
|
214
219
|
options,
|
|
220
|
+
signal,
|
|
215
221
|
});
|
|
216
222
|
return {
|
|
217
223
|
type: 'complete',
|
|
@@ -306,6 +312,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
306
312
|
size: boxSize,
|
|
307
313
|
options,
|
|
308
314
|
littleEndian,
|
|
315
|
+
signal,
|
|
309
316
|
});
|
|
310
317
|
return {
|
|
311
318
|
type: 'complete',
|
|
@@ -320,6 +327,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
320
327
|
offset: fileOffset,
|
|
321
328
|
size: boxSize,
|
|
322
329
|
options,
|
|
330
|
+
signal,
|
|
323
331
|
});
|
|
324
332
|
return {
|
|
325
333
|
type: 'complete',
|
|
@@ -334,6 +342,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
334
342
|
size: boxSize,
|
|
335
343
|
offsetAtStart: fileOffset,
|
|
336
344
|
options,
|
|
345
|
+
signal,
|
|
337
346
|
});
|
|
338
347
|
const transformedTrack = (0, make_track_1.makeBaseMediaTrack)(box);
|
|
339
348
|
if (transformedTrack) {
|
|
@@ -449,7 +458,12 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
449
458
|
fileOffset,
|
|
450
459
|
existingBoxes: parsedBoxes,
|
|
451
460
|
options,
|
|
461
|
+
signal,
|
|
462
|
+
maySkipSampleProcessing: options.supportsContentRange,
|
|
452
463
|
});
|
|
464
|
+
if (box === null) {
|
|
465
|
+
throw new Error('Unexpected null');
|
|
466
|
+
}
|
|
453
467
|
return {
|
|
454
468
|
type: 'complete',
|
|
455
469
|
box,
|
|
@@ -464,6 +478,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
464
478
|
bytesRemainingInBox,
|
|
465
479
|
options,
|
|
466
480
|
littleEndian,
|
|
481
|
+
signal,
|
|
467
482
|
});
|
|
468
483
|
return {
|
|
469
484
|
type: 'complete',
|
|
@@ -479,7 +494,7 @@ const processBox = async ({ iterator, allowIncompleteBoxes, parsedBoxes, options
|
|
|
479
494
|
};
|
|
480
495
|
};
|
|
481
496
|
exports.processBox = processBox;
|
|
482
|
-
const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBoxes, options, continueMdat, littleEndian, }) => {
|
|
497
|
+
const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBoxes, options, continueMdat, littleEndian, signal, }) => {
|
|
483
498
|
let boxes = initialBoxes;
|
|
484
499
|
const initialOffset = iterator.counter.getOffset();
|
|
485
500
|
const alreadyHasMdat = boxes.find((b) => b.type === 'mdat-box');
|
|
@@ -492,6 +507,7 @@ const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBox
|
|
|
492
507
|
fileOffset: continueMdat.fileOffset,
|
|
493
508
|
parsedBoxes: initialBoxes,
|
|
494
509
|
options,
|
|
510
|
+
signal,
|
|
495
511
|
})
|
|
496
512
|
: await (0, exports.processBox)({
|
|
497
513
|
iterator,
|
|
@@ -499,6 +515,7 @@ const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBox
|
|
|
499
515
|
parsedBoxes: initialBoxes,
|
|
500
516
|
options,
|
|
501
517
|
littleEndian,
|
|
518
|
+
signal,
|
|
502
519
|
});
|
|
503
520
|
if (result.type === 'incomplete') {
|
|
504
521
|
if (Number.isFinite(maxBytes)) {
|
|
@@ -516,6 +533,7 @@ const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBox
|
|
|
516
533
|
options,
|
|
517
534
|
continueMdat: false,
|
|
518
535
|
littleEndian,
|
|
536
|
+
signal,
|
|
519
537
|
});
|
|
520
538
|
},
|
|
521
539
|
skipTo: null,
|
|
@@ -534,6 +552,7 @@ const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBox
|
|
|
534
552
|
options,
|
|
535
553
|
continueMdat: result,
|
|
536
554
|
littleEndian,
|
|
555
|
+
signal,
|
|
537
556
|
}));
|
|
538
557
|
},
|
|
539
558
|
skipTo: null,
|
|
@@ -542,12 +561,19 @@ const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBox
|
|
|
542
561
|
if (result.box.type === 'mdat-box' && alreadyHasMdat) {
|
|
543
562
|
boxes = boxes.filter((b) => b.type !== 'mdat-box');
|
|
544
563
|
boxes.push(result.box);
|
|
564
|
+
iterator.allowDiscard();
|
|
565
|
+
if (result.box.status !== 'samples-processed') {
|
|
566
|
+
throw new Error('unexpected');
|
|
567
|
+
}
|
|
545
568
|
break;
|
|
546
569
|
}
|
|
547
570
|
else {
|
|
548
571
|
boxes.push(result.box);
|
|
549
572
|
}
|
|
550
573
|
if (result.skipTo !== null) {
|
|
574
|
+
if (!options.supportsContentRange) {
|
|
575
|
+
throw new Error('Content-Range header is not supported by the reader, but was asked to seek');
|
|
576
|
+
}
|
|
551
577
|
return {
|
|
552
578
|
status: 'incomplete',
|
|
553
579
|
segments: boxes,
|
|
@@ -560,30 +586,58 @@ const parseBoxes = async ({ iterator, maxBytes, allowIncompleteBoxes, initialBox
|
|
|
560
586
|
options,
|
|
561
587
|
continueMdat: false,
|
|
562
588
|
littleEndian,
|
|
589
|
+
signal,
|
|
563
590
|
});
|
|
564
591
|
},
|
|
565
592
|
skipTo: result.skipTo,
|
|
566
593
|
};
|
|
567
594
|
}
|
|
595
|
+
if (iterator.bytesRemaining() < 0) {
|
|
596
|
+
return {
|
|
597
|
+
status: 'incomplete',
|
|
598
|
+
segments: boxes,
|
|
599
|
+
continueParsing: () => {
|
|
600
|
+
return (0, exports.parseBoxes)({
|
|
601
|
+
iterator,
|
|
602
|
+
maxBytes,
|
|
603
|
+
allowIncompleteBoxes,
|
|
604
|
+
initialBoxes: boxes,
|
|
605
|
+
options,
|
|
606
|
+
continueMdat: false,
|
|
607
|
+
littleEndian,
|
|
608
|
+
signal,
|
|
609
|
+
});
|
|
610
|
+
},
|
|
611
|
+
skipTo: null,
|
|
612
|
+
};
|
|
613
|
+
}
|
|
568
614
|
iterator.removeBytesRead();
|
|
569
615
|
}
|
|
570
|
-
const mdatState = (0, traversal_1.
|
|
571
|
-
|
|
616
|
+
const mdatState = (0, traversal_1.getMdatBox)(boxes);
|
|
617
|
+
const skipped = (mdatState === null || mdatState === void 0 ? void 0 : mdatState.status) === 'samples-skipped' &&
|
|
618
|
+
!options.canSkipVideoData &&
|
|
619
|
+
options.supportsContentRange;
|
|
620
|
+
const buffered = (mdatState === null || mdatState === void 0 ? void 0 : mdatState.status) === 'samples-buffered' && !options.canSkipVideoData;
|
|
621
|
+
if (skipped || buffered) {
|
|
572
622
|
return {
|
|
573
623
|
status: 'incomplete',
|
|
574
624
|
segments: boxes,
|
|
575
625
|
continueParsing: () => {
|
|
626
|
+
if (buffered) {
|
|
627
|
+
iterator.skipTo(mdatState.fileOffset, false);
|
|
628
|
+
}
|
|
576
629
|
return (0, exports.parseBoxes)({
|
|
577
630
|
iterator,
|
|
578
631
|
maxBytes,
|
|
579
|
-
allowIncompleteBoxes,
|
|
632
|
+
allowIncompleteBoxes: false,
|
|
580
633
|
initialBoxes: boxes,
|
|
581
634
|
options,
|
|
582
635
|
continueMdat: false,
|
|
583
636
|
littleEndian,
|
|
637
|
+
signal,
|
|
584
638
|
});
|
|
585
639
|
},
|
|
586
|
-
skipTo: mdatState.fileOffset,
|
|
640
|
+
skipTo: skipped ? mdatState.fileOffset : null,
|
|
587
641
|
};
|
|
588
642
|
}
|
|
589
643
|
return {
|
|
@@ -11,10 +11,10 @@ const parseAvcc = ({ data, size, }) => {
|
|
|
11
11
|
const level = data.getUint8();
|
|
12
12
|
const str = `${profile.toString(16).padStart(2, '0')}${profileCompatibility.toString(16).padStart(2, '0')}${level.toString(16).padStart(2, '0')}`;
|
|
13
13
|
data.counter.decrement(4);
|
|
14
|
-
const
|
|
14
|
+
const privateData = data.getSlice(size - 8);
|
|
15
15
|
return {
|
|
16
16
|
type: 'avcc-box',
|
|
17
|
-
|
|
17
|
+
privateData,
|
|
18
18
|
configurationString: str,
|
|
19
19
|
};
|
|
20
20
|
};
|
|
@@ -13,12 +13,9 @@ const parseCtts = ({ iterator, offset, size, }) => {
|
|
|
13
13
|
const sampleCount = iterator.getUint32();
|
|
14
14
|
// V1 = signed, V0 = unsigned
|
|
15
15
|
// however some files are buggy
|
|
16
|
-
// Let's do the same thing as mp4box
|
|
16
|
+
// Let's do the same thing as mp4box
|
|
17
17
|
// https://github.com/gpac/mp4box.js/blob/c6cc468145bc5b031b866446111f29c8b620dbe6/src/parsing/ctts.js#L2
|
|
18
|
-
const sampleOffset = iterator.
|
|
19
|
-
if (sampleOffset < 0) {
|
|
20
|
-
throw new Error('ctts box uses negative values without using version 1');
|
|
21
|
-
}
|
|
18
|
+
const sampleOffset = iterator.getInt32();
|
|
22
19
|
entries.push({
|
|
23
20
|
sampleCount,
|
|
24
21
|
sampleOffset,
|
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseHvcc = void 0;
|
|
4
4
|
const make_hvc1_codec_strings_1 = require("../../../make-hvc1-codec-strings");
|
|
5
5
|
const parseHvcc = ({ data, size, offset, }) => {
|
|
6
|
-
const
|
|
6
|
+
const privateData = data.getSlice(size - 8);
|
|
7
7
|
data.counter.decrement(size - 8);
|
|
8
8
|
const constraintString = (0, make_hvc1_codec_strings_1.getHvc1CodecString)(data);
|
|
9
9
|
const remaining = size - (data.counter.getOffset() - offset);
|
|
10
10
|
data.discard(remaining);
|
|
11
11
|
return {
|
|
12
12
|
type: 'hvcc-box',
|
|
13
|
-
|
|
13
|
+
privateData,
|
|
14
14
|
configurationString: constraintString,
|
|
15
15
|
};
|
|
16
16
|
};
|
|
@@ -8,10 +8,11 @@ export interface MebxBox extends BaseBox {
|
|
|
8
8
|
format: string;
|
|
9
9
|
children: AnySegment[];
|
|
10
10
|
}
|
|
11
|
-
export declare const parseMebx: ({ iterator, offset, size, options, littleEndian, }: {
|
|
11
|
+
export declare const parseMebx: ({ iterator, offset, size, options, littleEndian, signal, }: {
|
|
12
12
|
iterator: BufferIterator;
|
|
13
13
|
offset: number;
|
|
14
14
|
size: number;
|
|
15
15
|
options: ParserContext;
|
|
16
16
|
littleEndian: boolean;
|
|
17
|
+
signal: AbortSignal | null;
|
|
17
18
|
}) => Promise<MebxBox>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseMebx = void 0;
|
|
4
4
|
const process_box_1 = require("../process-box");
|
|
5
|
-
const parseMebx = async ({ iterator, offset, size, options, littleEndian, }) => {
|
|
5
|
+
const parseMebx = async ({ iterator, offset, size, options, littleEndian, signal, }) => {
|
|
6
6
|
// reserved, 6 bit
|
|
7
7
|
iterator.discard(6);
|
|
8
8
|
const dataReferenceIndex = iterator.getUint16();
|
|
@@ -14,6 +14,7 @@ const parseMebx = async ({ iterator, offset, size, options, littleEndian, }) =>
|
|
|
14
14
|
options,
|
|
15
15
|
continueMdat: false,
|
|
16
16
|
littleEndian,
|
|
17
|
+
signal,
|
|
17
18
|
});
|
|
18
19
|
if (children.status === 'incomplete') {
|
|
19
20
|
throw new Error('Incomplete boxes are not allowed');
|
|
@@ -48,13 +48,15 @@ export type Sample = AudioSample | VideoSample | UnknownSample;
|
|
|
48
48
|
type SampleAndNext = {
|
|
49
49
|
sample: Sample | null;
|
|
50
50
|
};
|
|
51
|
-
export declare const processSample: ({ iterator, options, }: {
|
|
51
|
+
export declare const processSample: ({ iterator, options, signal, }: {
|
|
52
52
|
iterator: BufferIterator;
|
|
53
53
|
options: ParserContext;
|
|
54
|
+
signal: AbortSignal | null;
|
|
54
55
|
}) => Promise<SampleAndNext>;
|
|
55
|
-
export declare const parseSamples: ({ iterator, maxBytes, options, }: {
|
|
56
|
+
export declare const parseSamples: ({ iterator, maxBytes, options, signal, }: {
|
|
56
57
|
iterator: BufferIterator;
|
|
57
58
|
maxBytes: number;
|
|
58
59
|
options: ParserContext;
|
|
60
|
+
signal: AbortSignal | null;
|
|
59
61
|
}) => Promise<Sample[]>;
|
|
60
62
|
export {};
|