@remotion/media-parser 4.0.249 → 4.0.251
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/add-avc-profile-to-track.js +2 -2
- package/dist/buffer-iterator.d.ts +3 -5
- package/dist/buffer-iterator.js +66 -50
- package/dist/containers/aac/parse-aac.d.ts +3 -0
- package/dist/containers/aac/parse-aac.js +83 -0
- package/dist/containers/aac/types.d.ts +4 -0
- package/dist/{boxes → containers}/avc/key.d.ts +1 -1
- package/dist/containers/flac/get-block-size.d.ts +2 -0
- package/dist/containers/flac/get-block-size.js +26 -0
- package/dist/containers/flac/get-channel-count.d.ts +2 -0
- package/dist/containers/flac/get-channel-count.js +36 -0
- package/dist/containers/flac/get-duration-from-flac.d.ts +2 -0
- package/dist/containers/flac/get-duration-from-flac.js +15 -0
- package/dist/containers/flac/get-metadata-from-flac.d.ts +2 -0
- package/dist/containers/flac/get-metadata-from-flac.js +11 -0
- package/dist/containers/flac/get-sample-rate.d.ts +3 -0
- package/dist/containers/flac/get-sample-rate.js +60 -0
- package/dist/containers/flac/parse-flac-frame.d.ts +15 -0
- package/dist/containers/flac/parse-flac-frame.js +175 -0
- package/dist/{boxes/riff/parse-box.d.ts → containers/flac/parse-flac.d.ts} +1 -3
- package/dist/containers/flac/parse-flac.js +54 -0
- package/dist/{boxes/mp3/parse-mpeg-header.d.ts → containers/flac/parse-header.d.ts} +4 -3
- package/dist/containers/flac/parse-header.js +10 -0
- package/dist/{boxes/mp3/parse-mp3.d.ts → containers/flac/parse-metadata.d.ts} +4 -4
- package/dist/containers/flac/parse-metadata.js +24 -0
- package/dist/{boxes/webm/parse-webm-header.d.ts → containers/flac/parse-streaminfo.d.ts} +2 -4
- package/dist/containers/flac/parse-streaminfo.js +53 -0
- package/dist/containers/flac/parse-unknown-block.d.ts +8 -0
- package/dist/containers/flac/parse-unknown-block.js +11 -0
- package/dist/containers/flac/types.d.ts +26 -0
- package/dist/containers/iso-base-media/base-media-box.d.ts +40 -0
- package/dist/containers/iso-base-media/get-children.d.ts +6 -0
- package/dist/containers/iso-base-media/get-children.js +21 -0
- package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.d.ts +1 -1
- package/dist/containers/iso-base-media/mdat/mdat.d.ts +2 -0
- package/dist/containers/iso-base-media/mdat/mdat.js +91 -0
- package/dist/containers/iso-base-media/moov/moov.d.ts +12 -0
- package/dist/containers/iso-base-media/moov/moov.js +17 -0
- package/dist/containers/iso-base-media/parse-boxes.d.ts +3 -0
- package/dist/containers/iso-base-media/parse-boxes.js +40 -0
- package/dist/containers/iso-base-media/process-box.d.ts +3 -0
- package/dist/{boxes → containers}/iso-base-media/process-box.js +49 -147
- package/dist/{boxes → containers}/iso-base-media/stsd/mebx.d.ts +1 -6
- package/dist/containers/iso-base-media/stsd/mebx.js +22 -0
- package/dist/{boxes → containers}/iso-base-media/stsd/samples.d.ts +6 -16
- package/dist/{boxes → containers}/iso-base-media/stsd/samples.js +26 -71
- package/dist/{boxes → containers}/iso-base-media/stsd/stsd.d.ts +1 -6
- package/dist/{boxes → containers}/iso-base-media/stsd/stsd.js +3 -6
- package/dist/containers/iso-base-media/trak/trak.d.ts +12 -0
- package/dist/containers/iso-base-media/trak/trak.js +17 -0
- package/dist/{boxes → containers}/iso-base-media/traversal.d.ts +2 -3
- package/dist/{boxes → containers}/iso-base-media/traversal.js +1 -12
- package/dist/containers/iso-base-media/void-box.js +2 -0
- package/dist/containers/mp3/get-tracks-from-mp3.d.ts +4 -0
- package/dist/{boxes → containers}/mp3/get-tracks-from-mp3.js +6 -6
- package/dist/containers/mp3/id3.d.ts +4 -0
- package/dist/{boxes → containers}/mp3/id3.js +8 -5
- package/dist/containers/mp3/parse-mp3.d.ts +3 -0
- package/dist/{boxes → containers}/mp3/parse-mp3.js +4 -20
- package/dist/containers/mp3/parse-mpeg-header.d.ts +4 -0
- package/dist/{boxes → containers}/mp3/parse-mpeg-header.js +2 -1
- package/dist/containers/riff/expect-riff-box.d.ts +7 -0
- package/dist/containers/riff/expect-riff-box.js +72 -0
- package/dist/containers/riff/get-duration.d.ts +3 -0
- package/dist/containers/riff/get-duration.js +33 -0
- package/dist/{boxes → containers}/riff/get-tracks-from-avi.d.ts +2 -3
- package/dist/{boxes → containers}/riff/get-tracks-from-avi.js +6 -10
- package/dist/containers/riff/parse-list-box.d.ts +6 -0
- package/dist/containers/riff/parse-list-box.js +29 -0
- package/dist/containers/riff/parse-movi.d.ts +11 -0
- package/dist/{boxes → containers}/riff/parse-movi.js +37 -57
- package/dist/containers/riff/parse-riff-body.d.ts +3 -0
- package/dist/containers/riff/parse-riff-body.js +22 -0
- package/dist/containers/riff/parse-riff-box.d.ts +7 -0
- package/dist/{boxes → containers}/riff/parse-riff-box.js +3 -10
- package/dist/containers/riff/parse-riff-header.d.ts +3 -0
- package/dist/containers/riff/parse-riff-header.js +23 -0
- package/dist/containers/riff/parse-riff.d.ts +3 -0
- package/dist/containers/riff/parse-riff.js +12 -0
- package/dist/containers/riff/parse-strf.d.ts +7 -0
- package/dist/{boxes → containers}/riff/parse-strf.js +4 -8
- package/dist/{boxes → containers}/riff/parse-strh.js +11 -0
- package/dist/containers/riff/parse-video-section.d.ts +2 -0
- package/dist/containers/riff/parse-video-section.js +19 -0
- package/dist/{boxes → containers}/riff/riff-box.d.ts +8 -14
- package/dist/containers/riff/riff-box.js +2 -0
- package/dist/{boxes → containers}/riff/traversal.d.ts +1 -3
- package/dist/{boxes → containers}/riff/traversal.js +1 -6
- package/dist/containers/transport-stream/boxes.js +2 -0
- package/dist/containers/transport-stream/get-tracks.d.ts +4 -0
- package/dist/{boxes → containers}/transport-stream/get-tracks.js +4 -3
- package/dist/containers/transport-stream/parse-packet.d.ts +5 -0
- package/dist/{boxes → containers}/transport-stream/parse-packet.js +4 -5
- package/dist/containers/transport-stream/parse-stream-packet.d.ts +9 -0
- package/dist/{boxes → containers}/transport-stream/parse-stream-packet.js +11 -12
- package/dist/containers/transport-stream/parse-transport-stream.d.ts +3 -0
- package/dist/{boxes → containers}/transport-stream/parse-transport-stream.js +8 -37
- package/dist/{boxes → containers}/transport-stream/process-stream-buffers.d.ts +1 -2
- package/dist/{boxes → containers}/transport-stream/process-stream-buffers.js +3 -3
- package/dist/containers/wav/get-duration-from-wav.d.ts +3 -0
- package/dist/containers/wav/get-duration-from-wav.js +29 -0
- package/dist/containers/wav/get-metadata-from-wav.d.ts +3 -0
- package/dist/containers/wav/get-metadata-from-wav.js +11 -0
- package/dist/containers/wav/parse-data.d.ts +5 -0
- package/dist/containers/wav/parse-data.js +25 -0
- package/dist/containers/wav/parse-fmt.d.ts +5 -0
- package/dist/containers/wav/parse-fmt.js +56 -0
- package/dist/containers/wav/parse-header.d.ts +5 -0
- package/dist/containers/wav/parse-header.js +17 -0
- package/dist/containers/wav/parse-id3.d.ts +5 -0
- package/dist/containers/wav/parse-id3.js +17 -0
- package/dist/containers/wav/parse-list.d.ts +5 -0
- package/dist/containers/wav/parse-list.js +32 -0
- package/dist/containers/wav/parse-video-section.d.ts +5 -0
- package/dist/containers/wav/parse-video-section.js +37 -0
- package/dist/containers/wav/parse-wav.d.ts +3 -0
- package/dist/containers/wav/parse-wav.js +36 -0
- package/dist/containers/wav/types.d.ts +30 -0
- package/dist/containers/wav/types.js +2 -0
- package/dist/{boxes → containers}/webm/parse-ebml.d.ts +1 -2
- package/dist/{boxes → containers}/webm/parse-ebml.js +6 -2
- package/dist/containers/webm/parse-webm-header.d.ts +3 -0
- package/dist/containers/webm/parse-webm-header.js +53 -0
- package/dist/containers/webm/segments.d.ts +9 -0
- package/dist/containers/webm/segments.js +80 -0
- package/dist/emit-available-info.d.ts +1 -3
- package/dist/emit-available-info.js +86 -76
- package/dist/errors.d.ts +1 -1
- package/dist/esm/from-node.mjs +8 -9
- package/dist/esm/index.mjs +4951 -4693
- package/dist/file-types/detect-file-type.d.ts +5 -1
- package/dist/file-types/detect-file-type.js +10 -3
- package/dist/file-types/index.js +3 -0
- package/dist/get-audio-codec.d.ts +4 -5
- package/dist/get-audio-codec.js +5 -5
- package/dist/get-container.d.ts +2 -2
- package/dist/get-container.js +10 -1
- package/dist/get-dimensions.d.ts +2 -3
- package/dist/get-dimensions.js +14 -10
- package/dist/get-duration.d.ts +5 -5
- package/dist/get-duration.js +29 -27
- package/dist/get-fields-from-callbacks.js +4 -0
- package/dist/get-fps.d.ts +1 -1
- package/dist/get-fps.js +12 -4
- package/dist/get-is-hdr.d.ts +2 -3
- package/dist/get-is-hdr.js +4 -4
- package/dist/get-keyframes.d.ts +1 -1
- package/dist/get-keyframes.js +4 -3
- package/dist/get-number-of-audio-channels.d.ts +3 -0
- package/dist/get-number-of-audio-channels.js +14 -0
- package/dist/get-sample-aspect-ratio.d.ts +8 -8
- package/dist/get-sample-aspect-ratio.js +1 -1
- package/dist/get-sample-positions-from-lpcm.d.ts +1 -1
- package/dist/get-sample-positions-from-lpcm.js +1 -1
- package/dist/get-sample-positions.d.ts +6 -6
- package/dist/get-sample-rate.d.ts +3 -0
- package/dist/get-sample-rate.js +14 -0
- package/dist/get-tracks.d.ts +9 -8
- package/dist/get-tracks.js +36 -22
- package/dist/get-video-codec.d.ts +3 -4
- package/dist/get-video-codec.js +6 -6
- package/dist/has-all-info.js +26 -15
- package/dist/index.d.ts +145 -41
- package/dist/index.js +8 -8
- package/dist/init-video.d.ts +7 -0
- package/dist/init-video.js +114 -0
- package/dist/is-audio-structure.d.ts +2 -0
- package/dist/is-audio-structure.js +31 -0
- package/dist/metadata/get-metadata.js +16 -1
- package/dist/metadata/metadata-from-iso.d.ts +2 -1
- package/dist/metadata/metadata-from-iso.js +1 -1
- package/dist/metadata/metadata-from-matroska.js +1 -1
- package/dist/metadata/metadata-from-riff.d.ts +1 -1
- package/dist/options.d.ts +64 -38
- package/dist/parse-media.js +125 -43
- package/dist/parse-result.d.ts +8 -61
- package/dist/perform-seek.d.ts +13 -0
- package/dist/perform-seek.js +29 -0
- package/dist/readers/from-node.js +7 -8
- package/dist/readers/reader.d.ts +1 -1
- package/dist/register-track.d.ts +3 -3
- package/dist/run-parse-iteration.d.ts +8 -0
- package/dist/run-parse-iteration.js +48 -0
- package/dist/samples-from-moof.js +1 -1
- package/dist/state/aac-state.d.ts +13 -0
- package/dist/state/aac-state.js +17 -0
- package/dist/state/can-skip-tracks.d.ts +8 -1
- package/dist/state/can-skip-tracks.js +42 -27
- package/dist/state/emitted-fields.js +4 -0
- package/dist/state/flac-state.d.ts +4 -0
- package/dist/state/flac-state.js +13 -0
- package/dist/state/has-tracks-section.d.ts +2 -1
- package/dist/state/has-tracks-section.js +4 -1
- package/dist/state/iso-base-media/cached-sample-positions.d.ts +15 -0
- package/dist/state/iso-base-media/cached-sample-positions.js +42 -0
- package/dist/state/iso-base-media/iso-state.d.ts +8 -0
- package/dist/state/iso-base-media/iso-state.js +15 -0
- package/dist/{may-skip-video-data → state}/may-skip-video-data.d.ts +1 -1
- package/dist/{may-skip-video-data → state}/may-skip-video-data.js +6 -2
- package/dist/{may-skip-video-data → state}/need-samples-for-fields.js +4 -0
- package/dist/state/parser-state.d.ts +131 -17
- package/dist/state/parser-state.js +18 -5
- package/dist/state/sample-callbacks.d.ts +6 -2
- package/dist/state/sample-callbacks.js +5 -2
- package/dist/state/slow-duration-fps.d.ts +2 -0
- package/dist/state/slow-duration-fps.js +18 -0
- package/dist/state/transport-stream.d.ts +8 -0
- package/dist/state/transport-stream.js +11 -0
- package/dist/state/video-section.d.ts +16 -0
- package/dist/state/video-section.js +37 -0
- package/dist/state/webm.d.ts +17 -2
- package/dist/state/webm.js +33 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webcodec-sample-types.d.ts +3 -3
- package/package.json +3 -3
- package/test.json +663 -0
- package/dist/boxes/iso-base-media/get-children.d.ts +0 -14
- package/dist/boxes/iso-base-media/get-children.js +0 -39
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -26
- package/dist/boxes/iso-base-media/mdat/mdat.js +0 -141
- package/dist/boxes/iso-base-media/moov/moov.d.ts +0 -19
- package/dist/boxes/iso-base-media/moov/moov.js +0 -27
- package/dist/boxes/iso-base-media/parse-boxes.d.ts +0 -15
- package/dist/boxes/iso-base-media/parse-boxes.js +0 -129
- package/dist/boxes/iso-base-media/parse-mdat-partially.d.ts +0 -12
- package/dist/boxes/iso-base-media/parse-mdat-partially.js +0 -33
- package/dist/boxes/iso-base-media/process-box.d.ts +0 -15
- package/dist/boxes/iso-base-media/stsd/mebx.js +0 -32
- package/dist/boxes/iso-base-media/trak/trak.d.ts +0 -19
- package/dist/boxes/iso-base-media/trak/trak.js +0 -27
- package/dist/boxes/mp3/get-tracks-from-mp3.d.ts +0 -4
- package/dist/boxes/mp3/id3-v2.d.ts +0 -0
- package/dist/boxes/mp3/id3-v2.js +0 -1
- package/dist/boxes/mp3/id3.d.ts +0 -8
- package/dist/boxes/riff/continue-after-riff-result.d.ts +0 -13
- package/dist/boxes/riff/continue-after-riff-result.js +0 -34
- package/dist/boxes/riff/expect-riff-box.d.ts +0 -19
- package/dist/boxes/riff/expect-riff-box.js +0 -50
- package/dist/boxes/riff/parse-box.js +0 -35
- package/dist/boxes/riff/parse-fmt-box.d.ts +0 -7
- package/dist/boxes/riff/parse-fmt-box.js +0 -33
- package/dist/boxes/riff/parse-list-box.d.ts +0 -10
- package/dist/boxes/riff/parse-list-box.js +0 -31
- package/dist/boxes/riff/parse-movi.d.ts +0 -17
- package/dist/boxes/riff/parse-riff-body.d.ts +0 -11
- package/dist/boxes/riff/parse-riff-body.js +0 -105
- package/dist/boxes/riff/parse-riff-box.d.ts +0 -12
- package/dist/boxes/riff/parse-strf.d.ts +0 -7
- package/dist/boxes/transport-stream/get-tracks.d.ts +0 -5
- package/dist/boxes/transport-stream/parse-packet.d.ts +0 -13
- package/dist/boxes/transport-stream/parse-stream-packet.d.ts +0 -15
- package/dist/boxes/transport-stream/parse-transport-stream.d.ts +0 -13
- package/dist/boxes/webm/parse-webm-header.js +0 -37
- package/dist/boxes/webm/segments/parse-children.d.ts +0 -23
- package/dist/boxes/webm/segments/parse-children.js +0 -144
- package/dist/boxes/webm/segments.d.ts +0 -15
- package/dist/boxes/webm/segments.js +0 -161
- package/dist/continue-mdat-routine.d.ts +0 -17
- package/dist/continue-mdat-routine.js +0 -92
- package/dist/parse-video.d.ts +0 -28
- package/dist/parse-video.js +0 -130
- /package/dist/{boxes/iso-base-media/base-type.js → containers/aac/types.js} +0 -0
- /package/dist/{boxes → containers}/avc/codec-string.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/codec-string.js +0 -0
- /package/dist/{boxes → containers}/avc/color.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/color.js +0 -0
- /package/dist/{boxes → containers}/avc/create-sps-pps-data.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/create-sps-pps-data.js +0 -0
- /package/dist/{boxes → containers}/avc/interpret-sps.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/interpret-sps.js +0 -0
- /package/dist/{boxes → containers}/avc/key.js +0 -0
- /package/dist/{boxes → containers}/avc/parse-avc.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/parse-avc.js +0 -0
- /package/dist/{boxes → containers}/avc/sps-and-pps.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/sps-and-pps.js +0 -0
- /package/dist/{boxes/iso-base-media/void-box.js → containers/flac/types.js} +0 -0
- /package/dist/{boxes/riff/riff-box.js → containers/iso-base-media/base-media-box.js} +0 -0
- /package/dist/{boxes → containers}/iso-base-media/base-type.d.ts +0 -0
- /package/dist/{boxes/transport-stream/boxes.js → containers/iso-base-media/base-type.js} +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/ftyp.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/ftyp.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-keyframes.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-keyframes.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/make-track.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/make-track.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mdhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mdhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/ilst.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/ilst.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mvhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mvhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/colr.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/colr.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/keys.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/keys.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stco.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stco.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stss.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stss.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stts.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stts.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfdt.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfdt.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tkhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tkhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/to-date.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/to-date.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/trun.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/trun.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/void-box.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-duration.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-duration.js +0 -0
- /package/dist/{boxes → containers}/mp3/get-frame-length.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-frame-length.js +0 -0
- /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.js +0 -0
- /package/dist/{boxes → containers}/mp3/id3-v1.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/id3-v1.js +0 -0
- /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.js +0 -0
- /package/dist/{boxes → containers}/riff/is-movi.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/is-movi.js +0 -0
- /package/dist/{boxes → containers}/riff/parse-avih.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/parse-avih.js +0 -0
- /package/dist/{boxes → containers}/riff/parse-isft.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/parse-isft.js +0 -0
- /package/dist/{boxes → containers}/riff/parse-strh.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/timescale.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/timescale.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/adts-header.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/adts-header.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/boxes.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/find-separator.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/find-separator.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pat.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pat.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pes.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pes.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pmt.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pmt.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/traversal.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/traversal.js +0 -0
- /package/dist/{boxes → containers}/webm/allowed-partial-segments.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/allowed-partial-segments.js +0 -0
- /package/dist/{boxes → containers}/webm/av1-codec-private.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/av1-codec-private.js +0 -0
- /package/dist/{boxes → containers}/webm/color.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/color.js +0 -0
- /package/dist/{boxes → containers}/webm/description.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/description.js +0 -0
- /package/dist/{boxes → containers}/webm/get-ready-tracks.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/get-ready-tracks.js +0 -0
- /package/dist/{boxes → containers}/webm/get-sample-from-block.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/get-sample-from-block.js +0 -0
- /package/dist/{boxes → containers}/webm/make-track.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/make-track.js +0 -0
- /package/dist/{boxes → containers}/webm/segments/all-segments.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/segments/all-segments.js +0 -0
- /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.js +0 -0
- /package/dist/{boxes → containers}/webm/segments/track-entry.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/segments/track-entry.js +0 -0
- /package/dist/{boxes → containers}/webm/traversal.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/traversal.js +0 -0
- /package/dist/{may-skip-video-data → state}/need-samples-for-fields.d.ts +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseListBox = void 0;
|
|
4
|
+
const expect_riff_box_1 = require("./expect-riff-box");
|
|
5
|
+
const parseListBox = async ({ size, state, }) => {
|
|
6
|
+
const { iterator } = state;
|
|
7
|
+
const counter = iterator.counter.getOffset();
|
|
8
|
+
const listType = iterator.getByteString(4, false);
|
|
9
|
+
if (listType === 'movi') {
|
|
10
|
+
throw new Error('should not be handled here');
|
|
11
|
+
}
|
|
12
|
+
const boxes = [];
|
|
13
|
+
const maxOffset = counter + size;
|
|
14
|
+
while (iterator.counter.getOffset() < maxOffset) {
|
|
15
|
+
const result = await (0, expect_riff_box_1.expectRiffBox)(state);
|
|
16
|
+
if (result.box !== null) {
|
|
17
|
+
boxes.push(result.box);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
throw new Error('Unexpected result');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
type: 'list-box',
|
|
25
|
+
listType,
|
|
26
|
+
children: boxes,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
exports.parseListBox = parseListBox;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ParserState } from '../../state/parser-state';
|
|
2
|
+
import type { RiffResult } from './expect-riff-box';
|
|
3
|
+
export declare const handleChunk: ({ state, ckId, ckSize, }: {
|
|
4
|
+
state: ParserState;
|
|
5
|
+
ckId: string;
|
|
6
|
+
ckSize: number;
|
|
7
|
+
}) => Promise<void>;
|
|
8
|
+
export declare const parseMovi: ({ maxOffset, state, }: {
|
|
9
|
+
maxOffset: number;
|
|
10
|
+
state: ParserState;
|
|
11
|
+
}) => Promise<RiffResult>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseMovi = exports.handleChunk = void 0;
|
|
4
4
|
const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
|
|
5
|
-
const may_skip_video_data_1 = require("../../
|
|
5
|
+
const may_skip_video_data_1 = require("../../state/may-skip-video-data");
|
|
6
6
|
const key_1 = require("../avc/key");
|
|
7
7
|
const parse_avc_1 = require("../avc/parse-avc");
|
|
8
8
|
const traversal_1 = require("./traversal");
|
|
@@ -18,12 +18,13 @@ const getStrhForIndex = (structure, trackId) => {
|
|
|
18
18
|
}
|
|
19
19
|
return strh;
|
|
20
20
|
};
|
|
21
|
-
const handleChunk = async ({
|
|
21
|
+
const handleChunk = async ({ state, ckId, ckSize, }) => {
|
|
22
|
+
const { iterator } = state;
|
|
22
23
|
const offset = iterator.counter.getOffset();
|
|
23
24
|
const videoChunk = ckId.match(/^([0-9]{2})dc$/);
|
|
24
25
|
if (videoChunk) {
|
|
25
26
|
const trackId = parseInt(videoChunk[1], 10);
|
|
26
|
-
const strh = getStrhForIndex(structure, trackId);
|
|
27
|
+
const strh = getStrhForIndex(state.structure.getStructure(), trackId);
|
|
27
28
|
const samplesPerSecond = strh.rate / strh.scale;
|
|
28
29
|
const nthSample = state.callbacks.getSamplesForTrack(trackId);
|
|
29
30
|
const timeInSec = nthSample / samplesPerSecond;
|
|
@@ -56,7 +57,7 @@ const handleChunk = async ({ iterator, state, structure, ckId, ckSize, }) => {
|
|
|
56
57
|
const audioChunk = ckId.match(/^([0-9]{2})wb$/);
|
|
57
58
|
if (audioChunk) {
|
|
58
59
|
const trackId = parseInt(audioChunk[1], 10);
|
|
59
|
-
const strh = getStrhForIndex(structure, trackId);
|
|
60
|
+
const strh = getStrhForIndex(state.structure.getStructure(), trackId);
|
|
60
61
|
const samplesPerSecond = strh.rate / strh.scale;
|
|
61
62
|
const nthSample = state.callbacks.getSamplesForTrack(trackId);
|
|
62
63
|
const timeInSec = nthSample / samplesPerSecond;
|
|
@@ -81,66 +82,45 @@ const handleChunk = async ({ iterator, state, structure, ckId, ckSize, }) => {
|
|
|
81
82
|
}
|
|
82
83
|
};
|
|
83
84
|
exports.handleChunk = handleChunk;
|
|
84
|
-
const parseMovi = async ({
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
const ckId = iterator.getByteString(4, false);
|
|
95
|
-
const ckSize = iterator.getUint32Le();
|
|
96
|
-
if ((0, may_skip_video_data_1.maySkipVideoData)({
|
|
97
|
-
state,
|
|
98
|
-
}) &&
|
|
99
|
-
state.riff.getAvcProfile()) {
|
|
100
|
-
return {
|
|
101
|
-
type: 'complete',
|
|
102
|
-
box: {
|
|
103
|
-
type: 'movi-box',
|
|
104
|
-
},
|
|
105
|
-
skipTo: maxOffset,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
if (iterator.bytesRemaining() < ckSize) {
|
|
109
|
-
iterator.counter.decrement(8);
|
|
110
|
-
return {
|
|
111
|
-
type: 'incomplete',
|
|
112
|
-
continueParsing: () => {
|
|
113
|
-
return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, state, structure }));
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
await (0, exports.handleChunk)({ iterator, state, structure, ckId, ckSize });
|
|
118
|
-
// Discard added zeroes
|
|
119
|
-
while (iterator.counter.getOffset() < maxOffset &&
|
|
120
|
-
iterator.bytesRemaining() > 0) {
|
|
121
|
-
if (iterator.getUint8() !== 0) {
|
|
122
|
-
iterator.counter.decrement(1);
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
85
|
+
const parseMovi = async ({ maxOffset, state, }) => {
|
|
86
|
+
if ((0, may_skip_video_data_1.maySkipVideoData)({
|
|
87
|
+
state,
|
|
88
|
+
}) &&
|
|
89
|
+
state.riff.getAvcProfile()) {
|
|
90
|
+
return {
|
|
91
|
+
box: null,
|
|
92
|
+
skipTo: maxOffset,
|
|
93
|
+
};
|
|
126
94
|
}
|
|
127
|
-
|
|
95
|
+
const { iterator } = state;
|
|
96
|
+
if (iterator.bytesRemaining() < 8) {
|
|
128
97
|
return {
|
|
129
|
-
|
|
130
|
-
box: {
|
|
131
|
-
type: 'movi-box',
|
|
132
|
-
},
|
|
98
|
+
box: null,
|
|
133
99
|
skipTo: null,
|
|
134
100
|
};
|
|
135
101
|
}
|
|
136
|
-
|
|
137
|
-
|
|
102
|
+
const checkpoint = iterator.startCheckpoint();
|
|
103
|
+
const ckId = iterator.getByteString(4, false);
|
|
104
|
+
const ckSize = iterator.getUint32Le();
|
|
105
|
+
if (iterator.bytesRemaining() < ckSize) {
|
|
106
|
+
checkpoint.returnToCheckpoint();
|
|
107
|
+
return {
|
|
108
|
+
box: null,
|
|
109
|
+
skipTo: null,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
await (0, exports.handleChunk)({ state, ckId, ckSize });
|
|
113
|
+
// Discard added zeroes
|
|
114
|
+
while (iterator.counter.getOffset() < maxOffset &&
|
|
115
|
+
iterator.bytesRemaining() > 0) {
|
|
116
|
+
if (iterator.getUint8() !== 0) {
|
|
117
|
+
iterator.counter.decrement(1);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
138
120
|
}
|
|
139
121
|
return {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return Promise.resolve((0, exports.parseMovi)({ iterator, maxOffset, state, structure }));
|
|
143
|
-
},
|
|
122
|
+
box: null,
|
|
123
|
+
skipTo: null,
|
|
144
124
|
};
|
|
145
125
|
};
|
|
146
126
|
exports.parseMovi = parseMovi;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRiffBody = void 0;
|
|
4
|
+
const expect_riff_box_1 = require("./expect-riff-box");
|
|
5
|
+
const parse_video_section_1 = require("./parse-video-section");
|
|
6
|
+
const parseRiffBody = async (state) => {
|
|
7
|
+
if (state.videoSection.isInVideoSectionState(state.iterator) === 'in-section') {
|
|
8
|
+
const videoSec = await (0, parse_video_section_1.parseVideoSection)(state);
|
|
9
|
+
return {
|
|
10
|
+
skipTo: videoSec.skipTo,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const result = await (0, expect_riff_box_1.expectRiffBox)(state);
|
|
14
|
+
if (result.box !== null) {
|
|
15
|
+
const structure = state.structure.getStructure();
|
|
16
|
+
structure.boxes.push(result.box);
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
skipTo: result.skipTo,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.parseRiffBody = parseRiffBody;
|
|
@@ -2,17 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseRiffBox = void 0;
|
|
4
4
|
const parse_avih_1 = require("./parse-avih");
|
|
5
|
-
const parse_fmt_box_1 = require("./parse-fmt-box");
|
|
6
5
|
const parse_isft_1 = require("./parse-isft");
|
|
7
6
|
const parse_list_box_1 = require("./parse-list-box");
|
|
8
|
-
const parse_strf_1 = require("./parse-strf");
|
|
9
7
|
const parse_strh_1 = require("./parse-strh");
|
|
10
|
-
const parseRiffBox = ({
|
|
11
|
-
|
|
12
|
-
return Promise.resolve((0, parse_fmt_box_1.parseFmtBox)({ iterator, boxes, size }));
|
|
13
|
-
}
|
|
8
|
+
const parseRiffBox = ({ size, id, state, }) => {
|
|
9
|
+
const { iterator } = state;
|
|
14
10
|
if (id === 'LIST') {
|
|
15
|
-
return (0, parse_list_box_1.parseListBox)({
|
|
11
|
+
return (0, parse_list_box_1.parseListBox)({ size, state });
|
|
16
12
|
}
|
|
17
13
|
if (id === 'ISFT') {
|
|
18
14
|
return Promise.resolve((0, parse_isft_1.parseIsft)({ iterator, size }));
|
|
@@ -23,9 +19,6 @@ const parseRiffBox = ({ iterator, size, id, boxes, state, fields, }) => {
|
|
|
23
19
|
if (id === 'strh') {
|
|
24
20
|
return Promise.resolve((0, parse_strh_1.parseStrh)({ iterator, size }));
|
|
25
21
|
}
|
|
26
|
-
if (id === 'strf') {
|
|
27
|
-
return Promise.resolve((0, parse_strf_1.parseStrf)({ iterator, size, boxes }));
|
|
28
|
-
}
|
|
29
22
|
iterator.discard(size);
|
|
30
23
|
const box = {
|
|
31
24
|
type: 'riff-box',
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRiffHeader = void 0;
|
|
4
|
+
const parseRiffHeader = (state) => {
|
|
5
|
+
const riff = state.iterator.getByteString(4, false);
|
|
6
|
+
if (riff !== 'RIFF') {
|
|
7
|
+
throw new Error('Not a RIFF file');
|
|
8
|
+
}
|
|
9
|
+
const structure = state.structure.getStructure();
|
|
10
|
+
if (structure.type !== 'riff') {
|
|
11
|
+
throw new Error('Structure is not a RIFF structure');
|
|
12
|
+
}
|
|
13
|
+
const size = state.iterator.getUint32Le();
|
|
14
|
+
const fileType = state.iterator.getByteString(4, false);
|
|
15
|
+
if (fileType !== 'WAVE' && fileType !== 'AVI') {
|
|
16
|
+
throw new Error(`File type ${fileType} not supported`);
|
|
17
|
+
}
|
|
18
|
+
structure.boxes.push({ type: 'riff-header', fileSize: size, fileType });
|
|
19
|
+
return {
|
|
20
|
+
skipTo: null,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.parseRiffHeader = parseRiffHeader;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRiff = void 0;
|
|
4
|
+
const parse_riff_body_1 = require("./parse-riff-body");
|
|
5
|
+
const parse_riff_header_1 = require("./parse-riff-header");
|
|
6
|
+
const parseRiff = (state) => {
|
|
7
|
+
if (state.iterator.counter.getOffset() === 0) {
|
|
8
|
+
return Promise.resolve((0, parse_riff_header_1.parseRiffHeader)(state));
|
|
9
|
+
}
|
|
10
|
+
return (0, parse_riff_body_1.parseRiffBody)(state);
|
|
11
|
+
};
|
|
12
|
+
exports.parseRiff = parseRiff;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BufferIterator } from '../../buffer-iterator';
|
|
2
|
+
import type { FccType, StrfBoxAudio, StrfBoxVideo } from './riff-box';
|
|
3
|
+
export declare const parseStrf: ({ iterator, size, fccType, }: {
|
|
4
|
+
iterator: BufferIterator;
|
|
5
|
+
size: number;
|
|
6
|
+
fccType: FccType;
|
|
7
|
+
}) => StrfBoxAudio | StrfBoxVideo;
|
|
@@ -51,17 +51,13 @@ const parseStrfVideo = ({ iterator, size, }) => {
|
|
|
51
51
|
yPelsPerMeter,
|
|
52
52
|
};
|
|
53
53
|
};
|
|
54
|
-
const parseStrf = ({ iterator, size,
|
|
55
|
-
|
|
56
|
-
if (!strh) {
|
|
57
|
-
throw new Error('strh box not found');
|
|
58
|
-
}
|
|
59
|
-
if (strh.fccType === 'vids') {
|
|
54
|
+
const parseStrf = ({ iterator, size, fccType, }) => {
|
|
55
|
+
if (fccType === 'vids') {
|
|
60
56
|
return parseStrfVideo({ iterator, size });
|
|
61
57
|
}
|
|
62
|
-
if (
|
|
58
|
+
if (fccType === 'auds') {
|
|
63
59
|
return parseStrfAudio({ iterator, size });
|
|
64
60
|
}
|
|
65
|
-
throw new Error(`Unsupported fccType: ${
|
|
61
|
+
throw new Error(`Unsupported fccType: ${fccType}`);
|
|
66
62
|
};
|
|
67
63
|
exports.parseStrf = parseStrf;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseStrh = void 0;
|
|
4
|
+
const parse_strf_1 = require("./parse-strf");
|
|
4
5
|
const parseStrh = ({ iterator, size, }) => {
|
|
5
6
|
const box = iterator.startBox(size);
|
|
6
7
|
const fccType = iterator.getByteString(4, false);
|
|
@@ -28,6 +29,15 @@ const parseStrh = ({ iterator, size, }) => {
|
|
|
28
29
|
const quality = iterator.getUint32Le();
|
|
29
30
|
const sampleSize = iterator.getUint32Le();
|
|
30
31
|
box.discardRest();
|
|
32
|
+
const ckId = iterator.getByteString(4, false);
|
|
33
|
+
const ckSize = iterator.getUint32Le();
|
|
34
|
+
if (ckId !== 'strf') {
|
|
35
|
+
throw new Error(`Expected strf, got ${JSON.stringify(ckId)}`);
|
|
36
|
+
}
|
|
37
|
+
if (iterator.bytesRemaining() < ckSize) {
|
|
38
|
+
throw new Error('Expected strf to be complete');
|
|
39
|
+
}
|
|
40
|
+
const strf = (0, parse_strf_1.parseStrf)({ iterator, size: ckSize, fccType });
|
|
31
41
|
return {
|
|
32
42
|
type: 'strh-box',
|
|
33
43
|
fccType,
|
|
@@ -43,6 +53,7 @@ const parseStrh = ({ iterator, size, }) => {
|
|
|
43
53
|
start,
|
|
44
54
|
suggestedBufferSize,
|
|
45
55
|
language,
|
|
56
|
+
strf,
|
|
46
57
|
};
|
|
47
58
|
};
|
|
48
59
|
exports.parseStrh = parseStrh;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseVideoSection = void 0;
|
|
4
|
+
const get_tracks_1 = require("../../get-tracks");
|
|
5
|
+
const get_tracks_from_avi_1 = require("./get-tracks-from-avi");
|
|
6
|
+
const parse_movi_1 = require("./parse-movi");
|
|
7
|
+
const parseVideoSection = (state) => {
|
|
8
|
+
const videoSection = state.videoSection.getVideoSection();
|
|
9
|
+
const movi = (0, parse_movi_1.parseMovi)({
|
|
10
|
+
maxOffset: videoSection.start + videoSection.size,
|
|
11
|
+
state,
|
|
12
|
+
});
|
|
13
|
+
const tracks = (0, get_tracks_1.getTracks)(state);
|
|
14
|
+
if (!tracks.videoTracks.some((t) => t.codec === get_tracks_from_avi_1.TO_BE_OVERRIDDEN_LATER)) {
|
|
15
|
+
state.callbacks.tracks.setIsDone();
|
|
16
|
+
}
|
|
17
|
+
return movi;
|
|
18
|
+
};
|
|
19
|
+
exports.parseVideoSection = parseVideoSection;
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
export type WaveFormatBox = {
|
|
2
|
-
type: 'wave-format-box';
|
|
3
|
-
formatTag: 1;
|
|
4
|
-
numberOfChannels: number;
|
|
5
|
-
sampleRate: number;
|
|
6
|
-
blockAlign: number;
|
|
7
|
-
byteRate: number;
|
|
8
|
-
bitsPerSample: number;
|
|
9
|
-
};
|
|
10
1
|
export type ListBox = {
|
|
11
2
|
type: 'list-box';
|
|
12
3
|
listType: string;
|
|
@@ -30,9 +21,10 @@ export type AvihBox = {
|
|
|
30
21
|
width: number;
|
|
31
22
|
height: number;
|
|
32
23
|
};
|
|
24
|
+
export type FccType = 'vids' | 'auds';
|
|
33
25
|
export type StrhBox = {
|
|
34
26
|
type: 'strh-box';
|
|
35
|
-
fccType:
|
|
27
|
+
fccType: FccType;
|
|
36
28
|
handler: 'H264' | number;
|
|
37
29
|
flags: number;
|
|
38
30
|
priority: number;
|
|
@@ -45,6 +37,7 @@ export type StrhBox = {
|
|
|
45
37
|
quality: number;
|
|
46
38
|
sampleSize: number;
|
|
47
39
|
language: number;
|
|
40
|
+
strf: StrfBoxVideo | StrfBoxAudio;
|
|
48
41
|
};
|
|
49
42
|
export type StrfBoxVideo = {
|
|
50
43
|
type: 'strf-box-video';
|
|
@@ -75,11 +68,12 @@ export type RiffHeader = {
|
|
|
75
68
|
fileSize: number;
|
|
76
69
|
fileType: string;
|
|
77
70
|
};
|
|
78
|
-
export type MoviBox = {
|
|
79
|
-
type: 'movi-box';
|
|
80
|
-
};
|
|
81
71
|
export type IsftBox = {
|
|
82
72
|
type: 'isft-box';
|
|
83
73
|
software: string;
|
|
84
74
|
};
|
|
85
|
-
export type RiffBox = RiffRegularBox |
|
|
75
|
+
export type RiffBox = RiffRegularBox | RiffHeader | ListBox | AvihBox | StrhBox | StrfBoxVideo | StrfBoxAudio | IsftBox;
|
|
76
|
+
export type RiffStructure = {
|
|
77
|
+
type: 'riff';
|
|
78
|
+
boxes: RiffBox[];
|
|
79
|
+
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import type { RiffStructure } from '
|
|
2
|
-
import type { AvihBox, ListBox, RiffBox, StrfBoxAudio, StrfBoxVideo, StrhBox } from './riff-box';
|
|
1
|
+
import type { AvihBox, ListBox, RiffBox, RiffStructure, StrhBox } from './riff-box';
|
|
3
2
|
export declare const isRiffAvi: (structure: RiffStructure) => boolean;
|
|
4
3
|
export declare const getHdlrBox: (structure: RiffStructure) => ListBox | null;
|
|
5
4
|
export declare const getAvihBox: (structure: RiffStructure) => AvihBox | null;
|
|
6
5
|
export declare const getStrlBoxes: (structure: RiffStructure) => ListBox[];
|
|
7
6
|
export declare const getStrhBox: (strlBoxChildren: RiffBox[]) => StrhBox | null;
|
|
8
|
-
export declare const getStrfBox: (strlBoxChildren: RiffBox[]) => StrfBoxAudio | StrfBoxVideo | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getStrhBox = exports.getStrlBoxes = exports.getAvihBox = exports.getHdlrBox = exports.isRiffAvi = void 0;
|
|
4
4
|
const isRiffAvi = (structure) => {
|
|
5
5
|
return structure.boxes.some((box) => box.type === 'riff-header' && box.fileType === 'AVI');
|
|
6
6
|
};
|
|
@@ -29,8 +29,3 @@ const getStrhBox = (strlBoxChildren) => {
|
|
|
29
29
|
return strlBoxChildren.find((box) => box.type === 'strh-box');
|
|
30
30
|
};
|
|
31
31
|
exports.getStrhBox = getStrhBox;
|
|
32
|
-
const getStrfBox = (strlBoxChildren) => {
|
|
33
|
-
var _a;
|
|
34
|
-
return ((_a = strlBoxChildren.find((box) => box.type === 'strf-box-audio' || box.type === 'strf-box-video')) !== null && _a !== void 0 ? _a : null);
|
|
35
|
-
};
|
|
36
|
-
exports.getStrfBox = getStrfBox;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ParserState } from '../../state/parser-state';
|
|
2
|
+
import type { AllTracks } from '../riff/get-tracks-from-avi';
|
|
3
|
+
export declare const getTracksFromTransportStream: (parserState: ParserState) => AllTracks;
|
|
4
|
+
export declare const hasAllTracksFromTransportStream: (parserState: ParserState) => boolean;
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.hasAllTracksFromTransportStream = exports.getTracksFromTransportStream = void 0;
|
|
4
4
|
const truthy_1 = require("../../truthy");
|
|
5
5
|
const traversal_1 = require("./traversal");
|
|
6
|
-
const getTracksFromTransportStream = (
|
|
6
|
+
const getTracksFromTransportStream = (parserState) => {
|
|
7
|
+
const structure = parserState.structure.getStructure();
|
|
7
8
|
const programMapTable = (0, traversal_1.findProgramMapTableOrThrow)(structure);
|
|
8
9
|
const parserTracks = parserState.callbacks.tracks.getTracks();
|
|
9
10
|
const mapped = programMapTable.streams
|
|
@@ -21,9 +22,9 @@ const getTracksFromTransportStream = (structure, parserState) => {
|
|
|
21
22
|
};
|
|
22
23
|
};
|
|
23
24
|
exports.getTracksFromTransportStream = getTracksFromTransportStream;
|
|
24
|
-
const hasAllTracksFromTransportStream = (
|
|
25
|
+
const hasAllTracksFromTransportStream = (parserState) => {
|
|
25
26
|
try {
|
|
26
|
-
(0, exports.getTracksFromTransportStream)(
|
|
27
|
+
(0, exports.getTracksFromTransportStream)(parserState);
|
|
27
28
|
return true;
|
|
28
29
|
}
|
|
29
30
|
catch (_a) {
|
|
@@ -6,7 +6,8 @@ const parse_pes_1 = require("./parse-pes");
|
|
|
6
6
|
const parse_pmt_1 = require("./parse-pmt");
|
|
7
7
|
const parse_stream_packet_1 = require("./parse-stream-packet");
|
|
8
8
|
const traversal_1 = require("./traversal");
|
|
9
|
-
const parsePacket = async ({
|
|
9
|
+
const parsePacket = async ({ parserState, }) => {
|
|
10
|
+
const { iterator } = parserState;
|
|
10
11
|
const offset = iterator.counter.getOffset();
|
|
11
12
|
const syncByte = iterator.getUint8();
|
|
12
13
|
if (syncByte !== 0x47) {
|
|
@@ -45,11 +46,12 @@ const parsePacket = async ({ iterator, structure, streamBuffers, parserState, ne
|
|
|
45
46
|
if (read === 188) {
|
|
46
47
|
return Promise.resolve(null);
|
|
47
48
|
}
|
|
49
|
+
const structure = parserState.structure.getStructure();
|
|
48
50
|
const pat = structure.boxes.find((b) => b.type === 'transport-stream-pmt-box');
|
|
49
51
|
const isPes = payloadUnitStartIndicator && (pat === null || pat === void 0 ? void 0 : pat.streams.find((e) => e.pid === programId));
|
|
50
52
|
if (isPes) {
|
|
51
53
|
const packetPes = (0, parse_pes_1.parsePes)(iterator);
|
|
52
|
-
nextPesHeaderStore.setNextPesHeader(packetPes);
|
|
54
|
+
parserState.transportStream.nextPesHeaderStore.setNextPesHeader(packetPes);
|
|
53
55
|
}
|
|
54
56
|
else if (payloadUnitStartIndicator === 1) {
|
|
55
57
|
iterator.getUint8(); // pointerField
|
|
@@ -65,10 +67,7 @@ const parsePacket = async ({ iterator, structure, streamBuffers, parserState, ne
|
|
|
65
67
|
const stream = (0, traversal_1.getStreamForId)(structure, programId);
|
|
66
68
|
if (stream) {
|
|
67
69
|
await (0, parse_stream_packet_1.parseStream)({
|
|
68
|
-
iterator,
|
|
69
70
|
transportStreamEntry: stream,
|
|
70
|
-
streamBuffers,
|
|
71
|
-
nextPesHeader: nextPesHeaderStore.getNextPesHeader(),
|
|
72
71
|
state: parserState,
|
|
73
72
|
programId,
|
|
74
73
|
structure,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TransportStreamStructure } from '../../parse-result';
|
|
2
|
+
import type { ParserState } from '../../state/parser-state';
|
|
3
|
+
import type { TransportStreamEntry } from './parse-pmt';
|
|
4
|
+
export declare const parseStream: ({ transportStreamEntry, state, programId, structure, }: {
|
|
5
|
+
transportStreamEntry: TransportStreamEntry;
|
|
6
|
+
state: ParserState;
|
|
7
|
+
programId: number;
|
|
8
|
+
structure: TransportStreamStructure;
|
|
9
|
+
}) => Promise<void>;
|
|
@@ -6,13 +6,14 @@ const adts_header_1 = require("./adts-header");
|
|
|
6
6
|
const discard_rest_of_packet_1 = require("./discard-rest-of-packet");
|
|
7
7
|
const find_separator_1 = require("./find-separator");
|
|
8
8
|
const process_stream_buffers_1 = require("./process-stream-buffers");
|
|
9
|
-
const parseAdtsStream = async ({ restOfPacket, transportStreamEntry,
|
|
9
|
+
const parseAdtsStream = async ({ restOfPacket, transportStreamEntry, state, structure, offset, }) => {
|
|
10
10
|
var _a, _b;
|
|
11
|
+
const { streamBuffers, nextPesHeaderStore: nextPesHeader } = state.transportStream;
|
|
11
12
|
const streamBuffer = streamBuffers.get(transportStreamEntry.pid);
|
|
12
13
|
if (!streamBuffer) {
|
|
13
14
|
streamBuffers.set(transportStreamEntry.pid, {
|
|
14
15
|
buffer: restOfPacket,
|
|
15
|
-
pesHeader: nextPesHeader,
|
|
16
|
+
pesHeader: nextPesHeader.getNextPesHeader(),
|
|
16
17
|
offset,
|
|
17
18
|
});
|
|
18
19
|
return;
|
|
@@ -35,13 +36,14 @@ const parseAdtsStream = async ({ restOfPacket, transportStreamEntry, streamBuffe
|
|
|
35
36
|
const rest = restOfPacket.slice(bytesToTake);
|
|
36
37
|
streamBuffers.set(transportStreamEntry.pid, {
|
|
37
38
|
buffer: rest,
|
|
38
|
-
pesHeader: nextPesHeader,
|
|
39
|
+
pesHeader: nextPesHeader.getNextPesHeader(),
|
|
39
40
|
offset,
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
};
|
|
43
|
-
const parseAvcStream = async ({ restOfPacket, transportStreamEntry,
|
|
44
|
+
const parseAvcStream = async ({ restOfPacket, transportStreamEntry, programId, state, structure, offset, }) => {
|
|
44
45
|
const indexOfSeparator = (0, find_separator_1.findNextSeparator)(restOfPacket, transportStreamEntry);
|
|
46
|
+
const { streamBuffers, nextPesHeaderStore: nextPesHeader } = state.transportStream;
|
|
45
47
|
const streamBuffer = streamBuffers.get(transportStreamEntry.pid);
|
|
46
48
|
if (indexOfSeparator === -1) {
|
|
47
49
|
if (streamBuffer) {
|
|
@@ -52,7 +54,7 @@ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, streamBuffer
|
|
|
52
54
|
return;
|
|
53
55
|
}
|
|
54
56
|
streamBuffers.set(programId, {
|
|
55
|
-
pesHeader: nextPesHeader,
|
|
57
|
+
pesHeader: nextPesHeader.getNextPesHeader(),
|
|
56
58
|
buffer: restOfPacket,
|
|
57
59
|
offset,
|
|
58
60
|
});
|
|
@@ -69,7 +71,7 @@ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, streamBuffer
|
|
|
69
71
|
});
|
|
70
72
|
const rest = restOfPacket.slice(indexOfSeparator);
|
|
71
73
|
streamBuffers.set(programId, {
|
|
72
|
-
pesHeader: nextPesHeader,
|
|
74
|
+
pesHeader: nextPesHeader.getNextPesHeader(),
|
|
73
75
|
buffer: rest,
|
|
74
76
|
offset,
|
|
75
77
|
});
|
|
@@ -79,19 +81,18 @@ const parseAvcStream = async ({ restOfPacket, transportStreamEntry, streamBuffer
|
|
|
79
81
|
throw new Error('No stream buffer found but new separator is not at the beginning');
|
|
80
82
|
}
|
|
81
83
|
streamBuffers.set(programId, {
|
|
82
|
-
pesHeader: nextPesHeader,
|
|
84
|
+
pesHeader: nextPesHeader.getNextPesHeader(),
|
|
83
85
|
buffer: restOfPacket.slice(indexOfSeparator),
|
|
84
86
|
offset,
|
|
85
87
|
});
|
|
86
88
|
};
|
|
87
|
-
const parseStream = ({
|
|
89
|
+
const parseStream = ({ transportStreamEntry, state, programId, structure, }) => {
|
|
90
|
+
const { iterator } = state;
|
|
88
91
|
const restOfPacket = (0, discard_rest_of_packet_1.getRestOfPacket)(iterator);
|
|
89
92
|
if (transportStreamEntry.streamType === 27) {
|
|
90
93
|
return parseAvcStream({
|
|
91
94
|
restOfPacket,
|
|
92
95
|
transportStreamEntry,
|
|
93
|
-
streamBuffers,
|
|
94
|
-
nextPesHeader,
|
|
95
96
|
state,
|
|
96
97
|
programId,
|
|
97
98
|
structure,
|
|
@@ -102,8 +103,6 @@ const parseStream = ({ iterator, transportStreamEntry, streamBuffers, state, pro
|
|
|
102
103
|
return parseAdtsStream({
|
|
103
104
|
restOfPacket,
|
|
104
105
|
transportStreamEntry,
|
|
105
|
-
streamBuffers,
|
|
106
|
-
nextPesHeader,
|
|
107
106
|
state,
|
|
108
107
|
structure,
|
|
109
108
|
offset: iterator.counter.getOffset(),
|