@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,70 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _OffsetCounter_offset, _OffsetCounter_discardedBytes;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getArrayBufferIterator = void 0;
|
|
13
4
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__classPrivateFieldSet(this, _OffsetCounter_discardedBytes, 0, "f");
|
|
22
|
-
}
|
|
23
|
-
increment(amount) {
|
|
24
|
-
if (amount < 0) {
|
|
25
|
-
throw new Error('Cannot increment by a negative amount: ' + amount);
|
|
26
|
-
}
|
|
27
|
-
__classPrivateFieldSet(this, _OffsetCounter_offset, __classPrivateFieldGet(this, _OffsetCounter_offset, "f") + amount, "f");
|
|
28
|
-
}
|
|
29
|
-
getOffset() {
|
|
30
|
-
return __classPrivateFieldGet(this, _OffsetCounter_offset, "f");
|
|
31
|
-
}
|
|
32
|
-
getDiscardedOffset() {
|
|
33
|
-
return __classPrivateFieldGet(this, _OffsetCounter_offset, "f") - __classPrivateFieldGet(this, _OffsetCounter_discardedBytes, "f");
|
|
34
|
-
}
|
|
35
|
-
setDiscardedOffset(offset) {
|
|
36
|
-
__classPrivateFieldSet(this, _OffsetCounter_discardedBytes, offset, "f");
|
|
37
|
-
}
|
|
38
|
-
getDiscardedBytes() {
|
|
39
|
-
return __classPrivateFieldGet(this, _OffsetCounter_discardedBytes, "f");
|
|
40
|
-
}
|
|
41
|
-
discardBytes(amount) {
|
|
42
|
-
__classPrivateFieldSet(this, _OffsetCounter_discardedBytes, __classPrivateFieldGet(this, _OffsetCounter_discardedBytes, "f") + amount, "f");
|
|
43
|
-
}
|
|
44
|
-
decrement(amount) {
|
|
45
|
-
if (amount < 0) {
|
|
46
|
-
throw new Error('Cannot decrement by a negative amount');
|
|
47
|
-
}
|
|
48
|
-
__classPrivateFieldSet(this, _OffsetCounter_offset, __classPrivateFieldGet(this, _OffsetCounter_offset, "f") - amount, "f");
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
_OffsetCounter_offset = new WeakMap(), _OffsetCounter_discardedBytes = new WeakMap();
|
|
52
|
-
const makeOffsetCounter = () => {
|
|
53
|
-
return new OffsetCounter(0);
|
|
54
|
-
};
|
|
55
|
-
export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
56
|
-
const buf = new ArrayBuffer(initialData.byteLength, {
|
|
57
|
-
maxByteLength: maxBytes === null
|
|
58
|
-
? initialData.byteLength
|
|
59
|
-
: Math.min(maxBytes, 2 ** 32),
|
|
60
|
-
});
|
|
61
|
-
if (!buf.resize) {
|
|
62
|
-
throw new Error('`ArrayBuffer.resize` is not supported in this Runtime. On the server: Use at least Node.js 20 or Bun. In the browser: Chrome 111, Edge 111, Safari 16.4, Firefox 128, Opera 111');
|
|
63
|
-
}
|
|
64
|
-
let uintArray = new Uint8Array(buf);
|
|
65
|
-
uintArray.set(initialData);
|
|
66
|
-
let view = new DataView(uintArray.buffer);
|
|
67
|
-
const counter = makeOffsetCounter();
|
|
5
|
+
const all_segments_1 = require("../containers/webm/segments/all-segments");
|
|
6
|
+
const file_types_1 = require("../file-types");
|
|
7
|
+
const buffer_manager_1 = require("./buffer-manager");
|
|
8
|
+
const offset_counter_1 = require("./offset-counter");
|
|
9
|
+
const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
10
|
+
const counter = (0, offset_counter_1.makeOffsetCounter)(0);
|
|
11
|
+
const { uintArray, view, addData, destroy, removeBytesRead, skipTo, replaceData, } = (0, buffer_manager_1.bufferManager)({ initialData, maxBytes, counter });
|
|
68
12
|
const startCheckpoint = () => {
|
|
69
13
|
const checkpoint = counter.getOffset();
|
|
70
14
|
return {
|
|
@@ -209,54 +153,9 @@ export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
|
209
153
|
counter.increment(4);
|
|
210
154
|
return val;
|
|
211
155
|
};
|
|
212
|
-
const addData = (newData) => {
|
|
213
|
-
const oldLength = buf.byteLength;
|
|
214
|
-
const newLength = oldLength + newData.byteLength;
|
|
215
|
-
if (newLength < oldLength) {
|
|
216
|
-
throw new Error('Cannot decrement size');
|
|
217
|
-
}
|
|
218
|
-
if (newLength > (maxBytes !== null && maxBytes !== void 0 ? maxBytes : Infinity)) {
|
|
219
|
-
throw new Error(`Exceeded maximum byte length ${maxBytes} with ${newLength}`);
|
|
220
|
-
}
|
|
221
|
-
buf.resize(newLength);
|
|
222
|
-
const newArray = new Uint8Array(buf);
|
|
223
|
-
newArray.set(newData, oldLength);
|
|
224
|
-
uintArray = newArray;
|
|
225
|
-
view = new DataView(uintArray.buffer);
|
|
226
|
-
};
|
|
227
156
|
const bytesRemaining = () => {
|
|
228
157
|
return uintArray.byteLength - counter.getDiscardedOffset();
|
|
229
158
|
};
|
|
230
|
-
const removeBytesRead = (force, mode) => {
|
|
231
|
-
const bytesToRemove = counter.getDiscardedOffset();
|
|
232
|
-
// Only do this operation if it is really worth it 😇
|
|
233
|
-
// let's set the threshold to 3MB
|
|
234
|
-
if (bytesToRemove < 3000000 && !force) {
|
|
235
|
-
return { bytesRemoved: 0, removedData: null };
|
|
236
|
-
}
|
|
237
|
-
// Don't remove if the data is not even available
|
|
238
|
-
if (view.byteLength < bytesToRemove && !force) {
|
|
239
|
-
return { bytesRemoved: 0, removedData: null };
|
|
240
|
-
}
|
|
241
|
-
counter.discardBytes(bytesToRemove);
|
|
242
|
-
const removedData = mode === 'download' ? uintArray.slice(0, bytesToRemove) : null;
|
|
243
|
-
const newData = uintArray.slice(bytesToRemove);
|
|
244
|
-
uintArray.set(newData);
|
|
245
|
-
buf.resize(newData.byteLength);
|
|
246
|
-
view = new DataView(uintArray.buffer);
|
|
247
|
-
return { bytesRemoved: bytesToRemove, removedData };
|
|
248
|
-
};
|
|
249
|
-
const skipTo = (offset) => {
|
|
250
|
-
const becomesSmaller = offset < counter.getOffset();
|
|
251
|
-
if (!becomesSmaller) {
|
|
252
|
-
const currentOffset = counter.getOffset();
|
|
253
|
-
counter.increment(offset - currentOffset);
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
|
-
buf.resize(0);
|
|
257
|
-
counter.decrement(counter.getOffset() - offset);
|
|
258
|
-
counter.setDiscardedOffset(offset);
|
|
259
|
-
};
|
|
260
159
|
const readExpGolomb = () => {
|
|
261
160
|
if (!bitReadingMode) {
|
|
262
161
|
throw new Error('Not in bit reading mode');
|
|
@@ -356,10 +255,6 @@ export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
|
356
255
|
}
|
|
357
256
|
return result;
|
|
358
257
|
};
|
|
359
|
-
const destroy = () => {
|
|
360
|
-
uintArray = new Uint8Array(0);
|
|
361
|
-
buf.resize(0);
|
|
362
|
-
};
|
|
363
258
|
return {
|
|
364
259
|
startReadingBits,
|
|
365
260
|
stopReadingBits,
|
|
@@ -381,7 +276,7 @@ export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
|
381
276
|
return new TextDecoder().decode(atom);
|
|
382
277
|
},
|
|
383
278
|
detectFileType: () => {
|
|
384
|
-
return detectFileType(uintArray);
|
|
279
|
+
return (0, file_types_1.detectFileType)(uintArray);
|
|
385
280
|
},
|
|
386
281
|
getPaddedFourByteNumber,
|
|
387
282
|
getMatroskaSegmentId: () => {
|
|
@@ -396,7 +291,7 @@ export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
|
396
291
|
.join('')}`;
|
|
397
292
|
// Catch void block
|
|
398
293
|
// https://www.matroska.org/technical/elements.html
|
|
399
|
-
if (knownIdsWithOneLength.includes(firstOneString)) {
|
|
294
|
+
if (all_segments_1.knownIdsWithOneLength.includes(firstOneString)) {
|
|
400
295
|
return firstOneString;
|
|
401
296
|
}
|
|
402
297
|
if (bytesRemaining() === 0) {
|
|
@@ -408,7 +303,7 @@ export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
|
408
303
|
return b.toString(16).padStart(2, '0');
|
|
409
304
|
})
|
|
410
305
|
.join('')}`;
|
|
411
|
-
if (knownIdsWithTwoLength.includes(firstTwoString)) {
|
|
306
|
+
if (all_segments_1.knownIdsWithTwoLength.includes(firstTwoString)) {
|
|
412
307
|
return firstTwoString;
|
|
413
308
|
}
|
|
414
309
|
if (bytesRemaining() === 0) {
|
|
@@ -420,7 +315,7 @@ export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
|
420
315
|
return b.toString(16).padStart(2, '0');
|
|
421
316
|
})
|
|
422
317
|
.join('')}`;
|
|
423
|
-
if (knownIdsWithThreeLength.includes(firstThreeString)) {
|
|
318
|
+
if (all_segments_1.knownIdsWithThreeLength.includes(firstThreeString)) {
|
|
424
319
|
return firstThreeString;
|
|
425
320
|
}
|
|
426
321
|
if (bytesRemaining() === 0) {
|
|
@@ -579,5 +474,7 @@ export const getArrayBufferIterator = (initialData, maxBytes) => {
|
|
|
579
474
|
getFlacCodecNumber,
|
|
580
475
|
readUntilLineEnd,
|
|
581
476
|
getSyncSafeInt32,
|
|
477
|
+
replaceData,
|
|
582
478
|
};
|
|
583
479
|
};
|
|
480
|
+
exports.getArrayBufferIterator = getArrayBufferIterator;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ParseMediaMode } from '../options';
|
|
2
|
+
import type { OffsetCounter } from './offset-counter';
|
|
3
|
+
export declare const bufferManager: ({ initialData, maxBytes, counter, }: {
|
|
4
|
+
initialData: Uint8Array;
|
|
5
|
+
maxBytes: number | null;
|
|
6
|
+
counter: OffsetCounter;
|
|
7
|
+
}) => {
|
|
8
|
+
view: DataView;
|
|
9
|
+
uintArray: Uint8Array;
|
|
10
|
+
destroy: () => void;
|
|
11
|
+
addData: (newData: Uint8Array) => void;
|
|
12
|
+
skipTo: (offset: number) => void;
|
|
13
|
+
removeBytesRead: (force: boolean, mode: ParseMediaMode) => {
|
|
14
|
+
bytesRemoved: number;
|
|
15
|
+
removedData: Uint8Array | null;
|
|
16
|
+
};
|
|
17
|
+
replaceData: (newData: Uint8Array, seekTo: number) => void;
|
|
18
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bufferManager = void 0;
|
|
4
|
+
const bufferManager = ({ initialData, maxBytes, counter, }) => {
|
|
5
|
+
const buf = new ArrayBuffer(initialData.byteLength, {
|
|
6
|
+
maxByteLength: maxBytes === null
|
|
7
|
+
? initialData.byteLength
|
|
8
|
+
: Math.min(maxBytes, 2 ** 32),
|
|
9
|
+
});
|
|
10
|
+
if (!buf.resize) {
|
|
11
|
+
throw new Error('`ArrayBuffer.resize` is not supported in this Runtime. On the server: Use at least Node.js 20 or Bun. In the browser: Chrome 111, Edge 111, Safari 16.4, Firefox 128, Opera 111');
|
|
12
|
+
}
|
|
13
|
+
let uintArray = new Uint8Array(buf);
|
|
14
|
+
uintArray.set(initialData);
|
|
15
|
+
let view = new DataView(uintArray.buffer);
|
|
16
|
+
const destroy = () => {
|
|
17
|
+
uintArray = new Uint8Array(0);
|
|
18
|
+
buf.resize(0);
|
|
19
|
+
};
|
|
20
|
+
const flushBytesRead = (force, mode) => {
|
|
21
|
+
const bytesToRemove = counter.getDiscardedOffset();
|
|
22
|
+
// Only do this operation if it is really worth it 😇
|
|
23
|
+
// let's set the threshold to 3MB
|
|
24
|
+
if (bytesToRemove < 3000000 && !force) {
|
|
25
|
+
return { bytesRemoved: 0, removedData: null };
|
|
26
|
+
}
|
|
27
|
+
// Don't remove if the data is not even available
|
|
28
|
+
if (view.byteLength < bytesToRemove && !force) {
|
|
29
|
+
return { bytesRemoved: 0, removedData: null };
|
|
30
|
+
}
|
|
31
|
+
counter.discardBytes(bytesToRemove);
|
|
32
|
+
const removedData = mode === 'download' ? uintArray.slice(0, bytesToRemove) : null;
|
|
33
|
+
const newData = uintArray.slice(bytesToRemove);
|
|
34
|
+
uintArray.set(newData);
|
|
35
|
+
buf.resize(newData.byteLength);
|
|
36
|
+
view = new DataView(uintArray.buffer);
|
|
37
|
+
return { bytesRemoved: bytesToRemove, removedData };
|
|
38
|
+
};
|
|
39
|
+
const skipTo = (offset) => {
|
|
40
|
+
const becomesSmaller = offset < counter.getOffset();
|
|
41
|
+
if (becomesSmaller) {
|
|
42
|
+
const toDecrement = counter.getOffset() - offset;
|
|
43
|
+
if (toDecrement > counter.getDiscardedOffset()) {
|
|
44
|
+
throw new Error('Cannot count backwards, data has already been flushed');
|
|
45
|
+
}
|
|
46
|
+
counter.decrement(toDecrement);
|
|
47
|
+
}
|
|
48
|
+
const currentOffset = counter.getOffset();
|
|
49
|
+
counter.increment(offset - currentOffset);
|
|
50
|
+
};
|
|
51
|
+
const addData = (newData) => {
|
|
52
|
+
const oldLength = buf.byteLength;
|
|
53
|
+
const newLength = oldLength + newData.byteLength;
|
|
54
|
+
if (newLength < oldLength) {
|
|
55
|
+
throw new Error('Cannot decrement size');
|
|
56
|
+
}
|
|
57
|
+
if (newLength > (maxBytes !== null && maxBytes !== void 0 ? maxBytes : Infinity)) {
|
|
58
|
+
throw new Error(`Exceeded maximum byte length ${maxBytes} with ${newLength}`);
|
|
59
|
+
}
|
|
60
|
+
buf.resize(newLength);
|
|
61
|
+
uintArray = new Uint8Array(buf);
|
|
62
|
+
uintArray.set(newData, oldLength);
|
|
63
|
+
view = new DataView(uintArray.buffer);
|
|
64
|
+
};
|
|
65
|
+
const replaceData = (newData, seekTo) => {
|
|
66
|
+
buf.resize(newData.byteLength);
|
|
67
|
+
uintArray = new Uint8Array(buf);
|
|
68
|
+
uintArray.set(newData);
|
|
69
|
+
view = new DataView(uintArray.buffer);
|
|
70
|
+
// no more dicarded bytes
|
|
71
|
+
counter.setDiscardedOffset(0);
|
|
72
|
+
// reset counter to 0
|
|
73
|
+
counter.decrement(counter.getOffset());
|
|
74
|
+
// seek to the new position
|
|
75
|
+
counter.increment(seekTo);
|
|
76
|
+
};
|
|
77
|
+
return {
|
|
78
|
+
view,
|
|
79
|
+
uintArray,
|
|
80
|
+
destroy,
|
|
81
|
+
addData,
|
|
82
|
+
skipTo,
|
|
83
|
+
removeBytesRead: flushBytesRead,
|
|
84
|
+
replaceData,
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
exports.bufferManager = bufferManager;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const makeOffsetCounter: (initial: number) => {
|
|
2
|
+
getOffset: () => number;
|
|
3
|
+
discardBytes: (bytes: number) => void;
|
|
4
|
+
increment: (bytes: number) => void;
|
|
5
|
+
getDiscardedBytes: () => number;
|
|
6
|
+
setDiscardedOffset: (bytes: number) => void;
|
|
7
|
+
getDiscardedOffset: () => number;
|
|
8
|
+
decrement: (bytes: number) => void;
|
|
9
|
+
};
|
|
10
|
+
export type OffsetCounter = ReturnType<typeof makeOffsetCounter>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeOffsetCounter = void 0;
|
|
4
|
+
const makeOffsetCounter = (initial) => {
|
|
5
|
+
let offset = initial;
|
|
6
|
+
let discardedBytes = 0;
|
|
7
|
+
return {
|
|
8
|
+
getOffset: () => offset,
|
|
9
|
+
discardBytes: (bytes) => {
|
|
10
|
+
discardedBytes += bytes;
|
|
11
|
+
},
|
|
12
|
+
increment: (bytes) => {
|
|
13
|
+
if (bytes < 0) {
|
|
14
|
+
throw new Error('Cannot increment by a negative amount: ' + bytes);
|
|
15
|
+
}
|
|
16
|
+
offset += bytes;
|
|
17
|
+
},
|
|
18
|
+
getDiscardedBytes: () => discardedBytes,
|
|
19
|
+
setDiscardedOffset: (bytes) => {
|
|
20
|
+
discardedBytes = bytes;
|
|
21
|
+
},
|
|
22
|
+
getDiscardedOffset: () => offset - discardedBytes,
|
|
23
|
+
decrement: (bytes) => {
|
|
24
|
+
if (bytes < 0) {
|
|
25
|
+
throw new Error('Cannot decrement by a negative amount: ' + bytes);
|
|
26
|
+
}
|
|
27
|
+
offset -= bytes;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
exports.makeOffsetCounter = makeOffsetCounter;
|
package/dist/log.js
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Log = exports.isEqualOrBelowLogLevel = exports.logLevels = void 0;
|
|
1
4
|
/* eslint-disable no-console */
|
|
2
|
-
|
|
5
|
+
exports.logLevels = ['trace', 'verbose', 'info', 'warn', 'error'];
|
|
3
6
|
const getNumberForLogLevel = (level) => {
|
|
4
|
-
return logLevels.indexOf(level);
|
|
7
|
+
return exports.logLevels.indexOf(level);
|
|
5
8
|
};
|
|
6
|
-
|
|
9
|
+
const isEqualOrBelowLogLevel = (currentLevel, level) => {
|
|
7
10
|
return getNumberForLogLevel(currentLevel) <= getNumberForLogLevel(level);
|
|
8
11
|
};
|
|
9
|
-
|
|
12
|
+
exports.isEqualOrBelowLogLevel = isEqualOrBelowLogLevel;
|
|
13
|
+
exports.Log = {
|
|
10
14
|
trace: (logLevel, ...args) => {
|
|
11
|
-
if (isEqualOrBelowLogLevel(logLevel, 'trace')) {
|
|
15
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'trace')) {
|
|
12
16
|
return console.log(...args);
|
|
13
17
|
}
|
|
14
18
|
},
|
|
15
19
|
verbose: (logLevel, ...args) => {
|
|
16
|
-
if (isEqualOrBelowLogLevel(logLevel, 'verbose')) {
|
|
20
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'verbose')) {
|
|
17
21
|
return console.log(...args);
|
|
18
22
|
}
|
|
19
23
|
},
|
|
20
24
|
info: (logLevel, ...args) => {
|
|
21
|
-
if (isEqualOrBelowLogLevel(logLevel, 'info')) {
|
|
25
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'info')) {
|
|
22
26
|
return console.log(...args);
|
|
23
27
|
}
|
|
24
28
|
},
|
|
25
29
|
warn: (logLevel, ...args) => {
|
|
26
|
-
if (isEqualOrBelowLogLevel(logLevel, 'warn')) {
|
|
30
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'warn')) {
|
|
27
31
|
return console.warn(...args);
|
|
28
32
|
}
|
|
29
33
|
},
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { BufferIterator } from './buffer-iterator';
|
|
1
|
+
import type { BufferIterator } from './iterator/buffer-iterator';
|
|
2
2
|
export declare const getHvc1CodecString: (data: BufferIterator) => string;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getHvc1CodecString = void 0;
|
|
4
|
+
const getHvc1CodecString = (data) => {
|
|
2
5
|
const configurationVersion = data.getUint8();
|
|
3
6
|
if (configurationVersion !== 1) {
|
|
4
7
|
throw new Error(`Unsupported HVCC version ${configurationVersion}`);
|
|
@@ -41,3 +44,4 @@ export const getHvc1CodecString = (data) => {
|
|
|
41
44
|
}
|
|
42
45
|
return `${profileSpaceChar}${generalProfileIdc.toString(16)}.${profileId.toString(16)}.${generalTierChar}${generalLevelIdc}${generalConstraintString ? '.' : ''}${generalConstraintString}`;
|
|
43
46
|
};
|
|
47
|
+
exports.getHvc1CodecString = getHvc1CodecString;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeProgressObject = void 0;
|
|
4
|
+
const makeProgressObject = (state) => {
|
|
5
|
+
return {
|
|
6
|
+
bytes: state.iterator.counter.getOffset(),
|
|
7
|
+
percentage: state.contentLength
|
|
8
|
+
? state.iterator.counter.getOffset() / state.contentLength
|
|
9
|
+
: null,
|
|
10
|
+
totalBytes: state.contentLength,
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.makeProgressObject = makeProgressObject;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { MediaParserEmitter } from './emitter';
|
|
2
2
|
import type { PauseSignal } from './pause-signal';
|
|
3
|
+
import type { SeekSignal } from './seek-signal';
|
|
3
4
|
export type MediaParserController = {
|
|
4
5
|
abort: (reason?: any) => void;
|
|
5
6
|
pause: PauseSignal['pause'];
|
|
6
7
|
resume: PauseSignal['resume'];
|
|
8
|
+
_experimentalSeek: SeekSignal['seek'];
|
|
7
9
|
addEventListener: MediaParserEmitter['addEventListener'];
|
|
8
10
|
removeEventListener: MediaParserEmitter['removeEventListener'];
|
|
9
11
|
/**
|
|
@@ -12,6 +14,7 @@ export type MediaParserController = {
|
|
|
12
14
|
_internals: {
|
|
13
15
|
signal: AbortSignal;
|
|
14
16
|
checkForAbortAndPause: () => Promise<void>;
|
|
17
|
+
seekSignal: SeekSignal;
|
|
15
18
|
};
|
|
16
19
|
};
|
|
17
20
|
export declare const mediaParserController: () => MediaParserController;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mediaParserController = void 0;
|
|
4
|
+
const emitter_1 = require("./emitter");
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
const pause_signal_1 = require("./pause-signal");
|
|
7
|
+
const seek_signal_1 = require("./seek-signal");
|
|
8
|
+
const mediaParserController = () => {
|
|
5
9
|
const abortController = new AbortController();
|
|
6
|
-
const emitter = new MediaParserEmitter();
|
|
7
|
-
const pauseSignal = makePauseSignal(emitter);
|
|
10
|
+
const emitter = new emitter_1.MediaParserEmitter();
|
|
11
|
+
const pauseSignal = (0, pause_signal_1.makePauseSignal)(emitter);
|
|
12
|
+
const seekSignal = (0, seek_signal_1.makeSeekSignal)();
|
|
8
13
|
const checkForAbortAndPause = async () => {
|
|
9
14
|
if (abortController.signal.aborted) {
|
|
10
|
-
throw new MediaParserAbortError('Aborted');
|
|
15
|
+
throw new errors_1.MediaParserAbortError('Aborted');
|
|
11
16
|
}
|
|
12
17
|
await pauseSignal.waitUntilResume();
|
|
13
18
|
};
|
|
@@ -17,6 +22,7 @@ export const mediaParserController = () => {
|
|
|
17
22
|
abortController.abort(reason);
|
|
18
23
|
emitter.dispatchAbort(reason);
|
|
19
24
|
},
|
|
25
|
+
_experimentalSeek: seekSignal.seek,
|
|
20
26
|
pause: pauseSignal.pause,
|
|
21
27
|
resume: pauseSignal.resume,
|
|
22
28
|
addEventListener: emitter.addEventListener,
|
|
@@ -24,6 +30,8 @@ export const mediaParserController = () => {
|
|
|
24
30
|
_internals: {
|
|
25
31
|
signal: abortController.signal,
|
|
26
32
|
checkForAbortAndPause,
|
|
33
|
+
seekSignal,
|
|
27
34
|
},
|
|
28
35
|
};
|
|
29
36
|
};
|
|
37
|
+
exports.mediaParserController = mediaParserController;
|
|
@@ -1,56 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasMetadata = exports.getMetadata = void 0;
|
|
4
|
+
const get_metadata_from_flac_1 = require("../containers/flac/get-metadata-from-flac");
|
|
5
|
+
const get_metadata_from_mp3_1 = require("../containers/mp3/get-metadata-from-mp3");
|
|
6
|
+
const get_metadata_from_wav_1 = require("../containers/wav/get-metadata-from-wav");
|
|
7
|
+
const metadata_from_iso_1 = require("./metadata-from-iso");
|
|
8
|
+
const metadata_from_matroska_1 = require("./metadata-from-matroska");
|
|
9
|
+
const metadata_from_riff_1 = require("./metadata-from-riff");
|
|
10
|
+
const getMetadata = (state) => {
|
|
8
11
|
var _a, _b;
|
|
9
12
|
const structure = state.getStructure();
|
|
10
13
|
if (structure.type === 'matroska') {
|
|
11
|
-
return getMetadataFromMatroska(structure);
|
|
14
|
+
return (0, metadata_from_matroska_1.getMetadataFromMatroska)(structure);
|
|
12
15
|
}
|
|
13
16
|
if (structure.type === 'riff') {
|
|
14
|
-
return getMetadataFromRiff(structure);
|
|
17
|
+
return (0, metadata_from_riff_1.getMetadataFromRiff)(structure);
|
|
15
18
|
}
|
|
16
19
|
if (structure.type === 'transport-stream' || structure.type === 'm3u') {
|
|
17
20
|
return [];
|
|
18
21
|
}
|
|
19
22
|
if (structure.type === 'mp3') {
|
|
20
|
-
const tags = getMetadataFromMp3(structure);
|
|
23
|
+
const tags = (0, get_metadata_from_mp3_1.getMetadataFromMp3)(structure);
|
|
21
24
|
if (tags === null) {
|
|
22
25
|
throw new Error('Failed to get metadata from mp3');
|
|
23
26
|
}
|
|
24
27
|
return tags;
|
|
25
28
|
}
|
|
26
29
|
if (structure.type === 'wav') {
|
|
27
|
-
return (_a = getMetadataFromWav(structure)) !== null && _a !== void 0 ? _a : [];
|
|
30
|
+
return (_a = (0, get_metadata_from_wav_1.getMetadataFromWav)(structure)) !== null && _a !== void 0 ? _a : [];
|
|
28
31
|
}
|
|
29
32
|
if (structure.type === 'aac') {
|
|
30
33
|
return [];
|
|
31
34
|
}
|
|
32
35
|
if (structure.type === 'flac') {
|
|
33
|
-
return (_b = getMetadataFromFlac(structure)) !== null && _b !== void 0 ? _b : [];
|
|
36
|
+
return (_b = (0, get_metadata_from_flac_1.getMetadataFromFlac)(structure)) !== null && _b !== void 0 ? _b : [];
|
|
34
37
|
}
|
|
35
38
|
if (structure.type === 'iso-base-media') {
|
|
36
|
-
return getMetadataFromIsoBase(state);
|
|
39
|
+
return (0, metadata_from_iso_1.getMetadataFromIsoBase)(state);
|
|
37
40
|
}
|
|
38
41
|
throw new Error('Unknown container ' + structure);
|
|
39
42
|
};
|
|
43
|
+
exports.getMetadata = getMetadata;
|
|
40
44
|
// TODO: This forces some containers to check the whole file
|
|
41
45
|
// we can do this better! skip over video data
|
|
42
|
-
|
|
46
|
+
const hasMetadata = (structure) => {
|
|
43
47
|
if (structure.type === 'mp3') {
|
|
44
|
-
return getMetadataFromMp3(structure) !== null;
|
|
48
|
+
return (0, get_metadata_from_mp3_1.getMetadataFromMp3)(structure) !== null;
|
|
45
49
|
}
|
|
46
50
|
if (structure.type === 'wav') {
|
|
47
|
-
return getMetadataFromWav(structure) !== null;
|
|
51
|
+
return (0, get_metadata_from_wav_1.getMetadataFromWav)(structure) !== null;
|
|
48
52
|
}
|
|
49
53
|
if (structure.type === 'm3u' || structure.type === 'transport-stream') {
|
|
50
54
|
return true;
|
|
51
55
|
}
|
|
52
56
|
if (structure.type === 'flac') {
|
|
53
|
-
return getMetadataFromFlac(structure) !== null;
|
|
57
|
+
return (0, get_metadata_from_flac_1.getMetadataFromFlac)(structure) !== null;
|
|
54
58
|
}
|
|
55
59
|
if (structure.type === 'iso-base-media') {
|
|
56
60
|
return false;
|
|
@@ -66,3 +70,4 @@ export const hasMetadata = (structure) => {
|
|
|
66
70
|
}
|
|
67
71
|
throw new Error('Unknown container ' + structure);
|
|
68
72
|
};
|
|
73
|
+
exports.hasMetadata = hasMetadata;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMetadataFromIsoBase = exports.parseIsoMetaBox = void 0;
|
|
4
|
+
const traversal_1 = require("../containers/iso-base-media/traversal");
|
|
5
|
+
const truthy_1 = require("../truthy");
|
|
3
6
|
/**
|
|
4
7
|
*
|
|
5
8
|
* @param ilstBox ©ART - Artist
|
|
@@ -82,9 +85,9 @@ const parseIlstBoxWithoutKeys = (ilstBox) => {
|
|
|
82
85
|
value: entry.value.value,
|
|
83
86
|
};
|
|
84
87
|
})
|
|
85
|
-
.filter(truthy);
|
|
88
|
+
.filter(truthy_1.truthy);
|
|
86
89
|
};
|
|
87
|
-
|
|
90
|
+
const parseIsoMetaBox = (meta, trackId) => {
|
|
88
91
|
const ilstBox = meta.children.find((b) => b.type === 'ilst-box');
|
|
89
92
|
const keysBox = meta.children.find((b) => b.type === 'keys-box');
|
|
90
93
|
if (!ilstBox || !keysBox) {
|
|
@@ -111,12 +114,13 @@ export const parseIsoMetaBox = (meta, trackId) => {
|
|
|
111
114
|
}
|
|
112
115
|
return entries;
|
|
113
116
|
};
|
|
114
|
-
|
|
115
|
-
|
|
117
|
+
exports.parseIsoMetaBox = parseIsoMetaBox;
|
|
118
|
+
const getMetadataFromIsoBase = (state) => {
|
|
119
|
+
const moov = (0, traversal_1.getMoovBoxFromState)(state);
|
|
116
120
|
if (!moov) {
|
|
117
121
|
return [];
|
|
118
122
|
}
|
|
119
|
-
const traks = getTraks(moov);
|
|
123
|
+
const traks = (0, traversal_1.getTraks)(moov);
|
|
120
124
|
const meta = moov.children.find((b) => b.type === 'regular-box' && b.boxType === 'meta');
|
|
121
125
|
const udta = moov.children.find((b) => b.type === 'regular-box' && b.boxType === 'udta');
|
|
122
126
|
const metaInUdta = udta === null || udta === void 0 ? void 0 : udta.children.find((b) => {
|
|
@@ -126,18 +130,19 @@ export const getMetadataFromIsoBase = (state) => {
|
|
|
126
130
|
.map((t) => {
|
|
127
131
|
const metaBox = t.children.find((child) => child.type === 'regular-box' && child.boxType === 'meta');
|
|
128
132
|
if (metaBox) {
|
|
129
|
-
const tkhd = getTkhdBox(t);
|
|
133
|
+
const tkhd = (0, traversal_1.getTkhdBox)(t);
|
|
130
134
|
if (!tkhd) {
|
|
131
135
|
throw new Error('No tkhd box found');
|
|
132
136
|
}
|
|
133
|
-
return parseIsoMetaBox(metaBox, tkhd.trackId);
|
|
137
|
+
return (0, exports.parseIsoMetaBox)(metaBox, tkhd.trackId);
|
|
134
138
|
}
|
|
135
139
|
return null;
|
|
136
140
|
})
|
|
137
|
-
.filter(truthy);
|
|
141
|
+
.filter(truthy_1.truthy);
|
|
138
142
|
return [
|
|
139
|
-
...(meta ? parseIsoMetaBox(meta, null) : []),
|
|
140
|
-
...(metaInUdta ? parseIsoMetaBox(metaInUdta, null) : []),
|
|
143
|
+
...(meta ? (0, exports.parseIsoMetaBox)(meta, null) : []),
|
|
144
|
+
...(metaInUdta ? (0, exports.parseIsoMetaBox)(metaInUdta, null) : []),
|
|
141
145
|
...metaInTracks.flat(1),
|
|
142
146
|
];
|
|
143
147
|
};
|
|
148
|
+
exports.getMetadataFromIsoBase = getMetadataFromIsoBase;
|