@remotion/media-parser 4.0.277 → 4.0.279
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/check-if-done.d.ts +2 -0
- package/dist/check-if-done.js +34 -0
- package/dist/combine-uint8-arrays.js +5 -1
- package/dist/containers/aac/parse-aac.js +27 -18
- 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.d.ts +1 -1
- package/dist/containers/flac/get-block-size.js +5 -1
- package/dist/containers/flac/get-channel-count.d.ts +2 -2
- 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.d.ts +1 -1
- package/dist/containers/flac/get-sample-rate.js +5 -1
- package/dist/containers/flac/parse-flac-frame.d.ts +1 -1
- package/dist/containers/flac/parse-flac-frame.js +33 -23
- package/dist/containers/flac/parse-flac.d.ts +1 -1
- package/dist/containers/flac/parse-flac.js +19 -15
- package/dist/containers/flac/parse-header.d.ts +1 -1
- package/dist/containers/flac/parse-header.js +5 -1
- package/dist/containers/flac/parse-metadata.d.ts +1 -1
- package/dist/containers/flac/parse-metadata.js +5 -1
- package/dist/containers/flac/parse-streaminfo.d.ts +1 -1
- package/dist/containers/flac/parse-streaminfo.js +7 -3
- package/dist/containers/flac/parse-unknown-block.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/containers/iso-base-media/esds/decoder-specific-config.js +5 -1
- package/dist/containers/iso-base-media/esds/esds-descriptors.d.ts +1 -1
- package/dist/containers/iso-base-media/esds/esds-descriptors.js +10 -5
- package/dist/containers/iso-base-media/esds/esds.d.ts +1 -1
- package/dist/containers/iso-base-media/esds/esds.js +7 -3
- package/dist/containers/iso-base-media/ftyp.d.ts +1 -1
- 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 +26 -16
- package/dist/containers/iso-base-media/get-sample-positions-from-track.js +24 -20
- package/dist/containers/iso-base-media/get-seeking-from-mp4.d.ts +5 -0
- package/dist/containers/iso-base-media/get-seeking-from-mp4.js +56 -0
- 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 +47 -34
- package/dist/containers/iso-base-media/mdhd.d.ts +1 -1
- package/dist/containers/iso-base-media/mdhd.js +5 -1
- package/dist/containers/iso-base-media/meta/hdlr.d.ts +1 -1
- package/dist/containers/iso-base-media/meta/hdlr.js +5 -1
- package/dist/containers/iso-base-media/meta/ilst.d.ts +1 -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.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/av1c.js +5 -1
- package/dist/containers/iso-base-media/stsd/avcc.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/avcc.js +5 -1
- package/dist/containers/iso-base-media/stsd/colr.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/colr.js +7 -3
- package/dist/containers/iso-base-media/stsd/ctts.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/ctts.js +5 -1
- package/dist/containers/iso-base-media/stsd/hvcc.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/hvcc.js +7 -3
- package/dist/containers/iso-base-media/stsd/keys.d.ts +1 -1
- 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.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/stco.js +5 -1
- package/dist/containers/iso-base-media/stsd/stsc.d.ts +1 -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.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/stss.js +5 -1
- package/dist/containers/iso-base-media/stsd/stsz.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/stsz.js +5 -1
- package/dist/containers/iso-base-media/stsd/stts.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/stts.js +5 -1
- package/dist/containers/iso-base-media/tfdt.d.ts +1 -1
- package/dist/containers/iso-base-media/tfdt.js +5 -1
- package/dist/containers/iso-base-media/tfhd.d.ts +1 -1
- package/dist/containers/iso-base-media/tfhd.js +5 -1
- package/dist/containers/iso-base-media/tkhd.d.ts +1 -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.d.ts +1 -1
- 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.d.ts +1 -1
- 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.d.ts +1 -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 +28 -19
- 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.d.ts +1 -1
- package/dist/containers/riff/is-movi.js +5 -1
- package/dist/containers/riff/parse-avih.d.ts +1 -1
- package/dist/containers/riff/parse-avih.js +5 -1
- package/dist/containers/riff/parse-isft.d.ts +1 -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 +45 -31
- 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.d.ts +1 -1
- package/dist/containers/riff/parse-strf.js +5 -1
- package/dist/containers/riff/parse-strh.d.ts +1 -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.d.ts +1 -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 +21 -12
- package/dist/containers/transport-stream/handle-avc-packet.js +31 -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.d.ts +1 -1
- package/dist/containers/transport-stream/parse-pat.js +10 -5
- package/dist/containers/transport-stream/parse-pes.d.ts +1 -1
- package/dist/containers/transport-stream/parse-pes.js +5 -1
- package/dist/containers/transport-stream/parse-pmt.d.ts +1 -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 +21 -12
- 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 +35 -17
- 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.d.ts +1 -1
- 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-all-info.d.ts +3 -0
- package/dist/emit-all-info.js +30 -0
- package/dist/emit-audio-sample.d.ts +12 -0
- package/dist/emit-audio-sample.js +14 -0
- package/dist/emit-available-info.d.ts +2 -7
- package/dist/emit-available-info.js +70 -63
- package/dist/emitter.js +5 -1
- package/dist/errors.js +15 -6
- package/dist/esm/index.mjs +1921 -1618
- package/dist/esm/worker-server-entry.mjs +840 -537
- package/dist/esm/worker-web-entry.mjs +840 -537
- package/dist/esm/worker.mjs +4 -5
- package/dist/fetch.js +17 -1
- package/dist/fields.d.ts +61 -0
- package/dist/fields.js +2 -0
- 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.d.ts +2 -1
- 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-seeking-info.d.ts +4 -0
- package/dist/get-seeking-info.js +22 -0
- package/dist/get-tracks.js +40 -29
- package/dist/get-video-codec.js +34 -26
- package/dist/has-all-info.d.ts +3 -5
- package/dist/has-all-info.js +39 -35
- package/dist/index.d.ts +53 -14
- package/dist/index.js +47 -32
- package/dist/init-video.d.ts +1 -4
- package/dist/init-video.js +29 -24
- package/dist/internal-parse-media.js +40 -199
- package/dist/is-audio-structure.js +5 -1
- package/dist/{buffer-iterator.d.ts → iterator/buffer-iterator.d.ts} +12 -15
- package/dist/{buffer-iterator.js → iterator/buffer-iterator.js} +16 -119
- package/dist/iterator/buffer-manager.d.ts +18 -0
- package/dist/iterator/buffer-manager.js +87 -0
- package/dist/iterator/offset-counter.d.ts +10 -0
- package/dist/iterator/offset-counter.js +31 -0
- package/dist/log.js +12 -8
- package/dist/make-hvc1-codec-strings.d.ts +1 -1
- package/dist/make-hvc1-codec-strings.js +5 -1
- package/dist/make-progress-object.d.ts +6 -0
- package/dist/make-progress-object.js +13 -0
- package/dist/media-parser-controller.d.ts +3 -0
- package/dist/media-parser-controller.js +15 -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.d.ts +1 -61
- package/dist/options.js +2 -1
- package/dist/parse-loop.d.ts +8 -0
- package/dist/parse-loop.js +93 -0
- package/dist/parse-media-on-worker-entry.d.ts +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.d.ts +2 -7
- package/dist/perform-seek.js +29 -26
- package/dist/print-timings.d.ts +2 -0
- package/dist/print-timings.js +12 -0
- 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 +18 -9
- package/dist/remotion-license-acknowledge.js +8 -4
- package/dist/run-parse-iteration.d.ts +1 -4
- package/dist/run-parse-iteration.js +25 -24
- package/dist/samples-from-moof.js +10 -6
- package/dist/seek-backwards.d.ts +2 -0
- package/dist/seek-backwards.js +26 -0
- package/dist/seek-forwards.d.ts +2 -0
- package/dist/seek-forwards.js +28 -0
- package/dist/seek-signal.d.ts +22 -0
- package/dist/seek-signal.js +26 -0
- package/dist/seeking-info.d.ts +8 -0
- package/dist/seeking-info.js +2 -0
- package/dist/skip.js +5 -1
- package/dist/state/aac-state.js +5 -1
- package/dist/state/can-skip-tracks.d.ts +2 -2
- package/dist/state/can-skip-tracks.js +12 -4
- package/dist/state/emitted-fields.d.ts +1 -1
- package/dist/state/emitted-fields.js +5 -1
- package/dist/state/flac-state.js +5 -1
- package/dist/state/has-tracks-section.d.ts +2 -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.d.ts +1 -1
- package/dist/state/need-samples-for-fields.js +5 -1
- package/dist/state/parser-state.d.ts +38 -8
- package/dist/state/parser-state.js +59 -35
- package/dist/state/riff.js +5 -1
- package/dist/state/sample-callbacks.d.ts +8 -3
- package/dist/state/sample-callbacks.js +27 -10
- package/dist/state/slow-duration-fps.js +5 -1
- package/dist/state/structure.js +5 -1
- package/dist/state/timings.d.ts +8 -0
- package/dist/state/timings.js +13 -0
- package/dist/state/transport-stream.js +7 -3
- package/dist/state/video-section.d.ts +1 -1
- package/dist/state/video-section.js +5 -1
- package/dist/state/webm.d.ts +1 -1
- package/dist/state/webm.js +9 -5
- package/dist/throttled-progress.d.ts +2 -3
- 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/work-on-seek-request.d.ts +2 -0
- package/dist/work-on-seek-request.js +43 -0
- package/dist/worker/forward-controller.js +7 -3
- package/dist/worker/serialize-error.js +19 -14
- package/dist/worker/worker-types.d.ts +2 -1
- 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/writers/node.js +23 -16
- package/dist/writers/writer.js +2 -1
- package/package.json +10 -10
- package/dist/parse-media-on-server-worker.d.ts +0 -2
- package/dist/parse-media-on-server-worker.js +0 -4
- package/dist/parse-media-on-web-worker.d.ts +0 -2
- package/dist/parse-media-on-web-worker.js +0 -4
|
@@ -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("../../iterator/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,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.postprocessEbml = exports.parseEbml = void 0;
|
|
4
|
+
const emit_audio_sample_1 = require("../../emit-audio-sample");
|
|
5
|
+
const register_track_1 = require("../../register-track");
|
|
6
|
+
const get_sample_from_block_1 = require("./get-sample-from-block");
|
|
7
|
+
const make_track_1 = require("./make-track");
|
|
8
|
+
const all_segments_1 = require("./segments/all-segments");
|
|
9
|
+
const parseEbml = async (state) => {
|
|
6
10
|
const { iterator } = state;
|
|
7
11
|
const hex = iterator.getMatroskaSegmentId();
|
|
8
12
|
if (hex === null) {
|
|
9
13
|
throw new Error('Not enough bytes left to parse EBML - this should not happen');
|
|
10
14
|
}
|
|
11
|
-
const hasInMap = ebmlMap[hex];
|
|
15
|
+
const hasInMap = all_segments_1.ebmlMap[hex];
|
|
12
16
|
if (!hasInMap) {
|
|
13
17
|
throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
|
|
14
18
|
}
|
|
@@ -81,9 +85,9 @@ export const parseEbml = async (state) => {
|
|
|
81
85
|
break;
|
|
82
86
|
}
|
|
83
87
|
const offset = iterator.counter.getOffset();
|
|
84
|
-
const value = await parseEbml(state);
|
|
88
|
+
const value = await (0, exports.parseEbml)(state);
|
|
85
89
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
86
|
-
const remapped = await postprocessEbml({
|
|
90
|
+
const remapped = await (0, exports.postprocessEbml)({
|
|
87
91
|
offset,
|
|
88
92
|
ebml: value,
|
|
89
93
|
state,
|
|
@@ -102,7 +106,8 @@ export const parseEbml = async (state) => {
|
|
|
102
106
|
// @ts-expect-error
|
|
103
107
|
throw new Error(`Unknown segment type ${hasInMap.type}`);
|
|
104
108
|
};
|
|
105
|
-
|
|
109
|
+
exports.parseEbml = parseEbml;
|
|
110
|
+
const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
106
111
|
if (ebml.type === 'TimestampScale') {
|
|
107
112
|
state.webm.setTimescale(ebml.value.value);
|
|
108
113
|
}
|
|
@@ -111,19 +116,19 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
111
116
|
}
|
|
112
117
|
if (ebml.type === 'TrackEntry') {
|
|
113
118
|
state.webm.onTrackEntrySegment(ebml);
|
|
114
|
-
const track = getTrack({
|
|
119
|
+
const track = (0, make_track_1.getTrack)({
|
|
115
120
|
track: ebml,
|
|
116
121
|
timescale: state.webm.getTimescale(),
|
|
117
122
|
});
|
|
118
123
|
if (track && track.type === 'audio') {
|
|
119
|
-
await registerAudioTrack({
|
|
124
|
+
await (0, register_track_1.registerAudioTrack)({
|
|
120
125
|
state,
|
|
121
126
|
track,
|
|
122
127
|
container: 'webm',
|
|
123
128
|
});
|
|
124
129
|
}
|
|
125
130
|
if (track && track.type === 'video') {
|
|
126
|
-
await registerVideoTrack({
|
|
131
|
+
await (0, register_track_1.registerVideoTrack)({
|
|
127
132
|
state,
|
|
128
133
|
track,
|
|
129
134
|
container: 'webm',
|
|
@@ -134,9 +139,13 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
134
139
|
state.webm.setTimestampOffset(offset, ebml.value.value);
|
|
135
140
|
}
|
|
136
141
|
if (ebml.type === 'Block' || ebml.type === 'SimpleBlock') {
|
|
137
|
-
const sample = getSampleFromBlock(ebml, state, offset);
|
|
142
|
+
const sample = (0, get_sample_from_block_1.getSampleFromBlock)(ebml, state, offset);
|
|
138
143
|
if (sample.type === 'video-sample') {
|
|
139
|
-
await
|
|
144
|
+
await (0, emit_audio_sample_1.emitVideoSample)({
|
|
145
|
+
trackId: sample.videoSample.trackId,
|
|
146
|
+
videoSample: sample.videoSample,
|
|
147
|
+
state,
|
|
148
|
+
});
|
|
140
149
|
return {
|
|
141
150
|
type: 'Block',
|
|
142
151
|
value: new Uint8Array([]),
|
|
@@ -144,7 +153,11 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
144
153
|
};
|
|
145
154
|
}
|
|
146
155
|
if (sample.type === 'audio-sample') {
|
|
147
|
-
await
|
|
156
|
+
await (0, emit_audio_sample_1.emitAudioSample)({
|
|
157
|
+
trackId: sample.audioSample.trackId,
|
|
158
|
+
audioSample: sample.audioSample,
|
|
159
|
+
state,
|
|
160
|
+
});
|
|
148
161
|
return {
|
|
149
162
|
type: 'Block',
|
|
150
163
|
value: new Uint8Array([]),
|
|
@@ -171,13 +184,17 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
171
184
|
const hasReferenceBlock = ebml.value.find((c) => c.type === 'ReferenceBlock');
|
|
172
185
|
const sample = block.value.length === 0
|
|
173
186
|
? null
|
|
174
|
-
: getSampleFromBlock(block, state, offset);
|
|
187
|
+
: (0, get_sample_from_block_1.getSampleFromBlock)(block, state, offset);
|
|
175
188
|
if (sample && sample.type === 'partial-video-sample') {
|
|
176
189
|
const completeFrame = {
|
|
177
190
|
...sample.partialVideoSample,
|
|
178
191
|
type: hasReferenceBlock ? 'delta' : 'key',
|
|
179
192
|
};
|
|
180
|
-
await
|
|
193
|
+
await (0, emit_audio_sample_1.emitVideoSample)({
|
|
194
|
+
trackId: sample.partialVideoSample.trackId,
|
|
195
|
+
videoSample: completeFrame,
|
|
196
|
+
state,
|
|
197
|
+
});
|
|
181
198
|
}
|
|
182
199
|
return {
|
|
183
200
|
type: 'BlockGroup',
|
|
@@ -187,3 +204,4 @@ export const postprocessEbml = async ({ offset, ebml, state, }) => {
|
|
|
187
204
|
}
|
|
188
205
|
return ebml;
|
|
189
206
|
};
|
|
207
|
+
exports.postprocessEbml = postprocessEbml;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseWebm = void 0;
|
|
4
|
+
const segments_1 = require("./segments");
|
|
2
5
|
// Parsing according to https://darkcoding.net/software/reading-mediarecorders-webm-opus-output/
|
|
3
|
-
|
|
6
|
+
const parseWebm = async (state) => {
|
|
4
7
|
const structure = state.getMatroskaStructure();
|
|
5
8
|
const { iterator } = state;
|
|
6
9
|
const isInsideSegment = state.webm.isInsideSegment(iterator);
|
|
7
10
|
const isInsideCluster = state.webm.isInsideCluster(iterator);
|
|
8
|
-
const results = await expectSegment({
|
|
11
|
+
const results = await (0, segments_1.expectSegment)({
|
|
9
12
|
state,
|
|
10
13
|
isInsideSegment,
|
|
11
14
|
});
|
|
@@ -40,3 +43,4 @@ export const parseWebm = async (state) => {
|
|
|
40
43
|
}
|
|
41
44
|
return null;
|
|
42
45
|
};
|
|
46
|
+
exports.parseWebm = parseWebm;
|