@remotion/media-parser 4.0.255 → 4.0.256
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-new-matroska-tracks.d.ts +8 -0
- package/dist/add-new-matroska-tracks.js +14 -0
- package/dist/boxes/avc/parse-avc.d.ts +18 -0
- package/dist/boxes/avc/parse-avc.js +96 -0
- package/dist/boxes/iso-base-media/base-type.d.ts +4 -0
- package/dist/boxes/iso-base-media/base-type.js +2 -0
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +14 -0
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +38 -0
- package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +29 -0
- package/dist/boxes/iso-base-media/esds/esds-descriptors.js +82 -0
- package/dist/boxes/iso-base-media/esds/esds.d.ts +15 -0
- package/dist/boxes/iso-base-media/esds/esds.js +27 -0
- package/dist/boxes/iso-base-media/ftyp.d.ts +13 -0
- package/dist/boxes/iso-base-media/ftyp.js +22 -0
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +13 -0
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +22 -0
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +4 -0
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +54 -0
- package/dist/boxes/iso-base-media/make-track.d.ts +3 -0
- package/dist/boxes/iso-base-media/make-track.js +107 -0
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +25 -0
- package/dist/boxes/iso-base-media/mdat/mdat.js +122 -0
- package/dist/boxes/iso-base-media/mdhd.d.ts +16 -0
- package/dist/boxes/iso-base-media/mdhd.js +32 -0
- package/dist/boxes/iso-base-media/meta/hdlr.d.ts +12 -0
- package/dist/boxes/iso-base-media/meta/hdlr.js +33 -0
- package/dist/boxes/iso-base-media/meta/ilst.d.ts +28 -0
- package/dist/boxes/iso-base-media/meta/ilst.js +86 -0
- package/dist/boxes/iso-base-media/moov/moov.d.ts +19 -0
- package/dist/boxes/iso-base-media/moov/moov.js +27 -0
- package/dist/boxes/iso-base-media/mvhd.d.ts +30 -0
- package/dist/boxes/iso-base-media/mvhd.js +65 -0
- package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +36 -0
- package/dist/boxes/iso-base-media/parse-icc-profile.js +115 -0
- package/dist/boxes/iso-base-media/process-box.d.ts +34 -0
- package/dist/boxes/iso-base-media/process-box.js +710 -0
- package/dist/boxes/iso-base-media/stsd/av1c.d.ts +9 -0
- package/dist/boxes/iso-base-media/stsd/av1c.js +10 -0
- package/dist/boxes/iso-base-media/stsd/avcc.d.ts +10 -0
- package/dist/boxes/iso-base-media/stsd/avcc.js +21 -0
- package/dist/boxes/iso-base-media/stsd/colr.d.ts +21 -0
- package/dist/boxes/iso-base-media/stsd/colr.js +47 -0
- package/dist/boxes/iso-base-media/stsd/ctts.d.ts +19 -0
- package/dist/boxes/iso-base-media/stsd/ctts.js +34 -0
- package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +11 -0
- package/dist/boxes/iso-base-media/stsd/hvcc.js +17 -0
- package/dist/boxes/iso-base-media/stsd/keys.d.ts +19 -0
- package/dist/boxes/iso-base-media/stsd/keys.js +35 -0
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +19 -0
- package/dist/boxes/iso-base-media/stsd/mebx.js +32 -0
- package/dist/boxes/iso-base-media/stsd/pasp.d.ts +12 -0
- package/dist/boxes/iso-base-media/stsd/pasp.js +17 -0
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +68 -0
- package/dist/boxes/iso-base-media/stsd/samples.js +320 -0
- package/dist/boxes/iso-base-media/stsd/stco.d.ts +15 -0
- package/dist/boxes/iso-base-media/stsd/stco.js +30 -0
- package/dist/boxes/iso-base-media/stsd/stsc.d.ts +19 -0
- package/dist/boxes/iso-base-media/stsd/stsc.js +34 -0
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +18 -0
- package/dist/boxes/iso-base-media/stsd/stsd.js +33 -0
- package/dist/boxes/iso-base-media/stsd/stss.d.ts +13 -0
- package/dist/boxes/iso-base-media/stsd/stss.js +28 -0
- package/dist/boxes/iso-base-media/stsd/stsz.d.ts +21 -0
- package/dist/boxes/iso-base-media/stsd/stsz.js +44 -0
- package/dist/boxes/iso-base-media/stsd/stts.d.ts +15 -0
- package/dist/boxes/iso-base-media/stsd/stts.js +35 -0
- package/dist/boxes/iso-base-media/tfdt.d.ts +12 -0
- package/dist/boxes/iso-base-media/tfdt.js +20 -0
- package/dist/boxes/iso-base-media/tfhd.d.ts +16 -0
- package/dist/boxes/iso-base-media/tfhd.js +41 -0
- package/dist/boxes/iso-base-media/tkhd.d.ts +25 -0
- package/dist/boxes/iso-base-media/tkhd.js +87 -0
- package/dist/boxes/iso-base-media/to-date.d.ts +2 -0
- package/dist/boxes/iso-base-media/to-date.js +19 -0
- package/dist/boxes/iso-base-media/trak/trak.d.ts +19 -0
- package/dist/boxes/iso-base-media/trak/trak.js +27 -0
- package/dist/boxes/iso-base-media/traversal.d.ts +39 -0
- package/dist/boxes/iso-base-media/traversal.js +201 -0
- package/dist/boxes/iso-base-media/trun.d.ts +21 -0
- package/dist/boxes/iso-base-media/trun.js +44 -0
- package/dist/boxes/iso-base-media/void-box.d.ts +4 -0
- package/dist/boxes/iso-base-media/void-box.js +2 -0
- package/dist/boxes/riff/expect-riff-box.d.ts +17 -0
- package/dist/boxes/riff/expect-riff-box.js +49 -0
- package/dist/boxes/riff/get-tracks-from-avi.d.ts +22 -0
- package/dist/boxes/riff/get-tracks-from-avi.js +114 -0
- package/dist/boxes/riff/is-movi.d.ts +2 -0
- package/dist/boxes/riff/is-movi.js +12 -0
- package/dist/boxes/riff/parse-avih.d.ts +6 -0
- package/dist/boxes/riff/parse-avih.js +32 -0
- package/dist/boxes/riff/parse-box.d.ts +15 -0
- package/dist/boxes/riff/parse-box.js +146 -0
- package/dist/boxes/riff/parse-fmt-box.d.ts +7 -0
- package/dist/boxes/riff/parse-fmt-box.js +33 -0
- package/dist/boxes/riff/parse-isft.d.ts +6 -0
- package/dist/boxes/riff/parse-isft.js +17 -0
- package/dist/boxes/riff/parse-list-box.d.ts +8 -0
- package/dist/boxes/riff/parse-list-box.js +30 -0
- package/dist/boxes/riff/parse-movi.d.ts +17 -0
- package/dist/boxes/riff/parse-movi.js +133 -0
- package/dist/boxes/riff/parse-riff-box.d.ts +10 -0
- package/dist/boxes/riff/parse-riff-box.js +37 -0
- package/dist/boxes/riff/parse-strf.d.ts +7 -0
- package/dist/boxes/riff/parse-strf.js +67 -0
- package/dist/boxes/riff/parse-strh.d.ts +6 -0
- package/dist/boxes/riff/parse-strh.js +46 -0
- package/dist/boxes/riff/riff-box.d.ts +85 -0
- package/dist/boxes/riff/riff-box.js +2 -0
- package/dist/boxes/riff/timescale.d.ts +1 -0
- package/dist/boxes/riff/timescale.js +4 -0
- package/dist/boxes/riff/traversal.d.ts +8 -0
- package/dist/boxes/riff/traversal.js +36 -0
- package/dist/boxes/webm/allowed-partial-segments.d.ts +1 -0
- package/dist/boxes/webm/allowed-partial-segments.js +4 -0
- package/dist/boxes/webm/av1-codec-private.d.ts +2 -0
- package/dist/boxes/webm/av1-codec-private.js +95 -0
- package/dist/boxes/webm/color.d.ts +4 -0
- package/dist/boxes/webm/color.js +127 -0
- package/dist/boxes/webm/description.d.ts +2 -0
- package/dist/boxes/webm/description.js +83 -0
- package/dist/boxes/webm/ebml.d.ts +2 -0
- package/dist/boxes/webm/ebml.js +94 -0
- package/dist/boxes/webm/get-ready-tracks.d.ts +3 -0
- package/dist/boxes/webm/get-ready-tracks.js +29 -0
- package/dist/boxes/webm/get-sample-from-block.d.ts +17 -0
- package/dist/boxes/webm/get-sample-from-block.js +81 -0
- package/dist/boxes/webm/make-header.d.ts +8 -0
- package/dist/boxes/webm/make-header.js +187 -0
- package/dist/boxes/webm/make-track.d.ts +9 -0
- package/dist/boxes/webm/make-track.js +261 -0
- package/dist/boxes/webm/parse-ebml.d.ts +12 -0
- package/dist/boxes/webm/parse-ebml.js +185 -0
- package/dist/boxes/webm/parse-webm-header.d.ts +9 -0
- package/dist/boxes/webm/parse-webm-header.js +36 -0
- package/dist/boxes/webm/segments/all-segments.d.ts +976 -0
- package/dist/boxes/webm/segments/all-segments.js +724 -0
- package/dist/boxes/webm/segments/block-simple-block-flags.d.ts +9 -0
- package/dist/boxes/webm/segments/block-simple-block-flags.js +38 -0
- package/dist/boxes/webm/segments/parse-children.d.ts +23 -0
- package/dist/boxes/webm/segments/parse-children.js +145 -0
- package/dist/boxes/webm/segments/track-entry.d.ts +9 -0
- package/dist/boxes/webm/segments/track-entry.js +24 -0
- package/dist/boxes/webm/segments.d.ts +15 -0
- package/dist/boxes/webm/segments.js +161 -0
- package/dist/boxes/webm/traversal.d.ts +33 -0
- package/dist/boxes/webm/traversal.js +265 -0
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/create/cluster-segment.d.ts +10 -0
- package/dist/create/cluster-segment.js +39 -0
- package/dist/create/cluster.d.ts +19 -0
- package/dist/create/cluster.js +55 -0
- package/dist/create/create-media.d.ts +15 -0
- package/dist/create/create-media.js +165 -0
- package/dist/create/event-emitter.d.ts +31 -0
- package/dist/create/event-emitter.js +25 -0
- package/dist/create/iso-base-media/codec-specific/avc1.d.ts +2 -0
- package/dist/create/iso-base-media/codec-specific/avc1.js +48 -0
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +22 -0
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +36 -0
- package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +2 -0
- package/dist/create/iso-base-media/codec-specific/mp4a.js +74 -0
- package/dist/create/iso-base-media/create-colr.d.ts +6 -0
- package/dist/create/iso-base-media/create-colr.js +26 -0
- package/dist/create/iso-base-media/create-ftyp.d.ts +10 -0
- package/dist/create/iso-base-media/create-ftyp.js +22 -0
- package/dist/create/iso-base-media/create-ilst.d.ts +1 -0
- package/dist/create/iso-base-media/create-ilst.js +14 -0
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +2 -0
- package/dist/create/iso-base-media/create-iso-base-media.js +165 -0
- package/dist/create/iso-base-media/create-mdia.d.ts +5 -0
- package/dist/create/iso-base-media/create-mdia.js +18 -0
- package/dist/create/iso-base-media/create-moov.d.ts +5 -0
- package/dist/create/iso-base-media/create-moov.js +18 -0
- package/dist/create/iso-base-media/create-mvhd.d.ts +10 -0
- package/dist/create/iso-base-media/create-mvhd.js +48 -0
- package/dist/create/iso-base-media/create-trak.d.ts +4 -0
- package/dist/create/iso-base-media/create-trak.js +17 -0
- package/dist/create/iso-base-media/create-udta.d.ts +1 -0
- package/dist/create/iso-base-media/create-udta.js +14 -0
- package/dist/create/iso-base-media/create-url.d.ts +1 -0
- package/dist/create/iso-base-media/create-url.js +16 -0
- package/dist/create/iso-base-media/example-stts.d.ts +3 -0
- package/dist/create/iso-base-media/example-stts.js +2797 -0
- package/dist/create/iso-base-media/ilst/create-cmt.d.ts +1 -0
- package/dist/create/iso-base-media/ilst/create-cmt.js +26 -0
- package/dist/create/iso-base-media/ilst/create-too.d.ts +1 -0
- package/dist/create/iso-base-media/ilst/create-too.js +27 -0
- package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +6 -0
- package/dist/create/iso-base-media/mdia/create-mdhd.js +33 -0
- package/dist/create/iso-base-media/mp4-header.d.ts +6 -0
- package/dist/create/iso-base-media/mp4-header.js +48 -0
- package/dist/create/iso-base-media/primitives.d.ts +15 -0
- package/dist/create/iso-base-media/primitives.js +133 -0
- package/dist/create/iso-base-media/serialize-track.d.ts +9 -0
- package/dist/create/iso-base-media/serialize-track.js +63 -0
- package/dist/create/iso-base-media/trak/create-tkhd.d.ts +27 -0
- package/dist/create/iso-base-media/trak/create-tkhd.js +97 -0
- package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +4 -0
- package/dist/create/iso-base-media/trak/mdia/create-minf.js +19 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +22 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +6 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +35 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +45 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +28 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +56 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +23 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +25 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +48 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +16 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +13 -0
- package/dist/create/iso-base-media/udta/create-meta.d.ts +4 -0
- package/dist/create/iso-base-media/udta/create-meta.js +20 -0
- package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +1 -0
- package/dist/create/iso-base-media/udta/meta/create-hdlr.js +32 -0
- package/dist/create/make-duration-with-padding.d.ts +1 -0
- package/dist/create/make-duration-with-padding.js +15 -0
- package/dist/create/make-track-info.d.ts +20 -0
- package/dist/create/make-track-info.js +2 -0
- package/dist/create/matroska/cluster-segment.d.ts +10 -0
- package/dist/create/matroska/cluster-segment.js +39 -0
- package/dist/create/matroska/cluster.d.ts +25 -0
- package/dist/create/matroska/cluster.js +77 -0
- package/dist/create/matroska/create-matroska-media.d.ts +2 -0
- package/dist/create/matroska/create-matroska-media.js +187 -0
- package/dist/create/matroska/make-duration-with-padding.d.ts +1 -0
- package/dist/create/matroska/make-duration-with-padding.js +15 -0
- package/dist/create/matroska/matroska-cues.d.ts +6 -0
- package/dist/create/matroska/matroska-cues.js +49 -0
- package/dist/create/matroska/matroska-header.d.ts +1 -0
- package/dist/create/matroska/matroska-header.js +66 -0
- package/dist/create/matroska/matroska-info.d.ts +3 -0
- package/dist/create/matroska/matroska-info.js +33 -0
- package/dist/create/matroska/matroska-seek.d.ts +6 -0
- package/dist/create/matroska/matroska-seek.js +32 -0
- package/dist/create/matroska/matroska-segment.d.ts +3 -0
- package/dist/create/matroska/matroska-segment.js +13 -0
- package/dist/create/matroska/matroska-trackentry.d.ts +10 -0
- package/dist/create/matroska/matroska-trackentry.js +249 -0
- package/dist/create/matroska-cues.d.ts +6 -0
- package/dist/create/matroska-cues.js +49 -0
- package/dist/create/matroska-header.d.ts +1 -0
- package/dist/create/matroska-header.js +66 -0
- package/dist/create/matroska-info.d.ts +3 -0
- package/dist/create/matroska-info.js +33 -0
- package/dist/create/matroska-seek.d.ts +6 -0
- package/dist/create/matroska-seek.js +32 -0
- package/dist/create/matroska-segment.d.ts +3 -0
- package/dist/create/matroska-segment.js +13 -0
- package/dist/create/matroska-trackentry.d.ts +27 -0
- package/dist/create/matroska-trackentry.js +243 -0
- package/dist/create/media-fn.d.ts +33 -0
- package/dist/create/media-fn.js +2 -0
- package/dist/create/progress-tracker.d.ts +7 -0
- package/dist/create/progress-tracker.js +43 -0
- package/dist/create/timescale.d.ts +1 -0
- package/dist/create/timescale.js +4 -0
- package/dist/create/wav/create-wav.d.ts +2 -0
- package/dist/create/wav/create-wav.js +110 -0
- package/dist/create/with-resolvers.d.ts +10 -0
- package/dist/create/with-resolvers.js +28 -0
- package/dist/esm/buffer.mjs +56 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/web-fs.mjs +73 -0
- package/dist/parse-video.d.ts +25 -0
- package/dist/parse-video.js +39 -0
- package/dist/parser-context.d.ts +10 -0
- package/dist/parser-context.js +2 -0
- package/dist/parser-state.d.ts +22 -0
- package/dist/parser-state.js +132 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/writers/buffer-implementation/writer.d.ts +2 -0
- package/dist/writers/buffer-implementation/writer.js +54 -0
- package/dist/writers/buffer.d.ts +2 -0
- package/dist/writers/buffer.js +7 -0
- package/dist/writers/web-fs.d.ts +3 -0
- package/dist/writers/web-fs.js +74 -0
- package/package.json +3 -3
- package/dist/abort.d.ts +0 -1
- package/dist/abort.js +0 -7
- package/dist/controller.d.ts +0 -17
- package/dist/controller.js +0 -31
- package/dist/parse-and-download-media.d.ts +0 -2
- package/dist/parse-and-download-media.js +0 -57
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAvc1Data = void 0;
|
|
4
|
+
const make_header_1 = require("../../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("../primitives");
|
|
6
|
+
const createAvc1Data = ({ avccBox, pasp, width, height, horizontalResolution, verticalResolution, compressorName, depth, }) => {
|
|
7
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
+
// type
|
|
9
|
+
(0, primitives_1.stringsToUint8Array)('avc1'),
|
|
10
|
+
// reserved
|
|
11
|
+
new Uint8Array([0, 0, 0, 0, 0, 0]),
|
|
12
|
+
// data_reference_index
|
|
13
|
+
new Uint8Array([0, 1]),
|
|
14
|
+
// version
|
|
15
|
+
new Uint8Array([0, 0]),
|
|
16
|
+
// revisionLevel
|
|
17
|
+
new Uint8Array([0, 0]),
|
|
18
|
+
// vendor
|
|
19
|
+
new Uint8Array([0, 0, 0, 0]),
|
|
20
|
+
// temporalQuality
|
|
21
|
+
new Uint8Array([0, 0, 0, 0]),
|
|
22
|
+
// spatialQuality
|
|
23
|
+
new Uint8Array([0, 0, 0, 0]),
|
|
24
|
+
// width
|
|
25
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(width),
|
|
26
|
+
// height
|
|
27
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(height),
|
|
28
|
+
// horizontalResolution
|
|
29
|
+
(0, primitives_1.setFixedPointSignedOrUnsigned1616Number)(horizontalResolution),
|
|
30
|
+
// verticalResolution
|
|
31
|
+
(0, primitives_1.setFixedPointSignedOrUnsigned1616Number)(verticalResolution),
|
|
32
|
+
// dataSize
|
|
33
|
+
new Uint8Array([0, 0, 0, 0]),
|
|
34
|
+
// frame count per sample
|
|
35
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(1),
|
|
36
|
+
// compressor name
|
|
37
|
+
(0, primitives_1.stringToPascalString)(compressorName),
|
|
38
|
+
// depth
|
|
39
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(depth),
|
|
40
|
+
// colorTableId
|
|
41
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(-1),
|
|
42
|
+
// avcc box
|
|
43
|
+
avccBox,
|
|
44
|
+
// pasp
|
|
45
|
+
pasp,
|
|
46
|
+
]));
|
|
47
|
+
};
|
|
48
|
+
exports.createAvc1Data = createAvc1Data;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MakeTrackAudio, MakeTrackVideo } from '../../make-track-info';
|
|
2
|
+
export type Avc1Data = {
|
|
3
|
+
pasp: Uint8Array;
|
|
4
|
+
avccBox: Uint8Array;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
horizontalResolution: number;
|
|
8
|
+
verticalResolution: number;
|
|
9
|
+
compressorName: string;
|
|
10
|
+
depth: number;
|
|
11
|
+
type: 'avc1-data';
|
|
12
|
+
};
|
|
13
|
+
export type Mp4aData = {
|
|
14
|
+
type: 'mp4a-data';
|
|
15
|
+
sampleRate: number;
|
|
16
|
+
channelCount: number;
|
|
17
|
+
maxBitrate: number;
|
|
18
|
+
avgBitrate: number;
|
|
19
|
+
codecPrivate: Uint8Array | null;
|
|
20
|
+
};
|
|
21
|
+
export type CodecSpecificData = Avc1Data | Mp4aData;
|
|
22
|
+
export declare const createCodecSpecificData: (track: MakeTrackAudio | MakeTrackVideo) => Uint8Array;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createCodecSpecificData = void 0;
|
|
4
|
+
const create_avcc_1 = require("../trak/mdia/minf/stbl/stsd/create-avcc");
|
|
5
|
+
const create_pasp_1 = require("../trak/mdia/minf/stbl/stsd/create-pasp");
|
|
6
|
+
const avc1_1 = require("./avc1");
|
|
7
|
+
const mp4a_1 = require("./mp4a");
|
|
8
|
+
const createCodecSpecificData = (track) => {
|
|
9
|
+
if (track.type === 'video') {
|
|
10
|
+
return (0, avc1_1.createAvc1Data)({
|
|
11
|
+
avccBox: (0, create_avcc_1.createAvccBox)(track.codecPrivate),
|
|
12
|
+
compressorName: 'WebCodecs',
|
|
13
|
+
depth: 24,
|
|
14
|
+
horizontalResolution: 72,
|
|
15
|
+
verticalResolution: 72,
|
|
16
|
+
height: track.height,
|
|
17
|
+
width: track.width,
|
|
18
|
+
pasp: (0, create_pasp_1.createPasp)(1, 1),
|
|
19
|
+
type: 'avc1-data',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (track.type === 'audio') {
|
|
23
|
+
return (0, mp4a_1.createMp4a)({
|
|
24
|
+
type: 'mp4a-data',
|
|
25
|
+
// TODO: Put in values based on real data,
|
|
26
|
+
// this seems to work though
|
|
27
|
+
avgBitrate: 128 * 1024,
|
|
28
|
+
maxBitrate: 128 * 1024,
|
|
29
|
+
channelCount: track.numberOfChannels,
|
|
30
|
+
sampleRate: track.sampleRate,
|
|
31
|
+
codecPrivate: track.codecPrivate,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
throw new Error('Unsupported codec specific data ' + track);
|
|
35
|
+
};
|
|
36
|
+
exports.createCodecSpecificData = createCodecSpecificData;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMp4a = void 0;
|
|
4
|
+
const make_header_1 = require("../../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("../primitives");
|
|
6
|
+
const createMp4a = ({ sampleRate, channelCount, avgBitrate, maxBitrate, codecPrivate, }) => {
|
|
7
|
+
if (!codecPrivate) {
|
|
8
|
+
throw new Error('Need codecPrivate for mp4a');
|
|
9
|
+
}
|
|
10
|
+
const esdsAtom = (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
11
|
+
// type
|
|
12
|
+
(0, primitives_1.stringsToUint8Array)('esds'),
|
|
13
|
+
// version
|
|
14
|
+
new Uint8Array([0]),
|
|
15
|
+
// flags
|
|
16
|
+
new Uint8Array([0, 0, 0]),
|
|
17
|
+
// tag = 'ES_DescrTag'
|
|
18
|
+
new Uint8Array([3]),
|
|
19
|
+
(0, primitives_1.addLeading128Size)((0, make_header_1.combineUint8Arrays)([
|
|
20
|
+
// ES_ID
|
|
21
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(2),
|
|
22
|
+
// streamDependenceFlag, URL_Flag, OCRstreamFlag
|
|
23
|
+
new Uint8Array([0]),
|
|
24
|
+
// DecoderConfigDescrTag
|
|
25
|
+
new Uint8Array([4]),
|
|
26
|
+
(0, primitives_1.addLeading128Size)((0, make_header_1.combineUint8Arrays)([
|
|
27
|
+
// objectTypeIndication
|
|
28
|
+
new Uint8Array([0x40]),
|
|
29
|
+
// streamType, upStream
|
|
30
|
+
new Uint8Array([21]),
|
|
31
|
+
// reserved
|
|
32
|
+
new Uint8Array([0, 0, 0]),
|
|
33
|
+
// maxBitrate
|
|
34
|
+
(0, primitives_1.numberTo32BitUIntOrInt)(maxBitrate),
|
|
35
|
+
// avgBitrate
|
|
36
|
+
(0, primitives_1.numberTo32BitUIntOrInt)(avgBitrate),
|
|
37
|
+
// DecoderSpecificInfoTag
|
|
38
|
+
new Uint8Array([5]),
|
|
39
|
+
// see create-aac-codecprivate.ts
|
|
40
|
+
(0, primitives_1.addLeading128Size)(codecPrivate),
|
|
41
|
+
])),
|
|
42
|
+
// SLConfigDescrTag
|
|
43
|
+
new Uint8Array([6]),
|
|
44
|
+
(0, primitives_1.addLeading128Size)(new Uint8Array([2])),
|
|
45
|
+
])),
|
|
46
|
+
]));
|
|
47
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
48
|
+
// type
|
|
49
|
+
(0, primitives_1.stringsToUint8Array)('mp4a'),
|
|
50
|
+
// reserved
|
|
51
|
+
new Uint8Array([0, 0, 0, 0, 0, 0]),
|
|
52
|
+
// data_reference_index
|
|
53
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(1),
|
|
54
|
+
// version
|
|
55
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(0),
|
|
56
|
+
// revision level
|
|
57
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(0),
|
|
58
|
+
// vendor
|
|
59
|
+
new Uint8Array([0, 0, 0, 0]),
|
|
60
|
+
// channelCount
|
|
61
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(channelCount),
|
|
62
|
+
// sampleSize
|
|
63
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(16),
|
|
64
|
+
// compressionId
|
|
65
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(0),
|
|
66
|
+
// packet size
|
|
67
|
+
(0, primitives_1.numberTo16BitUIntOrInt)(0),
|
|
68
|
+
// sample rate
|
|
69
|
+
(0, primitives_1.setFixedPointSignedOrUnsigned1616Number)(sampleRate),
|
|
70
|
+
// esds atom
|
|
71
|
+
esdsAtom,
|
|
72
|
+
]));
|
|
73
|
+
};
|
|
74
|
+
exports.createMp4a = createMp4a;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createColr = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("./primitives");
|
|
6
|
+
// TODO: Not used in creation of MP4 yet
|
|
7
|
+
const createColr = ({ fullRange, matrixIndex, primaries, transferFunction, }) => {
|
|
8
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
9
|
+
// type
|
|
10
|
+
(0, primitives_1.stringsToUint8Array)('colr'),
|
|
11
|
+
// colour_type
|
|
12
|
+
(0, primitives_1.stringsToUint8Array)('nclx'),
|
|
13
|
+
// primaries
|
|
14
|
+
// 1 = 'ITU-R BT.7090
|
|
15
|
+
new Uint8Array([0, primaries]),
|
|
16
|
+
// transfer_function
|
|
17
|
+
// 1 = 'ITU-R BT.7090
|
|
18
|
+
new Uint8Array([0, transferFunction]),
|
|
19
|
+
// matrix_index
|
|
20
|
+
// 1 = 'ITU-R BT.7090
|
|
21
|
+
new Uint8Array([0, matrixIndex]),
|
|
22
|
+
// full_range_flag
|
|
23
|
+
new Uint8Array([fullRange ? 1 : 0]),
|
|
24
|
+
]));
|
|
25
|
+
};
|
|
26
|
+
exports.createColr = createColr;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const createFtyp: ({ majorBrand, minorBrand, compatibleBrands, }: {
|
|
2
|
+
majorBrand: string;
|
|
3
|
+
minorBrand: number;
|
|
4
|
+
compatibleBrands: string[];
|
|
5
|
+
}) => Uint8Array;
|
|
6
|
+
export declare const createIsoBaseMediaFtyp: ({ majorBrand, minorBrand, compatibleBrands, }: {
|
|
7
|
+
majorBrand: string;
|
|
8
|
+
minorBrand: number;
|
|
9
|
+
compatibleBrands: string[];
|
|
10
|
+
}) => Uint8Array;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createIsoBaseMediaFtyp = exports.createFtyp = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("./primitives");
|
|
6
|
+
const createFtyp = ({ majorBrand, minorBrand, compatibleBrands, }) => {
|
|
7
|
+
const type = (0, primitives_1.stringsToUint8Array)('ftyp');
|
|
8
|
+
const majorBrandArr = (0, primitives_1.stringsToUint8Array)(majorBrand);
|
|
9
|
+
const minorBrandArr = (0, primitives_1.numberTo32BitUIntOrInt)(minorBrand);
|
|
10
|
+
const compatibleBrandsArr = (0, make_header_1.combineUint8Arrays)(compatibleBrands.map((b) => (0, primitives_1.stringsToUint8Array)(b)));
|
|
11
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
12
|
+
type,
|
|
13
|
+
majorBrandArr,
|
|
14
|
+
minorBrandArr,
|
|
15
|
+
compatibleBrandsArr,
|
|
16
|
+
]));
|
|
17
|
+
};
|
|
18
|
+
exports.createFtyp = createFtyp;
|
|
19
|
+
const createIsoBaseMediaFtyp = ({ majorBrand, minorBrand, compatibleBrands, }) => {
|
|
20
|
+
return (0, exports.createFtyp)({ compatibleBrands, majorBrand, minorBrand });
|
|
21
|
+
};
|
|
22
|
+
exports.createIsoBaseMediaFtyp = createIsoBaseMediaFtyp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createIlst: (items: Uint8Array[]) => Uint8Array;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createIlst = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("./primitives");
|
|
6
|
+
const createIlst = (items) => {
|
|
7
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
+
// name
|
|
9
|
+
(0, primitives_1.stringsToUint8Array)('ilst'),
|
|
10
|
+
// items
|
|
11
|
+
...items,
|
|
12
|
+
]));
|
|
13
|
+
};
|
|
14
|
+
exports.createIlst = createIlst;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createIsoBaseMedia = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const log_1 = require("../../log");
|
|
6
|
+
const create_ftyp_1 = require("./create-ftyp");
|
|
7
|
+
const mp4_header_1 = require("./mp4-header");
|
|
8
|
+
const primitives_1 = require("./primitives");
|
|
9
|
+
const createIsoBaseMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, logLevel, filename, progressTracker, }) => {
|
|
10
|
+
const header = (0, create_ftyp_1.createIsoBaseMediaFtyp)({
|
|
11
|
+
compatibleBrands: ['isom', 'iso2', 'avc1', 'mp42'],
|
|
12
|
+
majorBrand: 'isom',
|
|
13
|
+
minorBrand: 512,
|
|
14
|
+
});
|
|
15
|
+
const w = await writer.createContent({ filename, mimeType: 'video/mp4' });
|
|
16
|
+
await w.write(header);
|
|
17
|
+
let durationInUnits = 0;
|
|
18
|
+
const currentTracks = [];
|
|
19
|
+
const samplePositions = [];
|
|
20
|
+
const sampleChunkIndices = [];
|
|
21
|
+
const moovOffset = w.getWrittenByteCount();
|
|
22
|
+
const getPaddedMoovAtom = () => {
|
|
23
|
+
return (0, mp4_header_1.createPaddedMoovAtom)({
|
|
24
|
+
durationInUnits,
|
|
25
|
+
trackInfo: currentTracks.map((track) => {
|
|
26
|
+
var _a;
|
|
27
|
+
return {
|
|
28
|
+
track,
|
|
29
|
+
durationInUnits,
|
|
30
|
+
samplePositions: (_a = samplePositions[track.trackNumber]) !== null && _a !== void 0 ? _a : [],
|
|
31
|
+
timescale: track.timescale,
|
|
32
|
+
};
|
|
33
|
+
}),
|
|
34
|
+
timescale: 1000,
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
await w.write(getPaddedMoovAtom());
|
|
38
|
+
let mdatSize = 8;
|
|
39
|
+
const mdatSizeOffset = w.getWrittenByteCount();
|
|
40
|
+
await w.write((0, make_header_1.combineUint8Arrays)([
|
|
41
|
+
// size
|
|
42
|
+
(0, primitives_1.numberTo32BitUIntOrInt)(mdatSize),
|
|
43
|
+
// type
|
|
44
|
+
(0, primitives_1.stringsToUint8Array)('mdat'),
|
|
45
|
+
]));
|
|
46
|
+
const updateMdatSize = async () => {
|
|
47
|
+
await w.updateDataAt(mdatSizeOffset, (0, primitives_1.numberTo32BitUIntOrInt)(mdatSize));
|
|
48
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
49
|
+
};
|
|
50
|
+
const operationProm = { current: Promise.resolve() };
|
|
51
|
+
const updateMoov = async () => {
|
|
52
|
+
await w.updateDataAt(moovOffset, getPaddedMoovAtom());
|
|
53
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
54
|
+
};
|
|
55
|
+
const updateDuration = (newDuration) => {
|
|
56
|
+
durationInUnits = newDuration;
|
|
57
|
+
onMillisecondsProgress(newDuration);
|
|
58
|
+
};
|
|
59
|
+
const addCodecPrivateToTrack = ({ trackNumber, codecPrivate, }) => {
|
|
60
|
+
currentTracks.forEach((track) => {
|
|
61
|
+
if (track.trackNumber === trackNumber) {
|
|
62
|
+
track.codecPrivate = codecPrivate;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
let lastChunkWasVideo = false;
|
|
67
|
+
const addSample = async ({ chunk, trackNumber, isVideo, timescale, codecPrivate, }) => {
|
|
68
|
+
var _a, _b;
|
|
69
|
+
const position = w.getWrittenByteCount();
|
|
70
|
+
await w.write(chunk.data);
|
|
71
|
+
mdatSize += chunk.data.length;
|
|
72
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
73
|
+
progressTracker.updateTrackProgress(trackNumber, chunk.timestamp);
|
|
74
|
+
if (codecPrivate) {
|
|
75
|
+
addCodecPrivateToTrack({ trackNumber, codecPrivate });
|
|
76
|
+
}
|
|
77
|
+
const newDuration = Math.round((chunk.timestamp + ((_a = chunk.duration) !== null && _a !== void 0 ? _a : 0)) / 1000);
|
|
78
|
+
updateDuration(newDuration);
|
|
79
|
+
if (!samplePositions[trackNumber]) {
|
|
80
|
+
samplePositions[trackNumber] = [];
|
|
81
|
+
}
|
|
82
|
+
if (typeof sampleChunkIndices[trackNumber] === 'undefined') {
|
|
83
|
+
sampleChunkIndices[trackNumber] = 0;
|
|
84
|
+
}
|
|
85
|
+
// For video, make a new chunk if it's a keyframe
|
|
86
|
+
if (isVideo && chunk.type === 'key') {
|
|
87
|
+
sampleChunkIndices[trackNumber]++;
|
|
88
|
+
} // For audio, make a new chunk every 22 samples, that's how bbb.mp4 is encoded
|
|
89
|
+
else if (!isVideo && samplePositions[trackNumber].length % 22 === 0) {
|
|
90
|
+
sampleChunkIndices[trackNumber]++;
|
|
91
|
+
}
|
|
92
|
+
// Need to create a new chunk if the last chunk was a different type
|
|
93
|
+
else if (lastChunkWasVideo !== isVideo) {
|
|
94
|
+
sampleChunkIndices[trackNumber]++;
|
|
95
|
+
}
|
|
96
|
+
// media parser and EncodedVideoChunk returns timestamps in microseconds
|
|
97
|
+
// need to normalize the timestamps to milliseconds
|
|
98
|
+
const samplePositionToAdd = {
|
|
99
|
+
isKeyframe: chunk.type === 'key',
|
|
100
|
+
offset: position,
|
|
101
|
+
chunk: sampleChunkIndices[trackNumber],
|
|
102
|
+
cts: Math.round(chunk.cts / (1000000 / timescale)),
|
|
103
|
+
dts: Math.round(chunk.dts / (1000000 / timescale)),
|
|
104
|
+
duration: Math.round(((_b = chunk.duration) !== null && _b !== void 0 ? _b : 0) / (1000000 / timescale)),
|
|
105
|
+
size: chunk.data.length,
|
|
106
|
+
};
|
|
107
|
+
lastChunkWasVideo = isVideo;
|
|
108
|
+
samplePositions[trackNumber].push(samplePositionToAdd);
|
|
109
|
+
};
|
|
110
|
+
const addTrack = (track) => {
|
|
111
|
+
const trackNumber = currentTracks.length + 1;
|
|
112
|
+
currentTracks.push({ ...track, trackNumber });
|
|
113
|
+
progressTracker.registerTrack(trackNumber);
|
|
114
|
+
return Promise.resolve({ trackNumber });
|
|
115
|
+
};
|
|
116
|
+
const waitForFinishPromises = [];
|
|
117
|
+
return {
|
|
118
|
+
save: () => {
|
|
119
|
+
return w.save();
|
|
120
|
+
},
|
|
121
|
+
remove: async () => {
|
|
122
|
+
await w.remove();
|
|
123
|
+
},
|
|
124
|
+
addSample: ({ chunk, trackNumber, isVideo, timescale, codecPrivate }) => {
|
|
125
|
+
operationProm.current = operationProm.current.then(() => {
|
|
126
|
+
return addSample({
|
|
127
|
+
chunk,
|
|
128
|
+
trackNumber,
|
|
129
|
+
isVideo,
|
|
130
|
+
timescale,
|
|
131
|
+
codecPrivate,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
return operationProm.current;
|
|
135
|
+
},
|
|
136
|
+
addTrack: (track) => {
|
|
137
|
+
operationProm.current = operationProm.current.then(() => addTrack(track));
|
|
138
|
+
return operationProm.current;
|
|
139
|
+
},
|
|
140
|
+
updateTrackSampleRate: ({ sampleRate, trackNumber }) => {
|
|
141
|
+
currentTracks.forEach((track) => {
|
|
142
|
+
if (track.trackNumber === trackNumber) {
|
|
143
|
+
if (track.type !== 'audio') {
|
|
144
|
+
throw new Error(`Tried to update sample rate of track ${trackNumber}, but it's not an audio track`);
|
|
145
|
+
}
|
|
146
|
+
track.sampleRate = sampleRate;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
},
|
|
150
|
+
addWaitForFinishPromise: (promise) => {
|
|
151
|
+
waitForFinishPromises.push(promise);
|
|
152
|
+
},
|
|
153
|
+
async waitForFinish() {
|
|
154
|
+
log_1.Log.verbose(logLevel, 'All write operations queued. Waiting for finish...');
|
|
155
|
+
await Promise.all(waitForFinishPromises.map((p) => p()));
|
|
156
|
+
log_1.Log.verbose(logLevel, 'Cleanup tasks executed');
|
|
157
|
+
await operationProm.current;
|
|
158
|
+
await updateMoov();
|
|
159
|
+
await updateMdatSize();
|
|
160
|
+
log_1.Log.verbose(logLevel, 'All write operations done. Waiting for finish...');
|
|
161
|
+
await w.waitForFinish();
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
exports.createIsoBaseMedia = createIsoBaseMedia;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMdia = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("./primitives");
|
|
6
|
+
const createMdia = ({ mdhd, hdlr, minf, }) => {
|
|
7
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
+
// type
|
|
9
|
+
(0, primitives_1.stringsToUint8Array)('mdia'),
|
|
10
|
+
// mdhd
|
|
11
|
+
mdhd,
|
|
12
|
+
// hdlr
|
|
13
|
+
hdlr,
|
|
14
|
+
// minf
|
|
15
|
+
minf,
|
|
16
|
+
]));
|
|
17
|
+
};
|
|
18
|
+
exports.createMdia = createMdia;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMoov = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("./primitives");
|
|
6
|
+
const createMoov = ({ mvhd, traks, udta, }) => {
|
|
7
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
+
// type
|
|
9
|
+
(0, primitives_1.stringsToUint8Array)('moov'),
|
|
10
|
+
// moov atom
|
|
11
|
+
mvhd,
|
|
12
|
+
// traks
|
|
13
|
+
...traks,
|
|
14
|
+
// udta
|
|
15
|
+
udta,
|
|
16
|
+
]));
|
|
17
|
+
};
|
|
18
|
+
exports.createMoov = createMoov;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const createMvhd: ({ timescale, durationInUnits, rate, volume, nextTrackId, matrix, creationTime, modificationTime, }: {
|
|
2
|
+
timescale: number;
|
|
3
|
+
durationInUnits: number;
|
|
4
|
+
rate: number;
|
|
5
|
+
volume: number;
|
|
6
|
+
nextTrackId: number;
|
|
7
|
+
matrix: number[];
|
|
8
|
+
creationTime: number | null;
|
|
9
|
+
modificationTime: number | null;
|
|
10
|
+
}) => Uint8Array;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMvhd = void 0;
|
|
4
|
+
const to_date_1 = require("../../boxes/iso-base-media/to-date");
|
|
5
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
6
|
+
const primitives_1 = require("./primitives");
|
|
7
|
+
const createMvhd = ({ timescale, durationInUnits, rate, volume, nextTrackId, matrix, creationTime, modificationTime, }) => {
|
|
8
|
+
if (matrix.length !== 9) {
|
|
9
|
+
throw new Error('Matrix must be 9 elements long');
|
|
10
|
+
}
|
|
11
|
+
const content = (0, make_header_1.combineUint8Arrays)([
|
|
12
|
+
// type
|
|
13
|
+
(0, primitives_1.stringsToUint8Array)('mvhd'),
|
|
14
|
+
// version
|
|
15
|
+
new Uint8Array([0]),
|
|
16
|
+
// flags
|
|
17
|
+
new Uint8Array([0, 0, 0]),
|
|
18
|
+
// creation time
|
|
19
|
+
creationTime === null
|
|
20
|
+
? (0, primitives_1.numberTo32BitUIntOrInt)(0)
|
|
21
|
+
: (0, primitives_1.numberTo32BitUIntOrInt)((0, to_date_1.fromUnixTimestamp)(creationTime)),
|
|
22
|
+
// modification time
|
|
23
|
+
modificationTime === null
|
|
24
|
+
? (0, primitives_1.numberTo32BitUIntOrInt)(0)
|
|
25
|
+
: (0, primitives_1.numberTo32BitUIntOrInt)((0, to_date_1.fromUnixTimestamp)(modificationTime)),
|
|
26
|
+
// timescale
|
|
27
|
+
(0, primitives_1.numberTo32BitUIntOrInt)(timescale),
|
|
28
|
+
// duration in units, 32bit for version 0
|
|
29
|
+
(0, primitives_1.numberTo32BitUIntOrInt)(durationInUnits),
|
|
30
|
+
// rate
|
|
31
|
+
(0, primitives_1.floatTo16Point1632Bit)(rate),
|
|
32
|
+
// volume
|
|
33
|
+
(0, primitives_1.floatTo16Point16_16Bit)(volume),
|
|
34
|
+
// reserved
|
|
35
|
+
new Uint8Array([0, 0]),
|
|
36
|
+
// reserved
|
|
37
|
+
new Uint8Array([0, 0, 0, 0]),
|
|
38
|
+
// reserved
|
|
39
|
+
new Uint8Array([0, 0, 0, 0]),
|
|
40
|
+
(0, primitives_1.serializeMatrix)(matrix),
|
|
41
|
+
// predefined
|
|
42
|
+
(0, make_header_1.combineUint8Arrays)(new Array(6).fill(new Uint8Array([0, 0, 0, 0]))),
|
|
43
|
+
// next track id
|
|
44
|
+
(0, primitives_1.numberTo32BitUIntOrInt)(nextTrackId),
|
|
45
|
+
]);
|
|
46
|
+
return (0, primitives_1.addSize)(content);
|
|
47
|
+
};
|
|
48
|
+
exports.createMvhd = createMvhd;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTrak = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const truthy_1 = require("../../truthy");
|
|
6
|
+
const primitives_1 = require("./primitives");
|
|
7
|
+
const createTrak = ({ tkhd, mdia, }) => {
|
|
8
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
9
|
+
// name
|
|
10
|
+
(0, primitives_1.stringsToUint8Array)('trak'),
|
|
11
|
+
// tkhd
|
|
12
|
+
tkhd,
|
|
13
|
+
// mdia
|
|
14
|
+
mdia,
|
|
15
|
+
].filter(truthy_1.truthy)));
|
|
16
|
+
};
|
|
17
|
+
exports.createTrak = createTrak;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createUdta: (children: Uint8Array) => Uint8Array;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createUdta = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("./primitives");
|
|
6
|
+
const createUdta = (children) => {
|
|
7
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
+
// type
|
|
9
|
+
(0, primitives_1.stringsToUint8Array)('udta'),
|
|
10
|
+
// children
|
|
11
|
+
children,
|
|
12
|
+
]));
|
|
13
|
+
};
|
|
14
|
+
exports.createUdta = createUdta;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createUrlAtom: () => Uint8Array;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createUrlAtom = void 0;
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
|
+
const primitives_1 = require("./primitives");
|
|
6
|
+
const createUrlAtom = () => {
|
|
7
|
+
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
+
// type
|
|
9
|
+
(0, primitives_1.stringsToUint8Array)('url '),
|
|
10
|
+
// version
|
|
11
|
+
new Uint8Array([0]),
|
|
12
|
+
// flags
|
|
13
|
+
new Uint8Array([0, 0, 1]),
|
|
14
|
+
]));
|
|
15
|
+
};
|
|
16
|
+
exports.createUrlAtom = createUrlAtom;
|