@remotion/media-parser 4.0.276 → 4.0.278
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/aac-codecprivate.js +13 -6
- package/dist/add-avc-profile-to-track.js +9 -5
- package/dist/buffer-iterator.js +13 -8
- package/dist/combine-uint8-arrays.js +5 -1
- package/dist/containers/aac/parse-aac.js +13 -9
- package/dist/containers/aac/types.js +2 -1
- package/dist/containers/avc/codec-string.js +5 -1
- package/dist/containers/avc/color.js +9 -3
- package/dist/containers/avc/create-sps-pps-data.js +9 -5
- package/dist/containers/avc/interpret-sps.js +13 -7
- package/dist/containers/avc/key.js +5 -1
- package/dist/containers/avc/parse-avc.js +7 -3
- package/dist/containers/avc/sps-and-pps.js +5 -1
- package/dist/containers/flac/get-block-size.js +5 -1
- package/dist/containers/flac/get-channel-count.js +5 -1
- package/dist/containers/flac/get-duration-from-flac.js +5 -1
- package/dist/containers/flac/get-metadata-from-flac.js +5 -1
- package/dist/containers/flac/get-sample-rate.js +5 -1
- package/dist/containers/flac/parse-flac-frame.js +19 -14
- package/dist/containers/flac/parse-flac.js +19 -15
- package/dist/containers/flac/parse-header.js +5 -1
- package/dist/containers/flac/parse-metadata.js +5 -1
- package/dist/containers/flac/parse-streaminfo.js +7 -3
- package/dist/containers/flac/parse-unknown-block.js +5 -1
- package/dist/containers/flac/types.js +2 -1
- package/dist/containers/iso-base-media/base-media-box.js +2 -1
- package/dist/containers/iso-base-media/base-type.js +2 -1
- package/dist/containers/iso-base-media/esds/decoder-specific-config.js +5 -1
- package/dist/containers/iso-base-media/esds/esds-descriptors.js +10 -5
- package/dist/containers/iso-base-media/esds/esds.js +7 -3
- package/dist/containers/iso-base-media/ftyp.js +5 -1
- package/dist/containers/iso-base-media/get-actual-number-of-channels.js +8 -4
- package/dist/containers/iso-base-media/get-children.js +7 -3
- package/dist/containers/iso-base-media/get-keyframes.js +11 -7
- package/dist/containers/iso-base-media/get-moov-atom.js +17 -13
- package/dist/containers/iso-base-media/get-sample-positions-from-track.js +24 -20
- package/dist/containers/iso-base-media/get-video-codec-from-iso-track.js +7 -3
- package/dist/containers/iso-base-media/make-track.js +34 -30
- package/dist/containers/iso-base-media/mdat/mdat.js +20 -16
- package/dist/containers/iso-base-media/mdhd.js +5 -1
- package/dist/containers/iso-base-media/meta/hdlr.js +5 -1
- package/dist/containers/iso-base-media/meta/ilst.js +5 -1
- package/dist/containers/iso-base-media/moov/moov.js +7 -3
- package/dist/containers/iso-base-media/mvhd.js +11 -7
- package/dist/containers/iso-base-media/parse-boxes.js +9 -5
- package/dist/containers/iso-base-media/parse-icc-profile.js +8 -4
- package/dist/containers/iso-base-media/process-box.js +67 -63
- package/dist/containers/iso-base-media/stsd/av1c.js +5 -1
- package/dist/containers/iso-base-media/stsd/avcc.js +5 -1
- package/dist/containers/iso-base-media/stsd/colr.js +7 -3
- package/dist/containers/iso-base-media/stsd/ctts.js +5 -1
- package/dist/containers/iso-base-media/stsd/hvcc.js +7 -3
- package/dist/containers/iso-base-media/stsd/keys.js +5 -1
- package/dist/containers/iso-base-media/stsd/mebx.js +7 -3
- package/dist/containers/iso-base-media/stsd/pasp.js +5 -1
- package/dist/containers/iso-base-media/stsd/samples.js +13 -8
- package/dist/containers/iso-base-media/stsd/stco.js +5 -1
- package/dist/containers/iso-base-media/stsd/stsc.js +5 -1
- package/dist/containers/iso-base-media/stsd/stsd.js +7 -3
- package/dist/containers/iso-base-media/stsd/stss.js +5 -1
- package/dist/containers/iso-base-media/stsd/stsz.js +5 -1
- package/dist/containers/iso-base-media/stsd/stts.js +5 -1
- package/dist/containers/iso-base-media/tfdt.js +5 -1
- package/dist/containers/iso-base-media/tfhd.js +5 -1
- package/dist/containers/iso-base-media/tkhd.js +8 -4
- package/dist/containers/iso-base-media/to-date.js +5 -1
- package/dist/containers/iso-base-media/trak/trak.js +7 -3
- package/dist/containers/iso-base-media/traversal.js +57 -33
- package/dist/containers/iso-base-media/trun.js +5 -1
- package/dist/containers/iso-base-media/void-box.js +2 -1
- package/dist/containers/m3u/after-manifest-fetch.js +15 -11
- package/dist/containers/m3u/fetch-m3u8-stream.js +7 -3
- package/dist/containers/m3u/get-chunks.js +5 -1
- package/dist/containers/m3u/get-duration-from-m3u.js +8 -4
- package/dist/containers/m3u/get-playlist.js +12 -6
- package/dist/containers/m3u/get-streams.js +9 -3
- package/dist/containers/m3u/iterate-over-segment-files.js +15 -11
- package/dist/containers/m3u/parse-directive.js +10 -6
- package/dist/containers/m3u/parse-m3u-manifest.js +7 -3
- package/dist/containers/m3u/parse-m3u-media-directive.js +10 -5
- package/dist/containers/m3u/parse-m3u.js +11 -7
- package/dist/containers/m3u/parse-m3u8-text.js +7 -3
- package/dist/containers/m3u/parse-stream-inf.js +7 -2
- package/dist/containers/m3u/run-over-m3u.js +13 -9
- package/dist/containers/m3u/sample-sorter.js +8 -4
- package/dist/containers/m3u/select-stream.js +11 -4
- package/dist/containers/m3u/types.js +2 -1
- package/dist/containers/mp3/get-duration.js +9 -5
- package/dist/containers/mp3/get-frame-length.js +7 -2
- package/dist/containers/mp3/get-metadata-from-mp3.js +5 -1
- package/dist/containers/mp3/id3-v1.js +5 -1
- package/dist/containers/mp3/id3.js +5 -1
- package/dist/containers/mp3/parse-mp3.js +11 -7
- package/dist/containers/mp3/parse-mpeg-header.js +14 -10
- package/dist/containers/mp3/samples-per-mpeg-file.js +5 -1
- package/dist/containers/riff/expect-riff-box.js +15 -11
- package/dist/containers/riff/get-duration.js +12 -7
- package/dist/containers/riff/get-tracks-from-avi.js +28 -20
- package/dist/containers/riff/is-movi.js +5 -1
- package/dist/containers/riff/parse-avih.js +5 -1
- package/dist/containers/riff/parse-isft.js +5 -1
- package/dist/containers/riff/parse-list-box.js +7 -3
- package/dist/containers/riff/parse-movi.js +18 -13
- package/dist/containers/riff/parse-riff-body.js +13 -9
- package/dist/containers/riff/parse-riff-box.js +13 -9
- package/dist/containers/riff/parse-riff-header.js +5 -1
- package/dist/containers/riff/parse-riff.js +9 -5
- package/dist/containers/riff/parse-strf.js +5 -1
- package/dist/containers/riff/parse-strh.js +7 -3
- package/dist/containers/riff/parse-video-section.js +11 -7
- package/dist/containers/riff/riff-box.js +2 -1
- package/dist/containers/riff/timescale.js +4 -1
- package/dist/containers/riff/traversal.js +15 -7
- package/dist/containers/transport-stream/adts-header.js +10 -6
- package/dist/containers/transport-stream/boxes.js +2 -1
- package/dist/containers/transport-stream/discard-rest-of-packet.js +7 -2
- package/dist/containers/transport-stream/find-separator.js +4 -1
- package/dist/containers/transport-stream/get-tracks.js +16 -10
- package/dist/containers/transport-stream/handle-aac-packet.js +16 -12
- package/dist/containers/transport-stream/handle-avc-packet.js +26 -22
- package/dist/containers/transport-stream/next-pes-header-store.js +5 -1
- package/dist/containers/transport-stream/parse-packet.js +17 -13
- package/dist/containers/transport-stream/parse-pat.js +10 -5
- package/dist/containers/transport-stream/parse-pes.js +5 -1
- package/dist/containers/transport-stream/parse-pmt.js +7 -3
- package/dist/containers/transport-stream/parse-stream-packet.js +17 -13
- package/dist/containers/transport-stream/parse-transport-stream.js +9 -5
- package/dist/containers/transport-stream/process-stream-buffers.js +17 -12
- package/dist/containers/transport-stream/traversal.js +10 -4
- package/dist/containers/wav/get-duration-from-wav.js +8 -3
- package/dist/containers/wav/get-metadata-from-wav.js +5 -1
- package/dist/containers/wav/parse-data.js +9 -5
- package/dist/containers/wav/parse-fmt.js +7 -3
- package/dist/containers/wav/parse-header.js +5 -1
- package/dist/containers/wav/parse-id3.js +5 -1
- package/dist/containers/wav/parse-list.js +5 -1
- package/dist/containers/wav/parse-video-section.js +7 -3
- package/dist/containers/wav/parse-wav.js +19 -15
- package/dist/containers/wav/types.js +2 -1
- package/dist/containers/webm/allowed-partial-segments.js +4 -1
- package/dist/containers/webm/av1-codec-private.js +7 -3
- package/dist/containers/webm/color.js +10 -6
- package/dist/containers/webm/description.js +10 -6
- package/dist/containers/webm/get-ready-tracks.js +18 -13
- package/dist/containers/webm/get-sample-from-block.js +16 -12
- package/dist/containers/webm/make-track.js +48 -43
- package/dist/containers/webm/parse-ebml.js +19 -14
- package/dist/containers/webm/parse-webm-header.js +7 -3
- package/dist/containers/webm/segments/all-segments.js +173 -168
- package/dist/containers/webm/segments/block-simple-block-flags.js +8 -4
- package/dist/containers/webm/segments/track-entry.js +5 -1
- package/dist/containers/webm/segments.js +13 -9
- package/dist/containers/webm/traversal.js +67 -37
- package/dist/convert-audio-or-video-sample.js +5 -1
- package/dist/download-and-parse-media.js +14 -10
- package/dist/emit-available-info.js +38 -34
- package/dist/emitter.js +5 -1
- package/dist/errors.js +15 -6
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/worker.mjs +4 -5
- package/dist/fetch.js +17 -1
- package/dist/file-types/bmp.js +7 -3
- package/dist/file-types/detect-file-type.js +38 -24
- package/dist/file-types/index.js +26 -22
- package/dist/file-types/jpeg.js +9 -4
- package/dist/file-types/pdf.js +7 -3
- package/dist/file-types/png.js +9 -4
- package/dist/file-types/webp.js +7 -3
- package/dist/forward-controller.js +5 -1
- package/dist/get-audio-codec.js +38 -25
- package/dist/get-container.js +10 -5
- package/dist/get-dimensions.js +13 -8
- package/dist/get-duration.js +34 -27
- package/dist/get-fields-from-callbacks.js +5 -1
- package/dist/get-fps.js +34 -24
- package/dist/get-is-hdr.js +10 -5
- package/dist/get-keyframes.js +11 -6
- package/dist/get-location.js +9 -4
- package/dist/get-number-of-audio-channels.js +7 -2
- package/dist/get-sample-aspect-ratio.js +30 -17
- package/dist/get-sample-positions-from-lpcm.js +9 -5
- package/dist/get-sample-positions.js +5 -1
- package/dist/get-sample-rate.js +7 -2
- package/dist/get-tracks.js +40 -29
- package/dist/get-video-codec.js +34 -26
- package/dist/has-all-info.js +38 -33
- package/dist/index.js +47 -32
- package/dist/init-video.js +28 -24
- package/dist/internal-parse-media.js +39 -35
- package/dist/is-audio-structure.js +5 -1
- package/dist/log.js +12 -8
- package/dist/make-hvc1-codec-strings.js +5 -1
- package/dist/media-parser-controller.js +11 -7
- package/dist/metadata/get-metadata.js +22 -17
- package/dist/metadata/metadata-from-iso.js +17 -12
- package/dist/metadata/metadata-from-matroska.js +7 -3
- package/dist/metadata/metadata-from-riff.js +7 -3
- package/dist/node-writer.js +17 -1
- package/dist/node.js +17 -1
- package/dist/options.js +2 -1
- package/dist/parse-media-on-worker-entry.js +7 -3
- package/dist/parse-media.js +12 -8
- package/dist/parse-result.js +2 -1
- package/dist/pause-signal.js +5 -1
- package/dist/perform-seek.js +10 -6
- package/dist/readers/fetch/get-body-and-reader.js +5 -1
- package/dist/readers/fetch/resolve-url.js +5 -1
- package/dist/readers/from-fetch.js +21 -14
- package/dist/readers/from-node.js +23 -17
- package/dist/readers/from-web-file.js +13 -7
- package/dist/readers/reader.js +2 -1
- package/dist/readers/universal.js +16 -13
- package/dist/readers/web.js +12 -9
- package/dist/register-track.js +15 -9
- package/dist/remotion-license-acknowledge.js +8 -4
- package/dist/run-parse-iteration.js +25 -21
- package/dist/samples-from-moof.js +10 -6
- package/dist/skip.js +5 -1
- package/dist/state/aac-state.js +5 -1
- package/dist/state/can-skip-tracks.js +8 -3
- package/dist/state/emitted-fields.js +5 -1
- package/dist/state/flac-state.js +5 -1
- package/dist/state/has-tracks-section.js +7 -3
- package/dist/state/images.js +5 -1
- package/dist/state/iso-base-media/cached-sample-positions.js +13 -8
- package/dist/state/iso-base-media/iso-state.js +9 -5
- package/dist/state/iso-base-media/moov-box.js +5 -1
- package/dist/state/keyframes.js +5 -1
- package/dist/state/m3u-state.js +9 -5
- package/dist/state/may-skip-video-data.js +7 -3
- package/dist/state/mp3.js +5 -1
- package/dist/state/need-samples-for-fields.js +5 -1
- package/dist/state/parser-state.js +39 -35
- package/dist/state/riff.js +5 -1
- package/dist/state/sample-callbacks.js +12 -8
- package/dist/state/slow-duration-fps.js +5 -1
- package/dist/state/structure.js +5 -1
- package/dist/state/transport-stream.js +7 -3
- package/dist/state/video-section.js +5 -1
- package/dist/state/webm.js +9 -5
- package/dist/throttled-progress.js +5 -1
- package/dist/truthy.js +4 -1
- package/dist/universal.js +5 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +4 -1
- package/dist/web.js +5 -1
- package/dist/webcodec-sample-types.js +2 -1
- package/dist/worker/forward-controller.js +7 -3
- package/dist/worker/serialize-error.js +19 -14
- package/dist/worker/worker-types.js +2 -1
- package/dist/worker-server-entry.js +5 -3
- package/dist/worker-server.js +16 -12
- package/dist/worker-web-entry.js +5 -3
- package/dist/worker.d.ts +3 -2
- package/dist/worker.js +11 -2
- package/dist/worker.module.d.ts +4 -0
- package/dist/worker.module.js +16 -0
- package/dist/writers/node.js +23 -16
- package/dist/writers/writer.js +2 -1
- package/package.json +3 -3
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseHeader = void 0;
|
|
4
|
+
const parseHeader = ({ state, }) => {
|
|
2
5
|
const fileSize = state.iterator.getUint32Le();
|
|
3
6
|
const fileType = state.iterator.getByteString(4, false);
|
|
4
7
|
if (fileType !== 'WAVE') {
|
|
@@ -11,3 +14,4 @@ export const parseHeader = ({ state, }) => {
|
|
|
11
14
|
state.getWavStructure().boxes.push(header);
|
|
12
15
|
return Promise.resolve(null);
|
|
13
16
|
};
|
|
17
|
+
exports.parseHeader = parseHeader;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseId3 = void 0;
|
|
1
4
|
// non-standard, we discard it in favor of LIST boxes
|
|
2
|
-
|
|
5
|
+
const parseId3 = ({ state, }) => {
|
|
3
6
|
const { iterator } = state;
|
|
4
7
|
const id3Size = iterator.getUint32Le();
|
|
5
8
|
iterator.discard(id3Size);
|
|
@@ -9,3 +12,4 @@ export const parseId3 = ({ state, }) => {
|
|
|
9
12
|
state.getWavStructure().boxes.push(id3Box);
|
|
10
13
|
return Promise.resolve(null);
|
|
11
14
|
};
|
|
15
|
+
exports.parseId3 = parseId3;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseList = void 0;
|
|
4
|
+
const parseList = ({ state, }) => {
|
|
2
5
|
const { iterator } = state;
|
|
3
6
|
const ckSize = iterator.getUint32Le(); // chunkSize
|
|
4
7
|
const box = iterator.startBox(ckSize);
|
|
@@ -34,3 +37,4 @@ export const parseList = ({ state, }) => {
|
|
|
34
37
|
box.expectNoMoreBytes();
|
|
35
38
|
return Promise.resolve(null);
|
|
36
39
|
};
|
|
40
|
+
exports.parseList = parseList;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseVideoSection = void 0;
|
|
4
|
+
const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
|
|
5
|
+
const parseVideoSection = async ({ state, }) => {
|
|
3
6
|
const { iterator } = state;
|
|
4
7
|
const structure = state.getWavStructure();
|
|
5
8
|
const videoSection = state.videoSection.getVideoSection();
|
|
@@ -15,7 +18,7 @@ export const parseVideoSection = async ({ state, }) => {
|
|
|
15
18
|
const duration = toRead / (fmtBox.sampleRate * fmtBox.blockAlign);
|
|
16
19
|
const timestamp = (offset - videoSection.start) / (fmtBox.sampleRate * fmtBox.blockAlign);
|
|
17
20
|
const data = iterator.getSlice(toRead);
|
|
18
|
-
await state.callbacks.onAudioSample(0, convertAudioOrVideoSampleToWebCodecsTimestamps({
|
|
21
|
+
await state.callbacks.onAudioSample(0, (0, convert_audio_or_video_sample_1.convertAudioOrVideoSampleToWebCodecsTimestamps)({
|
|
19
22
|
cts: timestamp,
|
|
20
23
|
dts: timestamp,
|
|
21
24
|
data,
|
|
@@ -28,3 +31,4 @@ export const parseVideoSection = async ({ state, }) => {
|
|
|
28
31
|
}, 1));
|
|
29
32
|
return null;
|
|
30
33
|
};
|
|
34
|
+
exports.parseVideoSection = parseVideoSection;
|
|
@@ -1,32 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseWav = void 0;
|
|
4
|
+
const log_1 = require("../../log");
|
|
5
|
+
const parse_data_1 = require("./parse-data");
|
|
6
|
+
const parse_fmt_1 = require("./parse-fmt");
|
|
7
|
+
const parse_header_1 = require("./parse-header");
|
|
8
|
+
const parse_id3_1 = require("./parse-id3");
|
|
9
|
+
const parse_list_1 = require("./parse-list");
|
|
10
|
+
const parse_video_section_1 = require("./parse-video-section");
|
|
11
|
+
const parseWav = (state) => {
|
|
9
12
|
const { iterator } = state;
|
|
10
13
|
const insideVideoSection = state.videoSection.isInVideoSectionState(iterator);
|
|
11
14
|
if (insideVideoSection === 'in-section') {
|
|
12
|
-
return parseVideoSection({ state });
|
|
15
|
+
return (0, parse_video_section_1.parseVideoSection)({ state });
|
|
13
16
|
}
|
|
14
17
|
const type = iterator.getByteString(4, false);
|
|
15
|
-
Log.trace(state.logLevel, `Processing box type ${type}`);
|
|
18
|
+
log_1.Log.trace(state.logLevel, `Processing box type ${type}`);
|
|
16
19
|
if (type === 'RIFF') {
|
|
17
|
-
return parseHeader({ state });
|
|
20
|
+
return (0, parse_header_1.parseHeader)({ state });
|
|
18
21
|
}
|
|
19
22
|
if (type === 'fmt') {
|
|
20
|
-
return parseFmt({ state });
|
|
23
|
+
return (0, parse_fmt_1.parseFmt)({ state });
|
|
21
24
|
}
|
|
22
25
|
if (type === 'data') {
|
|
23
|
-
return parseData({ state });
|
|
26
|
+
return (0, parse_data_1.parseData)({ state });
|
|
24
27
|
}
|
|
25
28
|
if (type === 'LIST') {
|
|
26
|
-
return parseList({ state });
|
|
29
|
+
return (0, parse_list_1.parseList)({ state });
|
|
27
30
|
}
|
|
28
31
|
if (type === 'id3') {
|
|
29
|
-
return parseId3({ state });
|
|
32
|
+
return (0, parse_id3_1.parseId3)({ state });
|
|
30
33
|
}
|
|
31
34
|
throw new Error(`Unknown WAV box type ${type}`);
|
|
32
35
|
};
|
|
36
|
+
exports.parseWav = parseWav;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAv1PrivateData = void 0;
|
|
4
|
+
const buffer_iterator_1 = require("../../buffer-iterator");
|
|
5
|
+
const parseAv1PrivateData = (data, colrAtom) => {
|
|
6
|
+
const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(data, data.byteLength);
|
|
4
7
|
iterator.startReadingBits();
|
|
5
8
|
if (iterator.getBits(1) !== 1) {
|
|
6
9
|
iterator.destroy();
|
|
@@ -89,3 +92,4 @@ export const parseAv1PrivateData = (data, colrAtom) => {
|
|
|
89
92
|
iterator.destroy();
|
|
90
93
|
return str;
|
|
91
94
|
};
|
|
95
|
+
exports.parseAv1PrivateData = parseAv1PrivateData;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseColorSegment = void 0;
|
|
4
|
+
const traversal_1 = require("./traversal");
|
|
5
|
+
const parseColorSegment = (colourSegment) => {
|
|
6
|
+
const transferCharacteristics = (0, traversal_1.getTransferCharacteristicsSegment)(colourSegment);
|
|
7
|
+
const matrixCoefficients = (0, traversal_1.getMatrixCoefficientsSegment)(colourSegment);
|
|
8
|
+
const primaries = (0, traversal_1.getPrimariesSegment)(colourSegment);
|
|
9
|
+
const range = (0, traversal_1.getRangeSegment)(colourSegment);
|
|
7
10
|
return {
|
|
8
11
|
transferCharacteristics: transferCharacteristics
|
|
9
12
|
? transferCharacteristics.value.value === 1
|
|
@@ -39,3 +42,4 @@ export const parseColorSegment = (colourSegment) => {
|
|
|
39
42
|
: null,
|
|
40
43
|
};
|
|
41
44
|
};
|
|
45
|
+
exports.parseColorSegment = parseColorSegment;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAudioDescription = void 0;
|
|
4
|
+
const buffer_iterator_1 = require("../../buffer-iterator");
|
|
5
|
+
const traversal_1 = require("./traversal");
|
|
6
|
+
const getAudioDescription = (track) => {
|
|
7
|
+
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
5
8
|
if (!codec || codec.value !== 'A_VORBIS') {
|
|
6
9
|
return undefined;
|
|
7
10
|
}
|
|
8
11
|
// how to parse vorbis private
|
|
9
12
|
// https://github.com/google/ExoPlayer/blob/dd430f7053a1a3958deea3ead6a0565150c06bfc/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java#L2466
|
|
10
|
-
const privateData = getPrivateData(track);
|
|
13
|
+
const privateData = (0, traversal_1.getPrivateData)(track);
|
|
11
14
|
if (!privateData) {
|
|
12
15
|
return undefined;
|
|
13
16
|
}
|
|
@@ -41,7 +44,7 @@ export const getAudioDescription = (track) => {
|
|
|
41
44
|
throw new Error('Error parsing vorbis codec private');
|
|
42
45
|
}
|
|
43
46
|
const vorbisBooks = privateData.slice(offset);
|
|
44
|
-
const bufferIterator = getArrayBufferIterator(vorbisInfo.slice(0), vorbisInfo.length);
|
|
47
|
+
const bufferIterator = (0, buffer_iterator_1.getArrayBufferIterator)(vorbisInfo.slice(0), vorbisInfo.length);
|
|
45
48
|
// type
|
|
46
49
|
bufferIterator.getUint8();
|
|
47
50
|
// vorbis
|
|
@@ -77,3 +80,4 @@ export const getAudioDescription = (track) => {
|
|
|
77
80
|
]);
|
|
78
81
|
return vorbisDescription;
|
|
79
82
|
};
|
|
83
|
+
exports.getAudioDescription = getAudioDescription;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.matroskaHasTracks = exports.getTracksFromMatroska = void 0;
|
|
4
|
+
const codec_string_1 = require("../avc/codec-string");
|
|
5
|
+
const make_track_1 = require("./make-track");
|
|
6
|
+
const traversal_1 = require("./traversal");
|
|
7
|
+
const getTracksFromMatroska = ({ state, }) => {
|
|
5
8
|
const webmState = state.webm;
|
|
6
9
|
const structure = state.getMatroskaStructure();
|
|
7
|
-
const mainSegment = getMainSegment(structure.boxes);
|
|
10
|
+
const mainSegment = (0, traversal_1.getMainSegment)(structure.boxes);
|
|
8
11
|
if (!mainSegment) {
|
|
9
12
|
throw new Error('No main segment');
|
|
10
13
|
}
|
|
11
|
-
const tracksSegment = getTracksSegment(mainSegment);
|
|
14
|
+
const tracksSegment = (0, traversal_1.getTracksSegment)(mainSegment);
|
|
12
15
|
if (!tracksSegment) {
|
|
13
16
|
throw new Error('No tracks segment');
|
|
14
17
|
}
|
|
@@ -21,19 +24,19 @@ export const getTracksFromMatroska = ({ state, }) => {
|
|
|
21
24
|
if (trackEntrySegment.type !== 'TrackEntry') {
|
|
22
25
|
throw new Error('Expected track entry segment');
|
|
23
26
|
}
|
|
24
|
-
const track = getTrack({
|
|
27
|
+
const track = (0, make_track_1.getTrack)({
|
|
25
28
|
track: trackEntrySegment,
|
|
26
29
|
timescale: webmState.getTimescale(),
|
|
27
30
|
});
|
|
28
31
|
if (!track) {
|
|
29
32
|
continue;
|
|
30
33
|
}
|
|
31
|
-
if (track.codec === NO_CODEC_PRIVATE_SHOULD_BE_DERIVED_FROM_SPS) {
|
|
34
|
+
if (track.codec === make_track_1.NO_CODEC_PRIVATE_SHOULD_BE_DERIVED_FROM_SPS) {
|
|
32
35
|
const avc = webmState.getAvcProfileForTrackNumber(track.trackId);
|
|
33
36
|
if (avc) {
|
|
34
37
|
resolvedTracks.push({
|
|
35
38
|
...track,
|
|
36
|
-
codec: getCodecStringFromSpsAndPps(avc),
|
|
39
|
+
codec: (0, codec_string_1.getCodecStringFromSpsAndPps)(avc),
|
|
37
40
|
});
|
|
38
41
|
}
|
|
39
42
|
else {
|
|
@@ -46,14 +49,16 @@ export const getTracksFromMatroska = ({ state, }) => {
|
|
|
46
49
|
}
|
|
47
50
|
return { missingInfo, resolved: resolvedTracks };
|
|
48
51
|
};
|
|
49
|
-
|
|
52
|
+
exports.getTracksFromMatroska = getTracksFromMatroska;
|
|
53
|
+
const matroskaHasTracks = (state) => {
|
|
50
54
|
const structure = state.getMatroskaStructure();
|
|
51
|
-
const mainSegment = getMainSegment(structure.boxes);
|
|
55
|
+
const mainSegment = (0, traversal_1.getMainSegment)(structure.boxes);
|
|
52
56
|
if (!mainSegment) {
|
|
53
57
|
return false;
|
|
54
58
|
}
|
|
55
|
-
return (getTracksSegment(mainSegment) !== null &&
|
|
56
|
-
getTracksFromMatroska({
|
|
59
|
+
return ((0, traversal_1.getTracksSegment)(mainSegment) !== null &&
|
|
60
|
+
(0, exports.getTracksFromMatroska)({
|
|
57
61
|
state,
|
|
58
62
|
}).missingInfo.length === 0);
|
|
59
63
|
};
|
|
64
|
+
exports.matroskaHasTracks = matroskaHasTracks;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSampleFromBlock = void 0;
|
|
4
|
+
const buffer_iterator_1 = require("../../buffer-iterator");
|
|
5
|
+
const parse_avc_1 = require("../avc/parse-avc");
|
|
6
|
+
const get_ready_tracks_1 = require("./get-ready-tracks");
|
|
7
|
+
const all_segments_1 = require("./segments/all-segments");
|
|
8
|
+
const block_simple_block_flags_1 = require("./segments/block-simple-block-flags");
|
|
6
9
|
const addAvcToTrackIfNecessary = ({ partialVideoSample, codec, state, trackNumber, }) => {
|
|
7
10
|
if (codec === 'V_MPEG4/ISO/AVC' &&
|
|
8
|
-
getTracksFromMatroska({ state }).missingInfo.length > 0) {
|
|
9
|
-
const parsed = parseAvc(partialVideoSample.data);
|
|
11
|
+
(0, get_ready_tracks_1.getTracksFromMatroska)({ state }).missingInfo.length > 0) {
|
|
12
|
+
const parsed = (0, parse_avc_1.parseAvc)(partialVideoSample.data);
|
|
10
13
|
for (const parse of parsed) {
|
|
11
14
|
if (parse.type === 'avc-profile') {
|
|
12
15
|
state.webm.setAvcProfileForTrackNumber(trackNumber, parse);
|
|
@@ -14,16 +17,16 @@ const addAvcToTrackIfNecessary = ({ partialVideoSample, codec, state, trackNumbe
|
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
};
|
|
17
|
-
|
|
18
|
-
const iterator = getArrayBufferIterator(ebml.value, ebml.value.length);
|
|
20
|
+
const getSampleFromBlock = (ebml, state, offset) => {
|
|
21
|
+
const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(ebml.value, ebml.value.length);
|
|
19
22
|
const trackNumber = iterator.getVint();
|
|
20
23
|
if (trackNumber === null) {
|
|
21
24
|
throw new Error('Not enough data to get track number, should not happen');
|
|
22
25
|
}
|
|
23
26
|
const timecodeRelativeToCluster = iterator.getInt16();
|
|
24
|
-
const { keyframe } = parseBlockFlags(iterator, ebml.type === 'SimpleBlock'
|
|
25
|
-
? matroskaElements.SimpleBlock
|
|
26
|
-
: matroskaElements.Block);
|
|
27
|
+
const { keyframe } = (0, block_simple_block_flags_1.parseBlockFlags)(iterator, ebml.type === 'SimpleBlock'
|
|
28
|
+
? all_segments_1.matroskaElements.SimpleBlock
|
|
29
|
+
: all_segments_1.matroskaElements.Block);
|
|
27
30
|
const { codec, trackTimescale } = state.webm.getTrackInfoByNumber(trackNumber);
|
|
28
31
|
const clusterOffset = state.webm.getTimestampOffsetForByteOffset(offset);
|
|
29
32
|
const timescale = state.webm.getTimescale();
|
|
@@ -98,3 +101,4 @@ export const getSampleFromBlock = (ebml, state, offset) => {
|
|
|
98
101
|
type: 'no-sample',
|
|
99
102
|
};
|
|
100
103
|
};
|
|
104
|
+
exports.getSampleFromBlock = getSampleFromBlock;
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTrack = exports.getMatroskaAudioCodecWithoutConfigString = exports.NO_CODEC_PRIVATE_SHOULD_BE_DERIVED_FROM_SPS = void 0;
|
|
4
|
+
const buffer_iterator_1 = require("../../buffer-iterator");
|
|
5
|
+
const make_hvc1_codec_strings_1 = require("../../make-hvc1-codec-strings");
|
|
6
|
+
const av1_codec_private_1 = require("./av1-codec-private");
|
|
7
|
+
const color_1 = require("./color");
|
|
8
|
+
const description_1 = require("./description");
|
|
9
|
+
const track_entry_1 = require("./segments/track-entry");
|
|
10
|
+
const traversal_1 = require("./traversal");
|
|
11
|
+
exports.NO_CODEC_PRIVATE_SHOULD_BE_DERIVED_FROM_SPS = 'no-codec-private-should-be-derived-from-sps';
|
|
9
12
|
const getDescription = (track) => {
|
|
10
|
-
const codec = getCodecSegment(track);
|
|
13
|
+
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
11
14
|
if (!codec) {
|
|
12
15
|
return undefined;
|
|
13
16
|
}
|
|
14
17
|
if (codec.value === 'V_MPEG4/ISO/AVC' || codec.value === 'V_MPEGH/ISO/HEVC') {
|
|
15
|
-
const priv = getPrivateData(track);
|
|
18
|
+
const priv = (0, traversal_1.getPrivateData)(track);
|
|
16
19
|
if (priv) {
|
|
17
20
|
return priv;
|
|
18
21
|
}
|
|
@@ -42,35 +45,35 @@ const getMatroskaVideoCodecString = ({ track, codecSegment: codec, }) => {
|
|
|
42
45
|
return 'vp8';
|
|
43
46
|
}
|
|
44
47
|
if (codec.value === 'V_VP9') {
|
|
45
|
-
const priv = getPrivateData(track);
|
|
48
|
+
const priv = (0, traversal_1.getPrivateData)(track);
|
|
46
49
|
if (priv) {
|
|
47
50
|
throw new Error('@remotion/media-parser cannot handle the private data for VP9. Do you have an example file you could send so we can implement it? https://remotion.dev/report');
|
|
48
51
|
}
|
|
49
52
|
return 'vp09.00.10.08';
|
|
50
53
|
}
|
|
51
54
|
if (codec.value === 'V_MPEG4/ISO/AVC') {
|
|
52
|
-
const priv = getPrivateData(track);
|
|
55
|
+
const priv = (0, traversal_1.getPrivateData)(track);
|
|
53
56
|
if (priv) {
|
|
54
57
|
return `avc1.${priv[1].toString(16).padStart(2, '0')}${priv[2].toString(16).padStart(2, '0')}${priv[3].toString(16).padStart(2, '0')}`;
|
|
55
58
|
}
|
|
56
|
-
return NO_CODEC_PRIVATE_SHOULD_BE_DERIVED_FROM_SPS;
|
|
59
|
+
return exports.NO_CODEC_PRIVATE_SHOULD_BE_DERIVED_FROM_SPS;
|
|
57
60
|
}
|
|
58
61
|
if (codec.value === 'V_MPEGH/ISO/HEVC') {
|
|
59
|
-
const priv = getPrivateData(track);
|
|
60
|
-
const iterator = getArrayBufferIterator(priv, priv.length);
|
|
61
|
-
return 'hvc1.' + getHvc1CodecString(iterator);
|
|
62
|
+
const priv = (0, traversal_1.getPrivateData)(track);
|
|
63
|
+
const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(priv, priv.length);
|
|
64
|
+
return 'hvc1.' + (0, make_hvc1_codec_strings_1.getHvc1CodecString)(iterator);
|
|
62
65
|
}
|
|
63
66
|
if (codec.value === 'V_AV1') {
|
|
64
|
-
const priv = getPrivateData(track);
|
|
67
|
+
const priv = (0, traversal_1.getPrivateData)(track);
|
|
65
68
|
if (!priv) {
|
|
66
69
|
throw new Error('Expected private data in AV1 track');
|
|
67
70
|
}
|
|
68
|
-
return parseAv1PrivateData(priv, null);
|
|
71
|
+
return (0, av1_codec_private_1.parseAv1PrivateData)(priv, null);
|
|
69
72
|
}
|
|
70
73
|
throw new Error(`Unknown codec: ${codec.value}`);
|
|
71
74
|
};
|
|
72
|
-
|
|
73
|
-
const codec = getCodecSegment(track);
|
|
75
|
+
const getMatroskaAudioCodecWithoutConfigString = ({ track, }) => {
|
|
76
|
+
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
74
77
|
if (!codec) {
|
|
75
78
|
throw new Error('Expected codec segment');
|
|
76
79
|
}
|
|
@@ -83,7 +86,7 @@ export const getMatroskaAudioCodecWithoutConfigString = ({ track, }) => {
|
|
|
83
86
|
if (codec.value === 'A_PCM/INT/LIT') {
|
|
84
87
|
// https://github.com/ietf-wg-cellar/matroska-specification/issues/142#issuecomment-330004950
|
|
85
88
|
// Audio samples MUST be considered as signed values, except if the audio bit depth is 8 which MUST be interpreted as unsigned values.
|
|
86
|
-
const bitDepth = getBitDepth(track);
|
|
89
|
+
const bitDepth = (0, traversal_1.getBitDepth)(track);
|
|
87
90
|
if (bitDepth === null) {
|
|
88
91
|
throw new Error('Expected bit depth');
|
|
89
92
|
}
|
|
@@ -106,8 +109,9 @@ export const getMatroskaAudioCodecWithoutConfigString = ({ track, }) => {
|
|
|
106
109
|
}
|
|
107
110
|
throw new Error(`Unknown codec: ${codec.value}`);
|
|
108
111
|
};
|
|
112
|
+
exports.getMatroskaAudioCodecWithoutConfigString = getMatroskaAudioCodecWithoutConfigString;
|
|
109
113
|
const getMatroskaAudioCodecString = (track) => {
|
|
110
|
-
const codec = getCodecSegment(track);
|
|
114
|
+
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
111
115
|
if (!codec) {
|
|
112
116
|
throw new Error('Expected codec segment');
|
|
113
117
|
}
|
|
@@ -120,7 +124,7 @@ const getMatroskaAudioCodecString = (track) => {
|
|
|
120
124
|
if (codec.value === 'A_PCM/INT/LIT') {
|
|
121
125
|
// https://github.com/ietf-wg-cellar/matroska-specification/issues/142#issuecomment-330004950
|
|
122
126
|
// Audio samples MUST be considered as signed values, except if the audio bit depth is 8 which MUST be interpreted as unsigned values.
|
|
123
|
-
const bitDepth = getBitDepth(track);
|
|
127
|
+
const bitDepth = (0, traversal_1.getBitDepth)(track);
|
|
124
128
|
if (bitDepth === null) {
|
|
125
129
|
throw new Error('Expected bit depth');
|
|
126
130
|
}
|
|
@@ -130,8 +134,8 @@ const getMatroskaAudioCodecString = (track) => {
|
|
|
130
134
|
return 'pcm-s' + bitDepth;
|
|
131
135
|
}
|
|
132
136
|
if (codec.value === 'A_AAC') {
|
|
133
|
-
const priv = getPrivateData(track);
|
|
134
|
-
const iterator = getArrayBufferIterator(priv, priv.length);
|
|
137
|
+
const priv = (0, traversal_1.getPrivateData)(track);
|
|
138
|
+
const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(priv, priv.length);
|
|
135
139
|
iterator.startReadingBits();
|
|
136
140
|
/**
|
|
137
141
|
* ChatGPT
|
|
@@ -164,33 +168,33 @@ const getMatroskaAudioCodecString = (track) => {
|
|
|
164
168
|
}
|
|
165
169
|
throw new Error(`Unknown codec: ${codec.value}`);
|
|
166
170
|
};
|
|
167
|
-
|
|
168
|
-
const trackType = getTrackTypeSegment(track);
|
|
171
|
+
const getTrack = ({ timescale, track, }) => {
|
|
172
|
+
const trackType = (0, traversal_1.getTrackTypeSegment)(track);
|
|
169
173
|
if (!trackType) {
|
|
170
174
|
throw new Error('Expected track type segment');
|
|
171
175
|
}
|
|
172
|
-
const trackId = getTrackId(track);
|
|
173
|
-
if (trackTypeToString(trackType.value.value) === 'video') {
|
|
174
|
-
const width = getWidthSegment(track);
|
|
176
|
+
const trackId = (0, traversal_1.getTrackId)(track);
|
|
177
|
+
if ((0, track_entry_1.trackTypeToString)(trackType.value.value) === 'video') {
|
|
178
|
+
const width = (0, traversal_1.getWidthSegment)(track);
|
|
175
179
|
if (width === null) {
|
|
176
180
|
throw new Error('Expected width segment');
|
|
177
181
|
}
|
|
178
|
-
const height = getHeightSegment(track);
|
|
182
|
+
const height = (0, traversal_1.getHeightSegment)(track);
|
|
179
183
|
if (height === null) {
|
|
180
184
|
throw new Error('Expected height segment');
|
|
181
185
|
}
|
|
182
|
-
const displayHeight = getDisplayHeightSegment(track);
|
|
183
|
-
const displayWidth = getDisplayWidthSegment(track);
|
|
184
|
-
const codec = getCodecSegment(track);
|
|
186
|
+
const displayHeight = (0, traversal_1.getDisplayHeightSegment)(track);
|
|
187
|
+
const displayWidth = (0, traversal_1.getDisplayWidthSegment)(track);
|
|
188
|
+
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
185
189
|
if (!codec) {
|
|
186
190
|
return null;
|
|
187
191
|
}
|
|
188
|
-
const codecPrivate = getPrivateData(track);
|
|
192
|
+
const codecPrivate = (0, traversal_1.getPrivateData)(track);
|
|
189
193
|
const codecString = getMatroskaVideoCodecString({
|
|
190
194
|
track,
|
|
191
195
|
codecSegment: codec,
|
|
192
196
|
});
|
|
193
|
-
const colour = getColourSegment(track);
|
|
197
|
+
const colour = (0, traversal_1.getColourSegment)(track);
|
|
194
198
|
if (!codecString) {
|
|
195
199
|
return null;
|
|
196
200
|
}
|
|
@@ -219,7 +223,7 @@ export const getTrack = ({ timescale, track, }) => {
|
|
|
219
223
|
trakBox: null,
|
|
220
224
|
codecPrivate,
|
|
221
225
|
color: colour
|
|
222
|
-
? parseColorSegment(colour)
|
|
226
|
+
? (0, color_1.parseColorSegment)(colour)
|
|
223
227
|
: {
|
|
224
228
|
fullRange: null,
|
|
225
229
|
matrixCoefficients: null,
|
|
@@ -232,10 +236,10 @@ export const getTrack = ({ timescale, track, }) => {
|
|
|
232
236
|
fps: null,
|
|
233
237
|
};
|
|
234
238
|
}
|
|
235
|
-
if (trackTypeToString(trackType.value.value) === 'audio') {
|
|
236
|
-
const sampleRate = getSampleRate(track);
|
|
237
|
-
const numberOfChannels = getNumberOfChannels(track);
|
|
238
|
-
const codecPrivate = getPrivateData(track);
|
|
239
|
+
if ((0, track_entry_1.trackTypeToString)(trackType.value.value) === 'audio') {
|
|
240
|
+
const sampleRate = (0, traversal_1.getSampleRate)(track);
|
|
241
|
+
const numberOfChannels = (0, traversal_1.getNumberOfChannels)(track);
|
|
242
|
+
const codecPrivate = (0, traversal_1.getPrivateData)(track);
|
|
239
243
|
if (sampleRate === null) {
|
|
240
244
|
throw new Error('Could not find sample rate or number of channels');
|
|
241
245
|
}
|
|
@@ -246,13 +250,14 @@ export const getTrack = ({ timescale, track, }) => {
|
|
|
246
250
|
timescale,
|
|
247
251
|
numberOfChannels,
|
|
248
252
|
sampleRate,
|
|
249
|
-
description: getAudioDescription(track),
|
|
253
|
+
description: (0, description_1.getAudioDescription)(track),
|
|
250
254
|
trakBox: null,
|
|
251
255
|
codecPrivate,
|
|
252
|
-
codecWithoutConfig: getMatroskaAudioCodecWithoutConfigString({
|
|
256
|
+
codecWithoutConfig: (0, exports.getMatroskaAudioCodecWithoutConfigString)({
|
|
253
257
|
track,
|
|
254
258
|
}),
|
|
255
259
|
};
|
|
256
260
|
}
|
|
257
261
|
return null;
|
|
258
262
|
};
|
|
263
|
+
exports.getTrack = getTrack;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.postprocessEbml = exports.parseEbml = void 0;
|
|
4
|
+
const register_track_1 = require("../../register-track");
|
|
5
|
+
const get_sample_from_block_1 = require("./get-sample-from-block");
|
|
6
|
+
const make_track_1 = require("./make-track");
|
|
7
|
+
const all_segments_1 = require("./segments/all-segments");
|
|
8
|
+
const parseEbml = async (state) => {
|
|
6
9
|
const { iterator } = state;
|
|
7
10
|
const hex = iterator.getMatroskaSegmentId();
|
|
8
11
|
if (hex === null) {
|
|
9
12
|
throw new Error('Not enough bytes left to parse EBML - this should not happen');
|
|
10
13
|
}
|
|
11
|
-
const hasInMap = ebmlMap[hex];
|
|
14
|
+
const hasInMap = all_segments_1.ebmlMap[hex];
|
|
12
15
|
if (!hasInMap) {
|
|
13
16
|
throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
|
|
14
17
|
}
|
|
@@ -81,9 +84,9 @@ export const parseEbml = async (state) => {
|
|
|
81
84
|
break;
|
|
82
85
|
}
|
|
83
86
|
const offset = iterator.counter.getOffset();
|
|
84
|
-
const value = await parseEbml(state);
|
|
87
|
+
const value = await (0, exports.parseEbml)(state);
|
|
85
88
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
86
|
-
const remapped = await postprocessEbml({
|
|
89
|
+
const remapped = await (0, exports.postprocessEbml)({
|
|
87
90
|
offset,
|
|
88
91
|
ebml: value,
|
|
89
92
|
state,
|
|
@@ -102,7 +105,8 @@ export const parseEbml = async (state) => {
|
|
|
102
105
|
// @ts-expect-error
|
|
103
106
|
throw new Error(`Unknown segment type ${hasInMap.type}`);
|
|
104
107
|
};
|
|
105
|
-
|
|
108
|
+
exports.parseEbml = parseEbml;
|
|
109
|
+
const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
106
110
|
if (ebml.type === 'TimestampScale') {
|
|
107
111
|
state.webm.setTimescale(ebml.value.value);
|
|
108
112
|
}
|
|
@@ -111,19 +115,19 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
111
115
|
}
|
|
112
116
|
if (ebml.type === 'TrackEntry') {
|
|
113
117
|
state.webm.onTrackEntrySegment(ebml);
|
|
114
|
-
const track = getTrack({
|
|
118
|
+
const track = (0, make_track_1.getTrack)({
|
|
115
119
|
track: ebml,
|
|
116
120
|
timescale: state.webm.getTimescale(),
|
|
117
121
|
});
|
|
118
122
|
if (track && track.type === 'audio') {
|
|
119
|
-
await registerAudioTrack({
|
|
123
|
+
await (0, register_track_1.registerAudioTrack)({
|
|
120
124
|
state,
|
|
121
125
|
track,
|
|
122
126
|
container: 'webm',
|
|
123
127
|
});
|
|
124
128
|
}
|
|
125
129
|
if (track && track.type === 'video') {
|
|
126
|
-
await registerVideoTrack({
|
|
130
|
+
await (0, register_track_1.registerVideoTrack)({
|
|
127
131
|
state,
|
|
128
132
|
track,
|
|
129
133
|
container: 'webm',
|
|
@@ -134,7 +138,7 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
134
138
|
state.webm.setTimestampOffset(offset, ebml.value.value);
|
|
135
139
|
}
|
|
136
140
|
if (ebml.type === 'Block' || ebml.type === 'SimpleBlock') {
|
|
137
|
-
const sample = getSampleFromBlock(ebml, state, offset);
|
|
141
|
+
const sample = (0, get_sample_from_block_1.getSampleFromBlock)(ebml, state, offset);
|
|
138
142
|
if (sample.type === 'video-sample') {
|
|
139
143
|
await state.callbacks.onVideoSample(sample.videoSample.trackId, sample.videoSample);
|
|
140
144
|
return {
|
|
@@ -171,7 +175,7 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
171
175
|
const hasReferenceBlock = ebml.value.find((c) => c.type === 'ReferenceBlock');
|
|
172
176
|
const sample = block.value.length === 0
|
|
173
177
|
? null
|
|
174
|
-
: getSampleFromBlock(block, state, offset);
|
|
178
|
+
: (0, get_sample_from_block_1.getSampleFromBlock)(block, state, offset);
|
|
175
179
|
if (sample && sample.type === 'partial-video-sample') {
|
|
176
180
|
const completeFrame = {
|
|
177
181
|
...sample.partialVideoSample,
|
|
@@ -187,3 +191,4 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
187
191
|
}
|
|
188
192
|
return ebml;
|
|
189
193
|
};
|
|
194
|
+
exports.postprocessEbml = postprocessEbml;
|