@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,12 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nodeReader = exports.nodeCreateAdjacentFileSource = exports.nodeReadWholeAsText = exports.nodeReadContent = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const stream_1 = require("stream");
|
|
7
|
+
const nodeReadContent = ({ src, range, controller }) => {
|
|
5
8
|
if (typeof src !== 'string') {
|
|
6
9
|
throw new Error('src must be a string when using `nodeReader`');
|
|
7
10
|
}
|
|
8
11
|
const ownController = new AbortController();
|
|
9
|
-
const stream = createReadStream(src, {
|
|
12
|
+
const stream = (0, fs_1.createReadStream)(src, {
|
|
10
13
|
start: range === null ? 0 : typeof range === 'number' ? range : range[0],
|
|
11
14
|
end: range === null
|
|
12
15
|
? Infinity
|
|
@@ -18,8 +21,8 @@ export const nodeReadContent = ({ src, range, controller }) => {
|
|
|
18
21
|
controller._internals.signal.addEventListener('abort', () => {
|
|
19
22
|
ownController.abort();
|
|
20
23
|
}, { once: true });
|
|
21
|
-
const stats = statSync(src);
|
|
22
|
-
const reader = Readable.toWeb(stream).getReader();
|
|
24
|
+
const stats = (0, fs_1.statSync)(src);
|
|
25
|
+
const reader = stream_1.Readable.toWeb(stream).getReader();
|
|
23
26
|
if (controller) {
|
|
24
27
|
controller._internals.signal.addEventListener('abort', () => {
|
|
25
28
|
reader.cancel().catch(() => { });
|
|
@@ -34,30 +37,33 @@ export const nodeReadContent = ({ src, range, controller }) => {
|
|
|
34
37
|
},
|
|
35
38
|
contentLength: stats.size,
|
|
36
39
|
contentType: null,
|
|
37
|
-
name: src.split(sep).pop(),
|
|
40
|
+
name: src.split(path_1.sep).pop(),
|
|
38
41
|
supportsContentRange: true,
|
|
39
42
|
needsContentRange: true,
|
|
40
43
|
});
|
|
41
44
|
};
|
|
42
|
-
|
|
45
|
+
exports.nodeReadContent = nodeReadContent;
|
|
46
|
+
const nodeReadWholeAsText = (src) => {
|
|
43
47
|
if (typeof src !== 'string') {
|
|
44
48
|
throw new Error('src must be a string when using `nodeReader`');
|
|
45
49
|
}
|
|
46
|
-
return promises.readFile(src, 'utf8');
|
|
50
|
+
return fs_1.promises.readFile(src, 'utf8');
|
|
47
51
|
};
|
|
48
|
-
|
|
52
|
+
exports.nodeReadWholeAsText = nodeReadWholeAsText;
|
|
53
|
+
const nodeCreateAdjacentFileSource = (relativePath, src) => {
|
|
49
54
|
if (typeof src !== 'string') {
|
|
50
55
|
throw new Error('src must be a string when using `nodeReader`');
|
|
51
56
|
}
|
|
52
|
-
const result = join(dirname(src), relativePath);
|
|
53
|
-
const rel = relative(dirname(src), result);
|
|
57
|
+
const result = (0, path_1.join)((0, path_1.dirname)(src), relativePath);
|
|
58
|
+
const rel = (0, path_1.relative)((0, path_1.dirname)(src), result);
|
|
54
59
|
if (rel.startsWith('..')) {
|
|
55
60
|
throw new Error('Path is outside of the parent directory - not allowing reading of arbitrary files');
|
|
56
61
|
}
|
|
57
62
|
return result;
|
|
58
63
|
};
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
exports.nodeCreateAdjacentFileSource = nodeCreateAdjacentFileSource;
|
|
65
|
+
exports.nodeReader = {
|
|
66
|
+
read: exports.nodeReadContent,
|
|
67
|
+
readWholeAsText: exports.nodeReadWholeAsText,
|
|
68
|
+
createAdjacentFileSource: exports.nodeCreateAdjacentFileSource,
|
|
63
69
|
};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.webFileReader = exports.webFileCreateAdjacentFileSource = exports.webFileReadWholeAsText = exports.webFileReadContent = void 0;
|
|
4
|
+
const webFileReadContent = ({ src, range, controller }) => {
|
|
2
5
|
if (typeof src === 'string' || src instanceof URL) {
|
|
3
6
|
throw new Error('`inputTypeFileReader` only supports `File` objects');
|
|
4
7
|
}
|
|
@@ -44,14 +47,17 @@ export const webFileReadContent = ({ src, range, controller }) => {
|
|
|
44
47
|
};
|
|
45
48
|
});
|
|
46
49
|
};
|
|
47
|
-
|
|
50
|
+
exports.webFileReadContent = webFileReadContent;
|
|
51
|
+
const webFileReadWholeAsText = () => {
|
|
48
52
|
throw new Error('`webFileReader` cannot read auxiliary files.');
|
|
49
53
|
};
|
|
50
|
-
|
|
54
|
+
exports.webFileReadWholeAsText = webFileReadWholeAsText;
|
|
55
|
+
const webFileCreateAdjacentFileSource = () => {
|
|
51
56
|
throw new Error('`webFileReader` cannot create adjacent file sources.');
|
|
52
57
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
exports.webFileCreateAdjacentFileSource = webFileCreateAdjacentFileSource;
|
|
59
|
+
exports.webFileReader = {
|
|
60
|
+
read: exports.webFileReadContent,
|
|
61
|
+
readWholeAsText: exports.webFileReadWholeAsText,
|
|
62
|
+
createAdjacentFileSource: exports.webFileCreateAdjacentFileSource,
|
|
57
63
|
};
|
package/dist/readers/reader.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,35 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.universalReader = void 0;
|
|
4
|
+
const from_fetch_1 = require("./from-fetch");
|
|
5
|
+
const from_node_1 = require("./from-node");
|
|
6
|
+
const from_web_file_1 = require("./from-web-file");
|
|
7
|
+
exports.universalReader = {
|
|
5
8
|
read: (params) => {
|
|
6
9
|
if (params.src instanceof Blob) {
|
|
7
|
-
return webFileReadContent(params);
|
|
10
|
+
return (0, from_web_file_1.webFileReadContent)(params);
|
|
8
11
|
}
|
|
9
12
|
if (params.src.toString().startsWith('http') ||
|
|
10
13
|
params.src.toString().startsWith('blob:')) {
|
|
11
|
-
return fetchReadContent(params);
|
|
14
|
+
return (0, from_fetch_1.fetchReadContent)(params);
|
|
12
15
|
}
|
|
13
|
-
return nodeReadContent(params);
|
|
16
|
+
return (0, from_node_1.nodeReadContent)(params);
|
|
14
17
|
},
|
|
15
18
|
readWholeAsText: (src) => {
|
|
16
19
|
if (src instanceof Blob) {
|
|
17
|
-
return webFileReadWholeAsText(src);
|
|
20
|
+
return (0, from_web_file_1.webFileReadWholeAsText)(src);
|
|
18
21
|
}
|
|
19
22
|
if (src.toString().startsWith('http') ||
|
|
20
23
|
src.toString().startsWith('blob:')) {
|
|
21
|
-
return fetchReadWholeAsText(src);
|
|
24
|
+
return (0, from_fetch_1.fetchReadWholeAsText)(src);
|
|
22
25
|
}
|
|
23
|
-
return nodeReadWholeAsText(src);
|
|
26
|
+
return (0, from_node_1.nodeReadWholeAsText)(src);
|
|
24
27
|
},
|
|
25
28
|
createAdjacentFileSource: (relativePath, src) => {
|
|
26
29
|
if (src instanceof Blob) {
|
|
27
|
-
return webFileCreateAdjacentFileSource(relativePath, src);
|
|
30
|
+
return (0, from_web_file_1.webFileCreateAdjacentFileSource)(relativePath, src);
|
|
28
31
|
}
|
|
29
32
|
if (src.toString().startsWith('http') ||
|
|
30
33
|
src.toString().startsWith('blob:')) {
|
|
31
|
-
return fetchCreateAdjacentFileSource(relativePath, src);
|
|
34
|
+
return (0, from_fetch_1.fetchCreateAdjacentFileSource)(relativePath, src);
|
|
32
35
|
}
|
|
33
|
-
return nodeCreateAdjacentFileSource(relativePath, src);
|
|
36
|
+
return (0, from_node_1.nodeCreateAdjacentFileSource)(relativePath, src);
|
|
34
37
|
},
|
|
35
38
|
};
|
package/dist/readers/web.js
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.webReader = void 0;
|
|
4
|
+
const from_fetch_1 = require("./from-fetch");
|
|
5
|
+
const from_web_file_1 = require("./from-web-file");
|
|
6
|
+
exports.webReader = {
|
|
4
7
|
read: (params) => {
|
|
5
8
|
if (params.src instanceof Blob) {
|
|
6
|
-
return webFileReadContent(params);
|
|
9
|
+
return (0, from_web_file_1.webFileReadContent)(params);
|
|
7
10
|
}
|
|
8
|
-
return fetchReadContent(params);
|
|
11
|
+
return (0, from_fetch_1.fetchReadContent)(params);
|
|
9
12
|
},
|
|
10
13
|
createAdjacentFileSource: (relativePath, src) => {
|
|
11
14
|
if (src instanceof Blob) {
|
|
12
|
-
return webFileCreateAdjacentFileSource(relativePath, src);
|
|
15
|
+
return (0, from_web_file_1.webFileCreateAdjacentFileSource)(relativePath, src);
|
|
13
16
|
}
|
|
14
|
-
return fetchCreateAdjacentFileSource(relativePath, src);
|
|
17
|
+
return (0, from_fetch_1.fetchCreateAdjacentFileSource)(relativePath, src);
|
|
15
18
|
},
|
|
16
19
|
readWholeAsText: (src) => {
|
|
17
20
|
if (src instanceof Blob) {
|
|
18
|
-
return webFileReadWholeAsText(src);
|
|
21
|
+
return (0, from_web_file_1.webFileReadWholeAsText)(src);
|
|
19
22
|
}
|
|
20
|
-
return fetchReadWholeAsText(src);
|
|
23
|
+
return (0, from_fetch_1.fetchReadWholeAsText)(src);
|
|
21
24
|
},
|
|
22
25
|
};
|
package/dist/register-track.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerVideoTrackWhenProfileIsAvailable = exports.registerAudioTrack = exports.registerVideoTrack = void 0;
|
|
4
|
+
const add_avc_profile_to_track_1 = require("./add-avc-profile-to-track");
|
|
5
|
+
const log_1 = require("./log");
|
|
6
|
+
const work_on_seek_request_1 = require("./work-on-seek-request");
|
|
7
|
+
const registerVideoTrack = async ({ state, track, container, }) => {
|
|
4
8
|
if (state.callbacks.tracks.getTracks().find((t) => t.trackId === track.trackId)) {
|
|
5
|
-
Log.trace(state.logLevel, `Track ${track.trackId} already registered, skipping`);
|
|
9
|
+
log_1.Log.trace(state.logLevel, `Track ${track.trackId} already registered, skipping`);
|
|
6
10
|
return null;
|
|
7
11
|
}
|
|
8
12
|
if (track.type !== 'video') {
|
|
@@ -14,11 +18,13 @@ export const registerVideoTrack = async ({ state, track, container, }) => {
|
|
|
14
18
|
}
|
|
15
19
|
const callback = await state.onVideoTrack({ track, container });
|
|
16
20
|
await state.callbacks.registerVideoSampleCallback(track.trackId, callback !== null && callback !== void 0 ? callback : null);
|
|
21
|
+
await (0, work_on_seek_request_1.workOnSeekRequest)(state);
|
|
17
22
|
return callback;
|
|
18
23
|
};
|
|
19
|
-
|
|
24
|
+
exports.registerVideoTrack = registerVideoTrack;
|
|
25
|
+
const registerAudioTrack = async ({ state, track, container, }) => {
|
|
20
26
|
if (state.callbacks.tracks.getTracks().find((t) => t.trackId === track.trackId)) {
|
|
21
|
-
Log.trace(state.logLevel, `Track ${track.trackId} already registered, skipping`);
|
|
27
|
+
log_1.Log.trace(state.logLevel, `Track ${track.trackId} already registered, skipping`);
|
|
22
28
|
return null;
|
|
23
29
|
}
|
|
24
30
|
if (track.type !== 'audio') {
|
|
@@ -30,14 +36,17 @@ export const registerAudioTrack = async ({ state, track, container, }) => {
|
|
|
30
36
|
}
|
|
31
37
|
const callback = await state.onAudioTrack({ track, container });
|
|
32
38
|
await state.callbacks.registerAudioSampleCallback(track.trackId, callback !== null && callback !== void 0 ? callback : null);
|
|
39
|
+
await (0, work_on_seek_request_1.workOnSeekRequest)(state);
|
|
33
40
|
return callback;
|
|
34
41
|
};
|
|
35
|
-
|
|
42
|
+
exports.registerAudioTrack = registerAudioTrack;
|
|
43
|
+
const registerVideoTrackWhenProfileIsAvailable = ({ state, track, container, }) => {
|
|
36
44
|
state.riff.registerOnAvcProfileCallback(async (profile) => {
|
|
37
|
-
await registerVideoTrack({
|
|
45
|
+
await (0, exports.registerVideoTrack)({
|
|
38
46
|
state,
|
|
39
|
-
track: addAvcProfileToTrack(track, profile),
|
|
47
|
+
track: (0, add_avc_profile_to_track_1.addAvcProfileToTrack)(track, profile),
|
|
40
48
|
container,
|
|
41
49
|
});
|
|
42
50
|
});
|
|
43
51
|
};
|
|
52
|
+
exports.registerVideoTrackWhenProfileIsAvailable = registerVideoTrackWhenProfileIsAvailable;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.warnIfRemotionLicenseNotAcknowledged = void 0;
|
|
4
|
+
const log_1 = require("./log");
|
|
2
5
|
let warningShown = false;
|
|
3
|
-
|
|
6
|
+
const warnIfRemotionLicenseNotAcknowledged = ({ acknowledgeRemotionLicense, logLevel, apiName, }) => {
|
|
4
7
|
if (acknowledgeRemotionLicense) {
|
|
5
8
|
return;
|
|
6
9
|
}
|
|
@@ -8,6 +11,7 @@ export const warnIfRemotionLicenseNotAcknowledged = ({ acknowledgeRemotionLicens
|
|
|
8
11
|
return;
|
|
9
12
|
}
|
|
10
13
|
warningShown = true;
|
|
11
|
-
Log.warn(logLevel, 'Note: Some companies are required to obtain a license to use @remotion/media-parser. See: https://remotion.dev/license');
|
|
12
|
-
Log.warn(logLevel, `Pass \`acknowledgeRemotionLicense: true\` to \`${apiName}\` function to make this message disappear.`);
|
|
14
|
+
log_1.Log.warn(logLevel, 'Note: Some companies are required to obtain a license to use @remotion/media-parser. See: https://remotion.dev/license');
|
|
15
|
+
log_1.Log.warn(logLevel, `Pass \`acknowledgeRemotionLicense: true\` to \`${apiName}\` function to make this message disappear.`);
|
|
13
16
|
};
|
|
17
|
+
exports.warnIfRemotionLicenseNotAcknowledged = warnIfRemotionLicenseNotAcknowledged;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import type { ParseResult } from './parse-result';
|
|
2
2
|
import type { ParserState } from './state/parser-state';
|
|
3
|
-
export declare const runParseIteration: ({ state,
|
|
3
|
+
export declare const runParseIteration: ({ state, }: {
|
|
4
4
|
state: ParserState;
|
|
5
|
-
mimeType: string | null;
|
|
6
|
-
contentLength: number;
|
|
7
|
-
name: string | null;
|
|
8
5
|
}) => Promise<ParseResult>;
|
|
@@ -1,54 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runParseIteration = void 0;
|
|
4
|
+
const parse_aac_1 = require("./containers/aac/parse-aac");
|
|
5
|
+
const parse_flac_1 = require("./containers/flac/parse-flac");
|
|
6
|
+
const parse_boxes_1 = require("./containers/iso-base-media/parse-boxes");
|
|
7
|
+
const parse_m3u_1 = require("./containers/m3u/parse-m3u");
|
|
8
|
+
const parse_mp3_1 = require("./containers/mp3/parse-mp3");
|
|
9
|
+
const parse_riff_1 = require("./containers/riff/parse-riff");
|
|
10
|
+
const parse_transport_stream_1 = require("./containers/transport-stream/parse-transport-stream");
|
|
11
|
+
const parse_wav_1 = require("./containers/wav/parse-wav");
|
|
12
|
+
const parse_webm_header_1 = require("./containers/webm/parse-webm-header");
|
|
13
|
+
const init_video_1 = require("./init-video");
|
|
14
|
+
const runParseIteration = async ({ state, }) => {
|
|
12
15
|
const structure = state.getStructureOrNull();
|
|
13
16
|
// m3u8 is busy parsing the chunks once the manifest has been read
|
|
14
17
|
if (structure && structure.type === 'm3u') {
|
|
15
|
-
return parseM3u({ state });
|
|
18
|
+
return (0, parse_m3u_1.parseM3u)({ state });
|
|
16
19
|
}
|
|
17
20
|
if (state.iterator.bytesRemaining() === 0) {
|
|
18
21
|
return Promise.reject(new Error('no bytes'));
|
|
19
22
|
}
|
|
20
23
|
if (structure === null) {
|
|
21
|
-
await initVideo({
|
|
24
|
+
await (0, init_video_1.initVideo)({
|
|
22
25
|
state,
|
|
23
|
-
mimeType,
|
|
24
|
-
name,
|
|
25
|
-
contentLength,
|
|
26
26
|
});
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
29
|
if (structure.type === 'riff') {
|
|
30
|
-
return parseRiff(state);
|
|
30
|
+
return (0, parse_riff_1.parseRiff)(state);
|
|
31
31
|
}
|
|
32
32
|
if (structure.type === 'mp3') {
|
|
33
|
-
return parseMp3(state);
|
|
33
|
+
return (0, parse_mp3_1.parseMp3)(state);
|
|
34
34
|
}
|
|
35
35
|
if (structure.type === 'iso-base-media') {
|
|
36
|
-
return parseIsoBaseMedia(state);
|
|
36
|
+
return (0, parse_boxes_1.parseIsoBaseMedia)(state);
|
|
37
37
|
}
|
|
38
38
|
if (structure.type === 'matroska') {
|
|
39
|
-
return parseWebm(state);
|
|
39
|
+
return (0, parse_webm_header_1.parseWebm)(state);
|
|
40
40
|
}
|
|
41
41
|
if (structure.type === 'transport-stream') {
|
|
42
|
-
return parseTransportStream(state);
|
|
42
|
+
return (0, parse_transport_stream_1.parseTransportStream)(state);
|
|
43
43
|
}
|
|
44
44
|
if (structure.type === 'wav') {
|
|
45
|
-
return parseWav(state);
|
|
45
|
+
return (0, parse_wav_1.parseWav)(state);
|
|
46
46
|
}
|
|
47
47
|
if (structure.type === 'aac') {
|
|
48
|
-
return parseAac(state);
|
|
48
|
+
return (0, parse_aac_1.parseAac)(state);
|
|
49
49
|
}
|
|
50
50
|
if (structure.type === 'flac') {
|
|
51
|
-
return parseFlac({ state, iterator: state.iterator });
|
|
51
|
+
return (0, parse_flac_1.parseFlac)({ state, iterator: state.iterator });
|
|
52
52
|
}
|
|
53
53
|
return Promise.reject(new Error('Unknown video format ' + structure));
|
|
54
54
|
};
|
|
55
|
+
exports.runParseIteration = runParseIteration;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSamplesFromMoof = void 0;
|
|
4
|
+
const traversal_1 = require("./containers/iso-base-media/traversal");
|
|
2
5
|
const getSamplesFromTraf = (trafSegment, moofOffset) => {
|
|
3
6
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
4
7
|
if (trafSegment.type !== 'regular-box' || trafSegment.boxType !== 'traf') {
|
|
5
8
|
throw new Error('Expected traf-box');
|
|
6
9
|
}
|
|
7
|
-
const tfhdBox = getTfhdBox(trafSegment);
|
|
10
|
+
const tfhdBox = (0, traversal_1.getTfhdBox)(trafSegment);
|
|
8
11
|
const defaultSampleDuration = (_a = tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleDuration) !== null && _a !== void 0 ? _a : null;
|
|
9
12
|
const defaultSampleSize = (_b = tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleSize) !== null && _b !== void 0 ? _b : null;
|
|
10
13
|
const defaultSampleFlags = (_c = tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleFlags) !== null && _c !== void 0 ? _c : null;
|
|
11
|
-
const tfdtBox = getTfdtBox(trafSegment);
|
|
12
|
-
const trunBoxes = getTrunBoxes(trafSegment);
|
|
14
|
+
const tfdtBox = (0, traversal_1.getTfdtBox)(trafSegment);
|
|
15
|
+
const trunBoxes = (0, traversal_1.getTrunBoxes)(trafSegment);
|
|
13
16
|
let time = 0;
|
|
14
17
|
let offset = 0;
|
|
15
18
|
let dataOffset = 0;
|
|
@@ -57,16 +60,17 @@ const getSamplesFromTraf = (trafSegment, moofOffset) => {
|
|
|
57
60
|
}
|
|
58
61
|
return samples;
|
|
59
62
|
};
|
|
60
|
-
|
|
63
|
+
const getSamplesFromMoof = ({ moofBox, trackId, }) => {
|
|
61
64
|
if (moofBox.type !== 'regular-box') {
|
|
62
65
|
throw new Error('Expected moof-box');
|
|
63
66
|
}
|
|
64
67
|
const trafs = moofBox.children.filter((c) => c.type === 'regular-box' && c.boxType === 'traf');
|
|
65
68
|
const mapped = trafs.map((traf) => {
|
|
66
|
-
const tfhdBox = getTfhdBox(traf);
|
|
69
|
+
const tfhdBox = (0, traversal_1.getTfhdBox)(traf);
|
|
67
70
|
return (tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.trackId) === trackId
|
|
68
71
|
? getSamplesFromTraf(traf, moofBox.offset)
|
|
69
72
|
: [];
|
|
70
73
|
});
|
|
71
74
|
return mapped.flat(1);
|
|
72
75
|
};
|
|
76
|
+
exports.getSamplesFromMoof = getSamplesFromMoof;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seekBackwards = void 0;
|
|
4
|
+
const log_1 = require("./log");
|
|
5
|
+
const seekBackwards = async (state, seekTo) => {
|
|
6
|
+
const { iterator } = state;
|
|
7
|
+
// (a) data has not been discarded yet
|
|
8
|
+
const howManyBytesNotYetDiscarded = iterator.counter.getDiscardedOffset();
|
|
9
|
+
const howManyBytesWeCanGoBack = iterator.counter.getOffset() - howManyBytesNotYetDiscarded;
|
|
10
|
+
if (iterator.counter.getOffset() - howManyBytesWeCanGoBack <= seekTo) {
|
|
11
|
+
iterator.skipTo(seekTo);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// (b) data has been discarded, making new reader
|
|
15
|
+
const time = Date.now();
|
|
16
|
+
log_1.Log.verbose(state.logLevel, `Seeking in video from position ${iterator.counter.getOffset()} -> ${seekTo}. Re-reading because this portion is not available`);
|
|
17
|
+
const { reader: newReader } = await state.readerInterface.read({
|
|
18
|
+
src: state.src,
|
|
19
|
+
range: seekTo,
|
|
20
|
+
controller: state.controller,
|
|
21
|
+
});
|
|
22
|
+
iterator.replaceData(new Uint8Array([]), seekTo);
|
|
23
|
+
log_1.Log.verbose(state.logLevel, `Re-reading took ${Date.now() - time}ms. New position: ${iterator.counter.getOffset()}`);
|
|
24
|
+
state.currentReader = newReader;
|
|
25
|
+
};
|
|
26
|
+
exports.seekBackwards = seekBackwards;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seekForward = void 0;
|
|
4
|
+
const log_1 = require("./log");
|
|
5
|
+
const seekForward = async (state, seekTo) => {
|
|
6
|
+
const { iterator } = state;
|
|
7
|
+
const alreadyHasBuffer = iterator.bytesRemaining() >= seekTo - iterator.counter.getOffset();
|
|
8
|
+
log_1.Log.verbose(state.logLevel, `Performing seek from ${iterator.counter.getOffset()} to ${seekTo}`);
|
|
9
|
+
// (a) starting byte has already been fetched
|
|
10
|
+
if (alreadyHasBuffer) {
|
|
11
|
+
iterator.skipTo(seekTo);
|
|
12
|
+
log_1.Log.verbose(state.logLevel, `Already read ahead enough, skipping forward`);
|
|
13
|
+
return state.currentReader;
|
|
14
|
+
}
|
|
15
|
+
// (b) starting byte has not been fetched yet, making new reader
|
|
16
|
+
const time = Date.now();
|
|
17
|
+
log_1.Log.verbose(state.logLevel, `Skipping over video data from position ${iterator.counter.getOffset()} -> ${seekTo}. Re-reading because this portion is not available`);
|
|
18
|
+
const { reader: newReader } = await state.readerInterface.read({
|
|
19
|
+
src: state.src,
|
|
20
|
+
range: seekTo,
|
|
21
|
+
controller: state.controller,
|
|
22
|
+
});
|
|
23
|
+
iterator.skipTo(seekTo);
|
|
24
|
+
await state.discardReadBytes(true);
|
|
25
|
+
log_1.Log.verbose(state.logLevel, `Re-reading took ${Date.now() - time}ms. New position: ${iterator.counter.getOffset()}`);
|
|
26
|
+
state.currentReader = newReader;
|
|
27
|
+
};
|
|
28
|
+
exports.seekForward = seekForward;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type SeekSignal = {
|
|
2
|
+
seek: (seek: Seek) => void;
|
|
3
|
+
getSeek: () => Seek | undefined;
|
|
4
|
+
clearSeekIfStillSame: (previousSeek: Seek) => {
|
|
5
|
+
hasChanged: boolean;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
type SeekToTime = {
|
|
9
|
+
type: 'keyframe-before-time-in-seconds';
|
|
10
|
+
time: number;
|
|
11
|
+
};
|
|
12
|
+
type SeekToByte = {
|
|
13
|
+
type: 'byte';
|
|
14
|
+
byte: number;
|
|
15
|
+
};
|
|
16
|
+
type ForceSeekToByte = {
|
|
17
|
+
type: 'force-seek-to-byte';
|
|
18
|
+
byte: number;
|
|
19
|
+
};
|
|
20
|
+
export type Seek = SeekToTime | SeekToByte | ForceSeekToByte;
|
|
21
|
+
export declare const makeSeekSignal: () => SeekSignal;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeSeekSignal = void 0;
|
|
4
|
+
const makeSeekSignal = () => {
|
|
5
|
+
let seek;
|
|
6
|
+
return {
|
|
7
|
+
seek: (time) => {
|
|
8
|
+
if (seek) {
|
|
9
|
+
throw new Error('Seek already requested, must wait');
|
|
10
|
+
}
|
|
11
|
+
seek = time;
|
|
12
|
+
},
|
|
13
|
+
getSeek() {
|
|
14
|
+
return seek;
|
|
15
|
+
},
|
|
16
|
+
// In the meanwhile a new seek could have been queued
|
|
17
|
+
clearSeekIfStillSame(previousSeek) {
|
|
18
|
+
if (seek === previousSeek) {
|
|
19
|
+
seek = undefined;
|
|
20
|
+
return { hasChanged: false };
|
|
21
|
+
}
|
|
22
|
+
return { hasChanged: true };
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.makeSeekSignal = makeSeekSignal;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IsoBaseMediaBox } from './containers/iso-base-media/base-media-box';
|
|
2
|
+
import type { MoovBox } from './containers/iso-base-media/moov/moov';
|
|
3
|
+
export type IsoBaseMediaSeekingInfo = {
|
|
4
|
+
type: 'iso-base-media-seeking-info';
|
|
5
|
+
moovBox: MoovBox;
|
|
6
|
+
moofBoxes: IsoBaseMediaBox[];
|
|
7
|
+
};
|
|
8
|
+
export type SeekingInfo = IsoBaseMediaSeekingInfo;
|
package/dist/skip.js
CHANGED
package/dist/state/aac-state.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aacState = void 0;
|
|
4
|
+
const aacState = () => {
|
|
2
5
|
const samples = [];
|
|
3
6
|
return {
|
|
4
7
|
addSample: ({ offset, size }) => {
|
|
@@ -11,3 +14,4 @@ export const aacState = () => {
|
|
|
11
14
|
getSamples: () => samples,
|
|
12
15
|
};
|
|
13
16
|
};
|
|
17
|
+
exports.aacState = aacState;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { Options, ParseMediaFields } from '../
|
|
1
|
+
import type { Options, ParseMediaFields } from '../fields';
|
|
2
2
|
import type { MediaParserStructureUnstable } from '../parse-result';
|
|
3
3
|
import type { StructureState } from './structure';
|
|
4
4
|
export declare const needsTracksForField: ({ field, structure, }: {
|
|
5
5
|
field: keyof Options<ParseMediaFields>;
|
|
6
|
-
structure: MediaParserStructureUnstable;
|
|
6
|
+
structure: MediaParserStructureUnstable | null;
|
|
7
7
|
}) => boolean;
|
|
8
8
|
export declare const makeCanSkipTracksState: ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }: {
|
|
9
9
|
hasAudioTrackHandlers: boolean;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeCanSkipTracksState = exports.needsTracksForField = void 0;
|
|
4
|
+
const needsTracksForField = ({ field, structure, }) => {
|
|
2
5
|
if (field === 'dimensions') {
|
|
3
|
-
if (structure.type === 'riff') {
|
|
6
|
+
if ((structure === null || structure === void 0 ? void 0 : structure.type) === 'riff') {
|
|
4
7
|
return false;
|
|
5
8
|
}
|
|
6
9
|
return true;
|
|
@@ -38,7 +41,8 @@ export const needsTracksForField = ({ field, structure, }) => {
|
|
|
38
41
|
}
|
|
39
42
|
throw new Error(`field not implemeted ${field}`);
|
|
40
43
|
};
|
|
41
|
-
|
|
44
|
+
exports.needsTracksForField = needsTracksForField;
|
|
45
|
+
const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideoTrackHandlers, structure, }) => {
|
|
42
46
|
return {
|
|
43
47
|
canSkipTracks: () => {
|
|
44
48
|
if (hasAudioTrackHandlers || hasVideoTrackHandlers) {
|
|
@@ -46,7 +50,11 @@ export const makeCanSkipTracksState = ({ hasAudioTrackHandlers, fields, hasVideo
|
|
|
46
50
|
}
|
|
47
51
|
const keys = Object.keys(fields !== null && fields !== void 0 ? fields : {});
|
|
48
52
|
const selectedKeys = keys.filter((k) => fields[k]);
|
|
49
|
-
return !selectedKeys.some((k) =>
|
|
53
|
+
return !selectedKeys.some((k) => (0, exports.needsTracksForField)({
|
|
54
|
+
field: k,
|
|
55
|
+
structure: structure.getStructureOrNull(),
|
|
56
|
+
}));
|
|
50
57
|
},
|
|
51
58
|
};
|
|
52
59
|
};
|
|
60
|
+
exports.makeCanSkipTracksState = makeCanSkipTracksState;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { AllOptions, ParseMediaFields } from '../
|
|
1
|
+
import type { AllOptions, ParseMediaFields } from '../fields';
|
|
2
2
|
export declare const emittedState: () => AllOptions<ParseMediaFields>;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emittedState = void 0;
|
|
4
|
+
const emittedState = () => {
|
|
2
5
|
const emittedFields = {
|
|
3
6
|
audioCodec: false,
|
|
4
7
|
container: false,
|
|
@@ -31,3 +34,4 @@ export const emittedState = () => {
|
|
|
31
34
|
};
|
|
32
35
|
return emittedFields;
|
|
33
36
|
};
|
|
37
|
+
exports.emittedState = emittedState;
|