@remotion/media-parser 4.0.256 → 4.0.257
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/abort.d.ts +1 -0
- package/dist/abort.js +7 -0
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/controller.d.ts +17 -0
- package/dist/controller.js +31 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/parse-and-download-media.d.ts +2 -0
- package/dist/parse-and-download-media.js +57 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/dist/add-new-matroska-tracks.d.ts +0 -8
- package/dist/add-new-matroska-tracks.js +0 -14
- package/dist/boxes/avc/parse-avc.d.ts +0 -18
- package/dist/boxes/avc/parse-avc.js +0 -96
- package/dist/boxes/iso-base-media/base-type.d.ts +0 -4
- package/dist/boxes/iso-base-media/base-type.js +0 -2
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +0 -14
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +0 -38
- package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +0 -29
- package/dist/boxes/iso-base-media/esds/esds-descriptors.js +0 -82
- package/dist/boxes/iso-base-media/esds/esds.d.ts +0 -15
- package/dist/boxes/iso-base-media/esds/esds.js +0 -27
- package/dist/boxes/iso-base-media/ftyp.d.ts +0 -13
- package/dist/boxes/iso-base-media/ftyp.js +0 -22
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +0 -13
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +0 -22
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +0 -4
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +0 -54
- package/dist/boxes/iso-base-media/make-track.d.ts +0 -3
- package/dist/boxes/iso-base-media/make-track.js +0 -107
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -25
- package/dist/boxes/iso-base-media/mdat/mdat.js +0 -122
- package/dist/boxes/iso-base-media/mdhd.d.ts +0 -16
- package/dist/boxes/iso-base-media/mdhd.js +0 -32
- package/dist/boxes/iso-base-media/meta/hdlr.d.ts +0 -12
- package/dist/boxes/iso-base-media/meta/hdlr.js +0 -33
- package/dist/boxes/iso-base-media/meta/ilst.d.ts +0 -28
- package/dist/boxes/iso-base-media/meta/ilst.js +0 -86
- package/dist/boxes/iso-base-media/moov/moov.d.ts +0 -19
- package/dist/boxes/iso-base-media/moov/moov.js +0 -27
- package/dist/boxes/iso-base-media/mvhd.d.ts +0 -30
- package/dist/boxes/iso-base-media/mvhd.js +0 -65
- package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +0 -36
- package/dist/boxes/iso-base-media/parse-icc-profile.js +0 -115
- package/dist/boxes/iso-base-media/process-box.d.ts +0 -34
- package/dist/boxes/iso-base-media/process-box.js +0 -710
- package/dist/boxes/iso-base-media/stsd/av1c.d.ts +0 -9
- package/dist/boxes/iso-base-media/stsd/av1c.js +0 -10
- package/dist/boxes/iso-base-media/stsd/avcc.d.ts +0 -10
- package/dist/boxes/iso-base-media/stsd/avcc.js +0 -21
- package/dist/boxes/iso-base-media/stsd/colr.d.ts +0 -21
- package/dist/boxes/iso-base-media/stsd/colr.js +0 -47
- package/dist/boxes/iso-base-media/stsd/ctts.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/ctts.js +0 -34
- package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +0 -11
- package/dist/boxes/iso-base-media/stsd/hvcc.js +0 -17
- package/dist/boxes/iso-base-media/stsd/keys.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/keys.js +0 -35
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/mebx.js +0 -32
- package/dist/boxes/iso-base-media/stsd/pasp.d.ts +0 -12
- package/dist/boxes/iso-base-media/stsd/pasp.js +0 -17
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +0 -68
- package/dist/boxes/iso-base-media/stsd/samples.js +0 -320
- package/dist/boxes/iso-base-media/stsd/stco.d.ts +0 -15
- package/dist/boxes/iso-base-media/stsd/stco.js +0 -30
- package/dist/boxes/iso-base-media/stsd/stsc.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/stsc.js +0 -34
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +0 -18
- package/dist/boxes/iso-base-media/stsd/stsd.js +0 -33
- package/dist/boxes/iso-base-media/stsd/stss.d.ts +0 -13
- package/dist/boxes/iso-base-media/stsd/stss.js +0 -28
- package/dist/boxes/iso-base-media/stsd/stsz.d.ts +0 -21
- package/dist/boxes/iso-base-media/stsd/stsz.js +0 -44
- package/dist/boxes/iso-base-media/stsd/stts.d.ts +0 -15
- package/dist/boxes/iso-base-media/stsd/stts.js +0 -35
- package/dist/boxes/iso-base-media/tfdt.d.ts +0 -12
- package/dist/boxes/iso-base-media/tfdt.js +0 -20
- package/dist/boxes/iso-base-media/tfhd.d.ts +0 -16
- package/dist/boxes/iso-base-media/tfhd.js +0 -41
- package/dist/boxes/iso-base-media/tkhd.d.ts +0 -25
- package/dist/boxes/iso-base-media/tkhd.js +0 -87
- package/dist/boxes/iso-base-media/to-date.d.ts +0 -2
- package/dist/boxes/iso-base-media/to-date.js +0 -19
- package/dist/boxes/iso-base-media/trak/trak.d.ts +0 -19
- package/dist/boxes/iso-base-media/trak/trak.js +0 -27
- package/dist/boxes/iso-base-media/traversal.d.ts +0 -39
- package/dist/boxes/iso-base-media/traversal.js +0 -201
- package/dist/boxes/iso-base-media/trun.d.ts +0 -21
- package/dist/boxes/iso-base-media/trun.js +0 -44
- package/dist/boxes/iso-base-media/void-box.d.ts +0 -4
- package/dist/boxes/iso-base-media/void-box.js +0 -2
- package/dist/boxes/riff/expect-riff-box.d.ts +0 -17
- package/dist/boxes/riff/expect-riff-box.js +0 -49
- package/dist/boxes/riff/get-tracks-from-avi.d.ts +0 -22
- package/dist/boxes/riff/get-tracks-from-avi.js +0 -114
- package/dist/boxes/riff/is-movi.d.ts +0 -2
- package/dist/boxes/riff/is-movi.js +0 -12
- package/dist/boxes/riff/parse-avih.d.ts +0 -6
- package/dist/boxes/riff/parse-avih.js +0 -32
- package/dist/boxes/riff/parse-box.d.ts +0 -15
- package/dist/boxes/riff/parse-box.js +0 -146
- package/dist/boxes/riff/parse-fmt-box.d.ts +0 -7
- package/dist/boxes/riff/parse-fmt-box.js +0 -33
- package/dist/boxes/riff/parse-isft.d.ts +0 -6
- package/dist/boxes/riff/parse-isft.js +0 -17
- package/dist/boxes/riff/parse-list-box.d.ts +0 -8
- package/dist/boxes/riff/parse-list-box.js +0 -30
- package/dist/boxes/riff/parse-movi.d.ts +0 -17
- package/dist/boxes/riff/parse-movi.js +0 -133
- package/dist/boxes/riff/parse-riff-box.d.ts +0 -10
- package/dist/boxes/riff/parse-riff-box.js +0 -37
- package/dist/boxes/riff/parse-strf.d.ts +0 -7
- package/dist/boxes/riff/parse-strf.js +0 -67
- package/dist/boxes/riff/parse-strh.d.ts +0 -6
- package/dist/boxes/riff/parse-strh.js +0 -46
- package/dist/boxes/riff/riff-box.d.ts +0 -85
- package/dist/boxes/riff/riff-box.js +0 -2
- package/dist/boxes/riff/timescale.d.ts +0 -1
- package/dist/boxes/riff/timescale.js +0 -4
- package/dist/boxes/riff/traversal.d.ts +0 -8
- package/dist/boxes/riff/traversal.js +0 -36
- package/dist/boxes/webm/allowed-partial-segments.d.ts +0 -1
- package/dist/boxes/webm/allowed-partial-segments.js +0 -4
- package/dist/boxes/webm/av1-codec-private.d.ts +0 -2
- package/dist/boxes/webm/av1-codec-private.js +0 -95
- package/dist/boxes/webm/color.d.ts +0 -4
- package/dist/boxes/webm/color.js +0 -127
- package/dist/boxes/webm/description.d.ts +0 -2
- package/dist/boxes/webm/description.js +0 -83
- package/dist/boxes/webm/ebml.d.ts +0 -2
- package/dist/boxes/webm/ebml.js +0 -94
- package/dist/boxes/webm/get-ready-tracks.d.ts +0 -3
- package/dist/boxes/webm/get-ready-tracks.js +0 -29
- package/dist/boxes/webm/get-sample-from-block.d.ts +0 -17
- package/dist/boxes/webm/get-sample-from-block.js +0 -81
- package/dist/boxes/webm/make-header.d.ts +0 -8
- package/dist/boxes/webm/make-header.js +0 -187
- package/dist/boxes/webm/make-track.d.ts +0 -9
- package/dist/boxes/webm/make-track.js +0 -261
- package/dist/boxes/webm/parse-ebml.d.ts +0 -12
- package/dist/boxes/webm/parse-ebml.js +0 -185
- package/dist/boxes/webm/parse-webm-header.d.ts +0 -9
- package/dist/boxes/webm/parse-webm-header.js +0 -36
- package/dist/boxes/webm/segments/all-segments.d.ts +0 -976
- package/dist/boxes/webm/segments/all-segments.js +0 -724
- package/dist/boxes/webm/segments/block-simple-block-flags.d.ts +0 -9
- package/dist/boxes/webm/segments/block-simple-block-flags.js +0 -38
- package/dist/boxes/webm/segments/parse-children.d.ts +0 -23
- package/dist/boxes/webm/segments/parse-children.js +0 -145
- package/dist/boxes/webm/segments/track-entry.d.ts +0 -9
- package/dist/boxes/webm/segments/track-entry.js +0 -24
- package/dist/boxes/webm/segments.d.ts +0 -15
- package/dist/boxes/webm/segments.js +0 -161
- package/dist/boxes/webm/traversal.d.ts +0 -33
- package/dist/boxes/webm/traversal.js +0 -265
- package/dist/create/cluster-segment.d.ts +0 -10
- package/dist/create/cluster-segment.js +0 -39
- package/dist/create/cluster.d.ts +0 -19
- package/dist/create/cluster.js +0 -55
- package/dist/create/create-media.d.ts +0 -15
- package/dist/create/create-media.js +0 -165
- package/dist/create/event-emitter.d.ts +0 -31
- package/dist/create/event-emitter.js +0 -25
- package/dist/create/iso-base-media/codec-specific/avc1.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/avc1.js +0 -48
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +0 -22
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +0 -36
- package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/mp4a.js +0 -74
- package/dist/create/iso-base-media/create-colr.d.ts +0 -6
- package/dist/create/iso-base-media/create-colr.js +0 -26
- package/dist/create/iso-base-media/create-ftyp.d.ts +0 -10
- package/dist/create/iso-base-media/create-ftyp.js +0 -22
- package/dist/create/iso-base-media/create-ilst.d.ts +0 -1
- package/dist/create/iso-base-media/create-ilst.js +0 -14
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +0 -2
- package/dist/create/iso-base-media/create-iso-base-media.js +0 -165
- package/dist/create/iso-base-media/create-mdia.d.ts +0 -5
- package/dist/create/iso-base-media/create-mdia.js +0 -18
- package/dist/create/iso-base-media/create-moov.d.ts +0 -5
- package/dist/create/iso-base-media/create-moov.js +0 -18
- package/dist/create/iso-base-media/create-mvhd.d.ts +0 -10
- package/dist/create/iso-base-media/create-mvhd.js +0 -48
- package/dist/create/iso-base-media/create-trak.d.ts +0 -4
- package/dist/create/iso-base-media/create-trak.js +0 -17
- package/dist/create/iso-base-media/create-udta.d.ts +0 -1
- package/dist/create/iso-base-media/create-udta.js +0 -14
- package/dist/create/iso-base-media/create-url.d.ts +0 -1
- package/dist/create/iso-base-media/create-url.js +0 -16
- package/dist/create/iso-base-media/example-stts.d.ts +0 -3
- package/dist/create/iso-base-media/example-stts.js +0 -2797
- package/dist/create/iso-base-media/ilst/create-cmt.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-cmt.js +0 -26
- package/dist/create/iso-base-media/ilst/create-too.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-too.js +0 -27
- package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +0 -6
- package/dist/create/iso-base-media/mdia/create-mdhd.js +0 -33
- package/dist/create/iso-base-media/mp4-header.d.ts +0 -6
- package/dist/create/iso-base-media/mp4-header.js +0 -48
- package/dist/create/iso-base-media/primitives.d.ts +0 -15
- package/dist/create/iso-base-media/primitives.js +0 -133
- package/dist/create/iso-base-media/serialize-track.d.ts +0 -9
- package/dist/create/iso-base-media/serialize-track.js +0 -63
- package/dist/create/iso-base-media/trak/create-tkhd.d.ts +0 -27
- package/dist/create/iso-base-media/trak/create-tkhd.js +0 -97
- package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +0 -4
- package/dist/create/iso-base-media/trak/mdia/create-minf.js +0 -19
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +0 -22
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +0 -6
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +0 -35
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +0 -45
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +0 -28
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +0 -56
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +0 -23
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +0 -25
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +0 -48
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +0 -16
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +0 -13
- package/dist/create/iso-base-media/udta/create-meta.d.ts +0 -4
- package/dist/create/iso-base-media/udta/create-meta.js +0 -20
- package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +0 -1
- package/dist/create/iso-base-media/udta/meta/create-hdlr.js +0 -32
- package/dist/create/make-duration-with-padding.d.ts +0 -1
- package/dist/create/make-duration-with-padding.js +0 -15
- package/dist/create/make-track-info.d.ts +0 -20
- package/dist/create/make-track-info.js +0 -2
- package/dist/create/matroska/cluster-segment.d.ts +0 -10
- package/dist/create/matroska/cluster-segment.js +0 -39
- package/dist/create/matroska/cluster.d.ts +0 -25
- package/dist/create/matroska/cluster.js +0 -77
- package/dist/create/matroska/create-matroska-media.d.ts +0 -2
- package/dist/create/matroska/create-matroska-media.js +0 -187
- package/dist/create/matroska/make-duration-with-padding.d.ts +0 -1
- package/dist/create/matroska/make-duration-with-padding.js +0 -15
- package/dist/create/matroska/matroska-cues.d.ts +0 -6
- package/dist/create/matroska/matroska-cues.js +0 -49
- package/dist/create/matroska/matroska-header.d.ts +0 -1
- package/dist/create/matroska/matroska-header.js +0 -66
- package/dist/create/matroska/matroska-info.d.ts +0 -3
- package/dist/create/matroska/matroska-info.js +0 -33
- package/dist/create/matroska/matroska-seek.d.ts +0 -6
- package/dist/create/matroska/matroska-seek.js +0 -32
- package/dist/create/matroska/matroska-segment.d.ts +0 -3
- package/dist/create/matroska/matroska-segment.js +0 -13
- package/dist/create/matroska/matroska-trackentry.d.ts +0 -10
- package/dist/create/matroska/matroska-trackentry.js +0 -249
- package/dist/create/matroska-cues.d.ts +0 -6
- package/dist/create/matroska-cues.js +0 -49
- package/dist/create/matroska-header.d.ts +0 -1
- package/dist/create/matroska-header.js +0 -66
- package/dist/create/matroska-info.d.ts +0 -3
- package/dist/create/matroska-info.js +0 -33
- package/dist/create/matroska-seek.d.ts +0 -6
- package/dist/create/matroska-seek.js +0 -32
- package/dist/create/matroska-segment.d.ts +0 -3
- package/dist/create/matroska-segment.js +0 -13
- package/dist/create/matroska-trackentry.d.ts +0 -27
- package/dist/create/matroska-trackentry.js +0 -243
- package/dist/create/media-fn.d.ts +0 -33
- package/dist/create/media-fn.js +0 -2
- package/dist/create/progress-tracker.d.ts +0 -7
- package/dist/create/progress-tracker.js +0 -43
- package/dist/create/timescale.d.ts +0 -1
- package/dist/create/timescale.js +0 -4
- package/dist/create/wav/create-wav.d.ts +0 -2
- package/dist/create/wav/create-wav.js +0 -110
- package/dist/create/with-resolvers.d.ts +0 -10
- package/dist/create/with-resolvers.js +0 -28
- package/dist/esm/buffer.mjs +0 -56
- package/dist/esm/web-fs.mjs +0 -73
- package/dist/parse-video.d.ts +0 -25
- package/dist/parse-video.js +0 -39
- package/dist/parser-context.d.ts +0 -10
- package/dist/parser-context.js +0 -2
- package/dist/parser-state.d.ts +0 -22
- package/dist/parser-state.js +0 -132
- package/dist/writers/buffer-implementation/writer.d.ts +0 -2
- package/dist/writers/buffer-implementation/writer.js +0 -54
- package/dist/writers/buffer.d.ts +0 -2
- package/dist/writers/buffer.js +0 -7
- package/dist/writers/web-fs.d.ts +0 -3
- package/dist/writers/web-fs.js +0 -74
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTrack = exports.getMatroskaAudioCodecWithoutConfigString = 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
|
-
const getDescription = (track) => {
|
|
12
|
-
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
13
|
-
if (!codec) {
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
if (codec.value === 'V_MPEG4/ISO/AVC' || codec.value === 'V_MPEGH/ISO/HEVC') {
|
|
17
|
-
const priv = (0, traversal_1.getPrivateData)(track);
|
|
18
|
-
if (priv) {
|
|
19
|
-
return priv;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return undefined;
|
|
23
|
-
};
|
|
24
|
-
const getMatroskaVideoCodecWithoutConfigString = ({ codecSegment: codec, }) => {
|
|
25
|
-
if (codec.value === 'V_VP8') {
|
|
26
|
-
return 'vp8';
|
|
27
|
-
}
|
|
28
|
-
if (codec.value === 'V_VP9') {
|
|
29
|
-
return 'vp9';
|
|
30
|
-
}
|
|
31
|
-
if (codec.value === 'V_MPEG4/ISO/AVC') {
|
|
32
|
-
return 'h264';
|
|
33
|
-
}
|
|
34
|
-
if (codec.value === 'V_AV1') {
|
|
35
|
-
return 'av1';
|
|
36
|
-
}
|
|
37
|
-
if (codec.value === 'V_MPEGH/ISO/HEVC') {
|
|
38
|
-
return 'h265';
|
|
39
|
-
}
|
|
40
|
-
throw new Error(`Unknown codec: ${codec.value}`);
|
|
41
|
-
};
|
|
42
|
-
const getMatroskaVideoCodecString = ({ track, codecSegment: codec, }) => {
|
|
43
|
-
if (codec.value === 'V_VP8') {
|
|
44
|
-
return 'vp8';
|
|
45
|
-
}
|
|
46
|
-
if (codec.value === 'V_VP9') {
|
|
47
|
-
const priv = (0, traversal_1.getPrivateData)(track);
|
|
48
|
-
if (priv) {
|
|
49
|
-
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?');
|
|
50
|
-
}
|
|
51
|
-
return 'vp09.00.10.08';
|
|
52
|
-
}
|
|
53
|
-
if (codec.value === 'V_MPEG4/ISO/AVC') {
|
|
54
|
-
const priv = (0, traversal_1.getPrivateData)(track);
|
|
55
|
-
if (priv) {
|
|
56
|
-
return `avc1.${priv[1].toString(16).padStart(2, '0')}${priv[2].toString(16).padStart(2, '0')}${priv[3].toString(16).padStart(2, '0')}`;
|
|
57
|
-
}
|
|
58
|
-
throw new Error('Could not find a CodecPrivate field in TrackEntry');
|
|
59
|
-
}
|
|
60
|
-
if (codec.value === 'V_AV1') {
|
|
61
|
-
const priv = (0, traversal_1.getPrivateData)(track);
|
|
62
|
-
if (!priv) {
|
|
63
|
-
throw new Error('Expected private data in AV1 track');
|
|
64
|
-
}
|
|
65
|
-
return (0, av1_codec_private_1.parseAv1PrivateData)(priv, null);
|
|
66
|
-
}
|
|
67
|
-
if (codec.value === 'V_MPEGH/ISO/HEVC') {
|
|
68
|
-
const priv = (0, traversal_1.getPrivateData)(track);
|
|
69
|
-
const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(priv, priv.length);
|
|
70
|
-
return 'hvc1.' + (0, make_hvc1_codec_strings_1.getHvc1CodecString)(iterator);
|
|
71
|
-
}
|
|
72
|
-
throw new Error(`Unknown codec: ${codec.value}`);
|
|
73
|
-
};
|
|
74
|
-
const getMatroskaAudioCodecWithoutConfigString = ({ track, }) => {
|
|
75
|
-
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
76
|
-
if (!codec) {
|
|
77
|
-
throw new Error('Expected codec segment');
|
|
78
|
-
}
|
|
79
|
-
if (codec.value === 'A_OPUS') {
|
|
80
|
-
return 'opus';
|
|
81
|
-
}
|
|
82
|
-
if (codec.value === 'A_VORBIS') {
|
|
83
|
-
return 'vorbis';
|
|
84
|
-
}
|
|
85
|
-
if (codec.value === 'A_PCM/INT/LIT') {
|
|
86
|
-
// https://github.com/ietf-wg-cellar/matroska-specification/issues/142#issuecomment-330004950
|
|
87
|
-
// Audio samples MUST be considered as signed values, except if the audio bit depth is 8 which MUST be interpreted as unsigned values.
|
|
88
|
-
const bitDepth = (0, traversal_1.getBitDepth)(track);
|
|
89
|
-
if (bitDepth === null) {
|
|
90
|
-
throw new Error('Expected bit depth');
|
|
91
|
-
}
|
|
92
|
-
if (bitDepth === 8) {
|
|
93
|
-
return 'pcm-u8';
|
|
94
|
-
}
|
|
95
|
-
if (bitDepth === 16) {
|
|
96
|
-
return 'pcm-s16';
|
|
97
|
-
}
|
|
98
|
-
if (bitDepth === 24) {
|
|
99
|
-
return 'pcm-s24';
|
|
100
|
-
}
|
|
101
|
-
throw new Error('Unknown audio format');
|
|
102
|
-
}
|
|
103
|
-
if (codec.value === 'A_AAC') {
|
|
104
|
-
return `aac`;
|
|
105
|
-
}
|
|
106
|
-
if (codec.value === 'A_MPEG/L3') {
|
|
107
|
-
return 'mp3';
|
|
108
|
-
}
|
|
109
|
-
throw new Error(`Unknown codec: ${codec.value}`);
|
|
110
|
-
};
|
|
111
|
-
exports.getMatroskaAudioCodecWithoutConfigString = getMatroskaAudioCodecWithoutConfigString;
|
|
112
|
-
const getMatroskaAudioCodecString = (track) => {
|
|
113
|
-
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
114
|
-
if (!codec) {
|
|
115
|
-
throw new Error('Expected codec segment');
|
|
116
|
-
}
|
|
117
|
-
if (codec.value === 'A_OPUS') {
|
|
118
|
-
return 'opus';
|
|
119
|
-
}
|
|
120
|
-
if (codec.value === 'A_VORBIS') {
|
|
121
|
-
return 'vorbis';
|
|
122
|
-
}
|
|
123
|
-
if (codec.value === 'A_PCM/INT/LIT') {
|
|
124
|
-
// https://github.com/ietf-wg-cellar/matroska-specification/issues/142#issuecomment-330004950
|
|
125
|
-
// Audio samples MUST be considered as signed values, except if the audio bit depth is 8 which MUST be interpreted as unsigned values.
|
|
126
|
-
const bitDepth = (0, traversal_1.getBitDepth)(track);
|
|
127
|
-
if (bitDepth === null) {
|
|
128
|
-
throw new Error('Expected bit depth');
|
|
129
|
-
}
|
|
130
|
-
if (bitDepth === 8) {
|
|
131
|
-
return 'pcm-u8';
|
|
132
|
-
}
|
|
133
|
-
return 'pcm-s' + bitDepth;
|
|
134
|
-
}
|
|
135
|
-
if (codec.value === 'A_AAC') {
|
|
136
|
-
const priv = (0, traversal_1.getPrivateData)(track);
|
|
137
|
-
const iterator = (0, buffer_iterator_1.getArrayBufferIterator)(priv, priv.length);
|
|
138
|
-
iterator.startReadingBits();
|
|
139
|
-
/**
|
|
140
|
-
* ChatGPT
|
|
141
|
-
* ▪ The first 5 bits represent the AOT.
|
|
142
|
-
▪ Common values:
|
|
143
|
-
◦ 1 for AAC Main
|
|
144
|
-
◦ 2 for AAC LC (Low Complexity)
|
|
145
|
-
◦ 3 for AAC SSR (Scalable Sample Rate)
|
|
146
|
-
◦ 4 for AAC LTP (Long Term Prediction)
|
|
147
|
-
◦ 5 for SBR (Spectral Band Replication)
|
|
148
|
-
◦ 29 for HE-AAC (which uses SBR with AAC LC)
|
|
149
|
-
*/
|
|
150
|
-
/**
|
|
151
|
-
* Fully qualified codec:
|
|
152
|
-
* This codec has multiple possible codec strings:
|
|
153
|
-
"mp4a.40.2" — MPEG-4 AAC LC
|
|
154
|
-
"mp4a.40.02" — MPEG-4 AAC LC, leading 0 for Aud-OTI compatibility
|
|
155
|
-
"mp4a.40.5" — MPEG-4 HE-AAC v1 (AAC LC + SBR)
|
|
156
|
-
"mp4a.40.05" — MPEG-4 HE-AAC v1 (AAC LC + SBR), leading 0 for Aud-OTI compatibility
|
|
157
|
-
"mp4a.40.29" — MPEG-4 HE-AAC v2 (AAC LC + SBR + PS)
|
|
158
|
-
"mp4a.67" — MPEG-2 AAC LC
|
|
159
|
-
*/
|
|
160
|
-
const profile = iterator.getBits(5);
|
|
161
|
-
iterator.stopReadingBits();
|
|
162
|
-
iterator.destroy();
|
|
163
|
-
return `mp4a.40.${profile.toString().padStart(2, '0')}`;
|
|
164
|
-
}
|
|
165
|
-
if (codec.value === 'A_MPEG/L3') {
|
|
166
|
-
return 'mp3';
|
|
167
|
-
}
|
|
168
|
-
throw new Error(`Unknown codec: ${codec.value}`);
|
|
169
|
-
};
|
|
170
|
-
const getTrack = ({ timescale, track, }) => {
|
|
171
|
-
const trackType = (0, traversal_1.getTrackTypeSegment)(track);
|
|
172
|
-
if (!trackType) {
|
|
173
|
-
throw new Error('Expected track type segment');
|
|
174
|
-
}
|
|
175
|
-
const trackId = (0, traversal_1.getTrackId)(track);
|
|
176
|
-
if ((0, track_entry_1.trackTypeToString)(trackType.value.value) === 'video') {
|
|
177
|
-
const width = (0, traversal_1.getWidthSegment)(track);
|
|
178
|
-
if (width === null) {
|
|
179
|
-
throw new Error('Expected width segment');
|
|
180
|
-
}
|
|
181
|
-
const height = (0, traversal_1.getHeightSegment)(track);
|
|
182
|
-
if (height === null) {
|
|
183
|
-
throw new Error('Expected height segment');
|
|
184
|
-
}
|
|
185
|
-
const displayHeight = (0, traversal_1.getDisplayHeightSegment)(track);
|
|
186
|
-
const displayWidth = (0, traversal_1.getDisplayWidthSegment)(track);
|
|
187
|
-
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
188
|
-
if (!codec) {
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
const codecPrivate = (0, traversal_1.getPrivateData)(track);
|
|
192
|
-
const codecString = getMatroskaVideoCodecString({
|
|
193
|
-
track,
|
|
194
|
-
codecSegment: codec,
|
|
195
|
-
});
|
|
196
|
-
const colour = (0, traversal_1.getColourSegment)(track);
|
|
197
|
-
if (!codecString) {
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
return {
|
|
201
|
-
type: 'video',
|
|
202
|
-
trackId,
|
|
203
|
-
codec: codecString,
|
|
204
|
-
description: getDescription(track),
|
|
205
|
-
height: displayHeight ? displayHeight.value.value : height.value.value,
|
|
206
|
-
width: displayWidth ? displayWidth.value.value : width.value.value,
|
|
207
|
-
sampleAspectRatio: {
|
|
208
|
-
numerator: 1,
|
|
209
|
-
denominator: 1,
|
|
210
|
-
},
|
|
211
|
-
timescale,
|
|
212
|
-
codedHeight: height.value.value,
|
|
213
|
-
codedWidth: width.value.value,
|
|
214
|
-
displayAspectHeight: displayHeight
|
|
215
|
-
? displayHeight.value.value
|
|
216
|
-
: height.value.value,
|
|
217
|
-
displayAspectWidth: displayWidth
|
|
218
|
-
? displayWidth.value.value
|
|
219
|
-
: width.value.value,
|
|
220
|
-
rotation: 0,
|
|
221
|
-
trakBox: null,
|
|
222
|
-
codecPrivate,
|
|
223
|
-
color: colour
|
|
224
|
-
? (0, color_1.parseColorSegment)(colour)
|
|
225
|
-
: {
|
|
226
|
-
fullRange: null,
|
|
227
|
-
matrixCoefficients: null,
|
|
228
|
-
primaries: null,
|
|
229
|
-
transferCharacteristics: null,
|
|
230
|
-
},
|
|
231
|
-
codecWithoutConfig: getMatroskaVideoCodecWithoutConfigString({
|
|
232
|
-
codecSegment: codec,
|
|
233
|
-
}),
|
|
234
|
-
fps: null,
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
if ((0, track_entry_1.trackTypeToString)(trackType.value.value) === 'audio') {
|
|
238
|
-
const sampleRate = (0, traversal_1.getSampleRate)(track);
|
|
239
|
-
const numberOfChannels = (0, traversal_1.getNumberOfChannels)(track);
|
|
240
|
-
const codecPrivate = (0, traversal_1.getPrivateData)(track);
|
|
241
|
-
if (sampleRate === null) {
|
|
242
|
-
throw new Error('Could not find sample rate or number of channels');
|
|
243
|
-
}
|
|
244
|
-
return {
|
|
245
|
-
type: 'audio',
|
|
246
|
-
trackId,
|
|
247
|
-
codec: getMatroskaAudioCodecString(track),
|
|
248
|
-
timescale,
|
|
249
|
-
numberOfChannels,
|
|
250
|
-
sampleRate,
|
|
251
|
-
description: (0, description_1.getAudioDescription)(track),
|
|
252
|
-
trakBox: null,
|
|
253
|
-
codecPrivate,
|
|
254
|
-
codecWithoutConfig: (0, exports.getMatroskaAudioCodecWithoutConfigString)({
|
|
255
|
-
track,
|
|
256
|
-
}),
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
return null;
|
|
260
|
-
};
|
|
261
|
-
exports.getTrack = getTrack;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type BufferIterator } from '../../buffer-iterator';
|
|
2
|
-
import type { ParserContext } from '../../parser-context';
|
|
3
|
-
import type { PossibleEbml } from './segments/all-segments';
|
|
4
|
-
export type Prettify<T> = {
|
|
5
|
-
[K in keyof T]: T[K];
|
|
6
|
-
} & {};
|
|
7
|
-
export declare const parseEbml: (iterator: BufferIterator, parserContext: ParserContext) => Promise<Prettify<PossibleEbml>>;
|
|
8
|
-
export declare const postprocessEbml: ({ offset, ebml, parserContext, }: {
|
|
9
|
-
offset: number;
|
|
10
|
-
ebml: Prettify<PossibleEbml>;
|
|
11
|
-
parserContext: ParserContext;
|
|
12
|
-
}) => Promise<Prettify<PossibleEbml>>;
|
|
@@ -1,185 +0,0 @@
|
|
|
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 (iterator, parserContext) => {
|
|
9
|
-
const hex = iterator.getMatroskaSegmentId();
|
|
10
|
-
if (hex === null) {
|
|
11
|
-
throw new Error('Not enough bytes left to parse EBML - this should not happen');
|
|
12
|
-
}
|
|
13
|
-
const hasInMap = all_segments_1.ebmlMap[hex];
|
|
14
|
-
if (!hasInMap) {
|
|
15
|
-
throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
|
|
16
|
-
}
|
|
17
|
-
const off = iterator.counter.getOffset();
|
|
18
|
-
const size = iterator.getVint();
|
|
19
|
-
const minVintWidth = iterator.counter.getOffset() - off;
|
|
20
|
-
if (size === null) {
|
|
21
|
-
throw new Error('Not enough bytes left to parse EBML - this should not happen');
|
|
22
|
-
}
|
|
23
|
-
if (hasInMap.type === 'uint') {
|
|
24
|
-
const beforeUintOffset = iterator.counter.getOffset();
|
|
25
|
-
const value = size === 0 ? 0 : iterator.getUint(size);
|
|
26
|
-
const { name } = hasInMap;
|
|
27
|
-
return {
|
|
28
|
-
// To work around TS limit
|
|
29
|
-
type: name,
|
|
30
|
-
value: {
|
|
31
|
-
value,
|
|
32
|
-
byteLength: iterator.counter.getOffset() - beforeUintOffset,
|
|
33
|
-
},
|
|
34
|
-
minVintWidth,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
if (hasInMap.type === 'string') {
|
|
38
|
-
const value = iterator.getByteString(size);
|
|
39
|
-
return {
|
|
40
|
-
type: hasInMap.name,
|
|
41
|
-
value,
|
|
42
|
-
minVintWidth,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
if (hasInMap.type === 'float') {
|
|
46
|
-
const value = size === 0
|
|
47
|
-
? 0.0
|
|
48
|
-
: size === 4
|
|
49
|
-
? iterator.getFloat32()
|
|
50
|
-
: iterator.getFloat64();
|
|
51
|
-
return {
|
|
52
|
-
type: hasInMap.name,
|
|
53
|
-
value: {
|
|
54
|
-
value,
|
|
55
|
-
size: size === 4 ? '32' : '64',
|
|
56
|
-
},
|
|
57
|
-
minVintWidth,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
if (hasInMap.type === 'hex-string') {
|
|
61
|
-
return {
|
|
62
|
-
type: hasInMap.name,
|
|
63
|
-
value: '0x' +
|
|
64
|
-
[...iterator.getSlice(size)]
|
|
65
|
-
.map((b) => b.toString(16).padStart(2, '0'))
|
|
66
|
-
.join('')
|
|
67
|
-
.replace(new RegExp('^' + hex), ''),
|
|
68
|
-
minVintWidth,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
if (hasInMap.type === 'uint8array') {
|
|
72
|
-
return {
|
|
73
|
-
type: hasInMap.name,
|
|
74
|
-
value: iterator.getSlice(size),
|
|
75
|
-
minVintWidth,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
if (hasInMap.type === 'children') {
|
|
79
|
-
const children = [];
|
|
80
|
-
const startOffset = iterator.counter.getOffset();
|
|
81
|
-
while (true) {
|
|
82
|
-
if (size === 0) {
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
const offset = iterator.counter.getOffset();
|
|
86
|
-
const value = await (0, exports.parseEbml)(iterator, parserContext);
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
88
|
-
const remapped = await (0, exports.postprocessEbml)({
|
|
89
|
-
offset,
|
|
90
|
-
ebml: value,
|
|
91
|
-
parserContext,
|
|
92
|
-
});
|
|
93
|
-
children.push(remapped);
|
|
94
|
-
const offsetNow = iterator.counter.getOffset();
|
|
95
|
-
if (offsetNow - startOffset > size) {
|
|
96
|
-
throw new Error(`Offset ${offsetNow - startOffset} is larger than the length of the hex ${size}`);
|
|
97
|
-
}
|
|
98
|
-
if (offsetNow - startOffset === size) {
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return { type: hasInMap.name, value: children, minVintWidth };
|
|
103
|
-
}
|
|
104
|
-
// @ts-expect-error
|
|
105
|
-
throw new Error(`Unknown segment type ${hasInMap.type}`);
|
|
106
|
-
};
|
|
107
|
-
exports.parseEbml = parseEbml;
|
|
108
|
-
const postprocessEbml = async ({ offset, ebml, parserContext, }) => {
|
|
109
|
-
if (ebml.type === 'TimestampScale') {
|
|
110
|
-
parserContext.parserState.setTimescale(ebml.value.value);
|
|
111
|
-
}
|
|
112
|
-
if (ebml.type === 'TrackEntry') {
|
|
113
|
-
parserContext.parserState.onTrackEntrySegment(ebml);
|
|
114
|
-
const track = (0, make_track_1.getTrack)({
|
|
115
|
-
track: ebml,
|
|
116
|
-
timescale: parserContext.parserState.getTimescale(),
|
|
117
|
-
});
|
|
118
|
-
if (track) {
|
|
119
|
-
await (0, register_track_1.registerTrack)({
|
|
120
|
-
state: parserContext.parserState,
|
|
121
|
-
options: parserContext,
|
|
122
|
-
track,
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
if (ebml.type === 'Timestamp') {
|
|
127
|
-
parserContext.parserState.setTimestampOffset(offset, ebml.value.value);
|
|
128
|
-
}
|
|
129
|
-
if (ebml.type === 'Block' || ebml.type === 'SimpleBlock') {
|
|
130
|
-
const sample = (0, get_sample_from_block_1.getSampleFromBlock)(ebml, parserContext, offset);
|
|
131
|
-
if (sample.type === 'video-sample' && parserContext.nullifySamples) {
|
|
132
|
-
await parserContext.parserState.onVideoSample(sample.videoSample.trackId, sample.videoSample);
|
|
133
|
-
return {
|
|
134
|
-
type: 'Block',
|
|
135
|
-
value: new Uint8Array([]),
|
|
136
|
-
minVintWidth: ebml.minVintWidth,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
if (sample.type === 'audio-sample' && parserContext.nullifySamples) {
|
|
140
|
-
await parserContext.parserState.onAudioSample(sample.audioSample.trackId, sample.audioSample);
|
|
141
|
-
return {
|
|
142
|
-
type: 'Block',
|
|
143
|
-
value: new Uint8Array([]),
|
|
144
|
-
minVintWidth: ebml.minVintWidth,
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
if (sample.type === 'no-sample' && parserContext.nullifySamples) {
|
|
148
|
-
return {
|
|
149
|
-
type: 'Block',
|
|
150
|
-
value: new Uint8Array([]),
|
|
151
|
-
minVintWidth: ebml.minVintWidth,
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (ebml.type === 'BlockGroup') {
|
|
156
|
-
// Blocks don't have information about keyframes.
|
|
157
|
-
// https://ffmpeg.org/pipermail/ffmpeg-devel/2015-June/173825.html
|
|
158
|
-
// "For Blocks, keyframes is
|
|
159
|
-
// inferred by the absence of ReferenceBlock element (as done by matroskadec).""
|
|
160
|
-
const block = ebml.value.find((c) => c.type === 'SimpleBlock' || c.type === 'Block');
|
|
161
|
-
if (!block || (block.type !== 'SimpleBlock' && block.type !== 'Block')) {
|
|
162
|
-
throw new Error('Expected block segment');
|
|
163
|
-
}
|
|
164
|
-
const hasReferenceBlock = ebml.value.find((c) => c.type === 'ReferenceBlock');
|
|
165
|
-
const sample = block.value.length === 0
|
|
166
|
-
? null
|
|
167
|
-
: (0, get_sample_from_block_1.getSampleFromBlock)(block, parserContext, offset);
|
|
168
|
-
if (sample && sample.type === 'partial-video-sample') {
|
|
169
|
-
const completeFrame = {
|
|
170
|
-
...sample.partialVideoSample,
|
|
171
|
-
type: hasReferenceBlock ? 'delta' : 'key',
|
|
172
|
-
};
|
|
173
|
-
await parserContext.parserState.onVideoSample(sample.partialVideoSample.trackId, completeFrame);
|
|
174
|
-
}
|
|
175
|
-
if (parserContext.nullifySamples) {
|
|
176
|
-
return {
|
|
177
|
-
type: 'BlockGroup',
|
|
178
|
-
value: [],
|
|
179
|
-
minVintWidth: ebml.minVintWidth,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return ebml;
|
|
184
|
-
};
|
|
185
|
-
exports.postprocessEbml = postprocessEbml;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { BufferIterator } from '../../buffer-iterator';
|
|
2
|
-
import type { Options, ParseMediaFields } from '../../options';
|
|
3
|
-
import type { MatroskaStructure, ParseResult } from '../../parse-result';
|
|
4
|
-
import type { ParserContext } from '../../parser-context';
|
|
5
|
-
export declare const parseWebm: ({ counter, parserContext, fields, }: {
|
|
6
|
-
counter: BufferIterator;
|
|
7
|
-
parserContext: ParserContext;
|
|
8
|
-
fields: Options<ParseMediaFields>;
|
|
9
|
-
}) => Promise<ParseResult<MatroskaStructure>>;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseWebm = void 0;
|
|
4
|
-
const parse_children_1 = require("./segments/parse-children");
|
|
5
|
-
const continueAfterMatroskaResult = (result, structure) => {
|
|
6
|
-
if (result.status === 'done') {
|
|
7
|
-
return {
|
|
8
|
-
status: 'done',
|
|
9
|
-
segments: structure,
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
return {
|
|
13
|
-
status: 'incomplete',
|
|
14
|
-
segments: structure,
|
|
15
|
-
continueParsing: async () => {
|
|
16
|
-
const newResult = await result.continueParsing();
|
|
17
|
-
return continueAfterMatroskaResult(newResult, structure);
|
|
18
|
-
},
|
|
19
|
-
skipTo: null,
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
// Parsing according to https://darkcoding.net/software/reading-mediarecorders-webm-opus-output/
|
|
23
|
-
const parseWebm = async ({ counter, parserContext, fields, }) => {
|
|
24
|
-
const structure = { type: 'matroska', boxes: [] };
|
|
25
|
-
const results = await (0, parse_children_1.expectChildren)({
|
|
26
|
-
iterator: counter,
|
|
27
|
-
length: Infinity,
|
|
28
|
-
children: structure.boxes,
|
|
29
|
-
parserContext,
|
|
30
|
-
startOffset: counter.counter.getOffset(),
|
|
31
|
-
fields,
|
|
32
|
-
topLevelStructure: structure,
|
|
33
|
-
});
|
|
34
|
-
return continueAfterMatroskaResult(results, structure);
|
|
35
|
-
};
|
|
36
|
-
exports.parseWebm = parseWebm;
|