@remotion/media-parser 4.0.256 → 4.0.258
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/abort.d.ts +1 -0
- package/dist/abort.js +7 -0
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/controller.d.ts +17 -0
- package/dist/controller.js +31 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/parse-and-download-media.d.ts +2 -0
- package/dist/parse-and-download-media.js +57 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/dist/add-new-matroska-tracks.d.ts +0 -8
- package/dist/add-new-matroska-tracks.js +0 -14
- package/dist/boxes/avc/parse-avc.d.ts +0 -18
- package/dist/boxes/avc/parse-avc.js +0 -96
- package/dist/boxes/iso-base-media/base-type.d.ts +0 -4
- package/dist/boxes/iso-base-media/base-type.js +0 -2
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +0 -14
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +0 -38
- package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +0 -29
- package/dist/boxes/iso-base-media/esds/esds-descriptors.js +0 -82
- package/dist/boxes/iso-base-media/esds/esds.d.ts +0 -15
- package/dist/boxes/iso-base-media/esds/esds.js +0 -27
- package/dist/boxes/iso-base-media/ftyp.d.ts +0 -13
- package/dist/boxes/iso-base-media/ftyp.js +0 -22
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +0 -13
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +0 -22
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +0 -4
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +0 -54
- package/dist/boxes/iso-base-media/make-track.d.ts +0 -3
- package/dist/boxes/iso-base-media/make-track.js +0 -107
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -25
- package/dist/boxes/iso-base-media/mdat/mdat.js +0 -122
- package/dist/boxes/iso-base-media/mdhd.d.ts +0 -16
- package/dist/boxes/iso-base-media/mdhd.js +0 -32
- package/dist/boxes/iso-base-media/meta/hdlr.d.ts +0 -12
- package/dist/boxes/iso-base-media/meta/hdlr.js +0 -33
- package/dist/boxes/iso-base-media/meta/ilst.d.ts +0 -28
- package/dist/boxes/iso-base-media/meta/ilst.js +0 -86
- 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/mvhd.d.ts +0 -30
- package/dist/boxes/iso-base-media/mvhd.js +0 -65
- package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +0 -36
- package/dist/boxes/iso-base-media/parse-icc-profile.js +0 -115
- package/dist/boxes/iso-base-media/process-box.d.ts +0 -34
- package/dist/boxes/iso-base-media/process-box.js +0 -710
- package/dist/boxes/iso-base-media/stsd/av1c.d.ts +0 -9
- package/dist/boxes/iso-base-media/stsd/av1c.js +0 -10
- package/dist/boxes/iso-base-media/stsd/avcc.d.ts +0 -10
- package/dist/boxes/iso-base-media/stsd/avcc.js +0 -21
- package/dist/boxes/iso-base-media/stsd/colr.d.ts +0 -21
- package/dist/boxes/iso-base-media/stsd/colr.js +0 -47
- package/dist/boxes/iso-base-media/stsd/ctts.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/ctts.js +0 -34
- package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +0 -11
- package/dist/boxes/iso-base-media/stsd/hvcc.js +0 -17
- package/dist/boxes/iso-base-media/stsd/keys.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/keys.js +0 -35
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/mebx.js +0 -32
- package/dist/boxes/iso-base-media/stsd/pasp.d.ts +0 -12
- package/dist/boxes/iso-base-media/stsd/pasp.js +0 -17
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +0 -68
- package/dist/boxes/iso-base-media/stsd/samples.js +0 -320
- package/dist/boxes/iso-base-media/stsd/stco.d.ts +0 -15
- package/dist/boxes/iso-base-media/stsd/stco.js +0 -30
- package/dist/boxes/iso-base-media/stsd/stsc.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/stsc.js +0 -34
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +0 -18
- package/dist/boxes/iso-base-media/stsd/stsd.js +0 -33
- package/dist/boxes/iso-base-media/stsd/stss.d.ts +0 -13
- package/dist/boxes/iso-base-media/stsd/stss.js +0 -28
- package/dist/boxes/iso-base-media/stsd/stsz.d.ts +0 -21
- package/dist/boxes/iso-base-media/stsd/stsz.js +0 -44
- package/dist/boxes/iso-base-media/stsd/stts.d.ts +0 -15
- package/dist/boxes/iso-base-media/stsd/stts.js +0 -35
- package/dist/boxes/iso-base-media/tfdt.d.ts +0 -12
- package/dist/boxes/iso-base-media/tfdt.js +0 -20
- package/dist/boxes/iso-base-media/tfhd.d.ts +0 -16
- package/dist/boxes/iso-base-media/tfhd.js +0 -41
- package/dist/boxes/iso-base-media/tkhd.d.ts +0 -25
- package/dist/boxes/iso-base-media/tkhd.js +0 -87
- package/dist/boxes/iso-base-media/to-date.d.ts +0 -2
- package/dist/boxes/iso-base-media/to-date.js +0 -19
- 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/iso-base-media/traversal.d.ts +0 -39
- package/dist/boxes/iso-base-media/traversal.js +0 -201
- package/dist/boxes/iso-base-media/trun.d.ts +0 -21
- package/dist/boxes/iso-base-media/trun.js +0 -44
- package/dist/boxes/iso-base-media/void-box.d.ts +0 -4
- package/dist/boxes/iso-base-media/void-box.js +0 -2
- package/dist/boxes/riff/expect-riff-box.d.ts +0 -17
- package/dist/boxes/riff/expect-riff-box.js +0 -49
- package/dist/boxes/riff/get-tracks-from-avi.d.ts +0 -22
- package/dist/boxes/riff/get-tracks-from-avi.js +0 -114
- package/dist/boxes/riff/is-movi.d.ts +0 -2
- package/dist/boxes/riff/is-movi.js +0 -12
- package/dist/boxes/riff/parse-avih.d.ts +0 -6
- package/dist/boxes/riff/parse-avih.js +0 -32
- package/dist/boxes/riff/parse-box.d.ts +0 -15
- package/dist/boxes/riff/parse-box.js +0 -146
- 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-isft.d.ts +0 -6
- package/dist/boxes/riff/parse-isft.js +0 -17
- package/dist/boxes/riff/parse-list-box.d.ts +0 -8
- package/dist/boxes/riff/parse-list-box.js +0 -30
- package/dist/boxes/riff/parse-movi.d.ts +0 -17
- package/dist/boxes/riff/parse-movi.js +0 -133
- package/dist/boxes/riff/parse-riff-box.d.ts +0 -10
- package/dist/boxes/riff/parse-riff-box.js +0 -37
- package/dist/boxes/riff/parse-strf.d.ts +0 -7
- package/dist/boxes/riff/parse-strf.js +0 -67
- package/dist/boxes/riff/parse-strh.d.ts +0 -6
- package/dist/boxes/riff/parse-strh.js +0 -46
- package/dist/boxes/riff/riff-box.d.ts +0 -85
- package/dist/boxes/riff/riff-box.js +0 -2
- package/dist/boxes/riff/timescale.d.ts +0 -1
- package/dist/boxes/riff/timescale.js +0 -4
- package/dist/boxes/riff/traversal.d.ts +0 -8
- package/dist/boxes/riff/traversal.js +0 -36
- package/dist/boxes/webm/allowed-partial-segments.d.ts +0 -1
- package/dist/boxes/webm/allowed-partial-segments.js +0 -4
- package/dist/boxes/webm/av1-codec-private.d.ts +0 -2
- package/dist/boxes/webm/av1-codec-private.js +0 -95
- package/dist/boxes/webm/color.d.ts +0 -4
- package/dist/boxes/webm/color.js +0 -127
- package/dist/boxes/webm/description.d.ts +0 -2
- package/dist/boxes/webm/description.js +0 -83
- package/dist/boxes/webm/ebml.d.ts +0 -2
- package/dist/boxes/webm/ebml.js +0 -94
- package/dist/boxes/webm/get-ready-tracks.d.ts +0 -3
- package/dist/boxes/webm/get-ready-tracks.js +0 -29
- package/dist/boxes/webm/get-sample-from-block.d.ts +0 -17
- package/dist/boxes/webm/get-sample-from-block.js +0 -81
- package/dist/boxes/webm/make-header.d.ts +0 -8
- package/dist/boxes/webm/make-header.js +0 -187
- package/dist/boxes/webm/make-track.d.ts +0 -9
- package/dist/boxes/webm/make-track.js +0 -261
- package/dist/boxes/webm/parse-ebml.d.ts +0 -12
- package/dist/boxes/webm/parse-ebml.js +0 -185
- package/dist/boxes/webm/parse-webm-header.d.ts +0 -9
- package/dist/boxes/webm/parse-webm-header.js +0 -36
- package/dist/boxes/webm/segments/all-segments.d.ts +0 -976
- package/dist/boxes/webm/segments/all-segments.js +0 -724
- package/dist/boxes/webm/segments/block-simple-block-flags.d.ts +0 -9
- package/dist/boxes/webm/segments/block-simple-block-flags.js +0 -38
- package/dist/boxes/webm/segments/parse-children.d.ts +0 -23
- package/dist/boxes/webm/segments/parse-children.js +0 -145
- package/dist/boxes/webm/segments/track-entry.d.ts +0 -9
- package/dist/boxes/webm/segments/track-entry.js +0 -24
- package/dist/boxes/webm/segments.d.ts +0 -15
- package/dist/boxes/webm/segments.js +0 -161
- package/dist/boxes/webm/traversal.d.ts +0 -33
- package/dist/boxes/webm/traversal.js +0 -265
- package/dist/create/cluster-segment.d.ts +0 -10
- package/dist/create/cluster-segment.js +0 -39
- package/dist/create/cluster.d.ts +0 -19
- package/dist/create/cluster.js +0 -55
- package/dist/create/create-media.d.ts +0 -15
- package/dist/create/create-media.js +0 -165
- package/dist/create/event-emitter.d.ts +0 -31
- package/dist/create/event-emitter.js +0 -25
- package/dist/create/iso-base-media/codec-specific/avc1.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/avc1.js +0 -48
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +0 -22
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +0 -36
- package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/mp4a.js +0 -74
- package/dist/create/iso-base-media/create-colr.d.ts +0 -6
- package/dist/create/iso-base-media/create-colr.js +0 -26
- package/dist/create/iso-base-media/create-ftyp.d.ts +0 -10
- package/dist/create/iso-base-media/create-ftyp.js +0 -22
- package/dist/create/iso-base-media/create-ilst.d.ts +0 -1
- package/dist/create/iso-base-media/create-ilst.js +0 -14
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +0 -2
- package/dist/create/iso-base-media/create-iso-base-media.js +0 -165
- package/dist/create/iso-base-media/create-mdia.d.ts +0 -5
- package/dist/create/iso-base-media/create-mdia.js +0 -18
- package/dist/create/iso-base-media/create-moov.d.ts +0 -5
- package/dist/create/iso-base-media/create-moov.js +0 -18
- package/dist/create/iso-base-media/create-mvhd.d.ts +0 -10
- package/dist/create/iso-base-media/create-mvhd.js +0 -48
- package/dist/create/iso-base-media/create-trak.d.ts +0 -4
- package/dist/create/iso-base-media/create-trak.js +0 -17
- package/dist/create/iso-base-media/create-udta.d.ts +0 -1
- package/dist/create/iso-base-media/create-udta.js +0 -14
- package/dist/create/iso-base-media/create-url.d.ts +0 -1
- package/dist/create/iso-base-media/create-url.js +0 -16
- package/dist/create/iso-base-media/example-stts.d.ts +0 -3
- package/dist/create/iso-base-media/example-stts.js +0 -2797
- package/dist/create/iso-base-media/ilst/create-cmt.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-cmt.js +0 -26
- package/dist/create/iso-base-media/ilst/create-too.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-too.js +0 -27
- package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +0 -6
- package/dist/create/iso-base-media/mdia/create-mdhd.js +0 -33
- package/dist/create/iso-base-media/mp4-header.d.ts +0 -6
- package/dist/create/iso-base-media/mp4-header.js +0 -48
- package/dist/create/iso-base-media/primitives.d.ts +0 -15
- package/dist/create/iso-base-media/primitives.js +0 -133
- package/dist/create/iso-base-media/serialize-track.d.ts +0 -9
- package/dist/create/iso-base-media/serialize-track.js +0 -63
- package/dist/create/iso-base-media/trak/create-tkhd.d.ts +0 -27
- package/dist/create/iso-base-media/trak/create-tkhd.js +0 -97
- package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +0 -4
- package/dist/create/iso-base-media/trak/mdia/create-minf.js +0 -19
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +0 -22
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +0 -6
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +0 -35
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +0 -45
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +0 -28
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +0 -56
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +0 -23
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +0 -25
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +0 -48
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +0 -16
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +0 -13
- package/dist/create/iso-base-media/udta/create-meta.d.ts +0 -4
- package/dist/create/iso-base-media/udta/create-meta.js +0 -20
- package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +0 -1
- package/dist/create/iso-base-media/udta/meta/create-hdlr.js +0 -32
- package/dist/create/make-duration-with-padding.d.ts +0 -1
- package/dist/create/make-duration-with-padding.js +0 -15
- package/dist/create/make-track-info.d.ts +0 -20
- package/dist/create/make-track-info.js +0 -2
- package/dist/create/matroska/cluster-segment.d.ts +0 -10
- package/dist/create/matroska/cluster-segment.js +0 -39
- package/dist/create/matroska/cluster.d.ts +0 -25
- package/dist/create/matroska/cluster.js +0 -77
- package/dist/create/matroska/create-matroska-media.d.ts +0 -2
- package/dist/create/matroska/create-matroska-media.js +0 -187
- package/dist/create/matroska/make-duration-with-padding.d.ts +0 -1
- package/dist/create/matroska/make-duration-with-padding.js +0 -15
- package/dist/create/matroska/matroska-cues.d.ts +0 -6
- package/dist/create/matroska/matroska-cues.js +0 -49
- package/dist/create/matroska/matroska-header.d.ts +0 -1
- package/dist/create/matroska/matroska-header.js +0 -66
- package/dist/create/matroska/matroska-info.d.ts +0 -3
- package/dist/create/matroska/matroska-info.js +0 -33
- package/dist/create/matroska/matroska-seek.d.ts +0 -6
- package/dist/create/matroska/matroska-seek.js +0 -32
- package/dist/create/matroska/matroska-segment.d.ts +0 -3
- package/dist/create/matroska/matroska-segment.js +0 -13
- package/dist/create/matroska/matroska-trackentry.d.ts +0 -10
- package/dist/create/matroska/matroska-trackentry.js +0 -249
- package/dist/create/matroska-cues.d.ts +0 -6
- package/dist/create/matroska-cues.js +0 -49
- package/dist/create/matroska-header.d.ts +0 -1
- package/dist/create/matroska-header.js +0 -66
- package/dist/create/matroska-info.d.ts +0 -3
- package/dist/create/matroska-info.js +0 -33
- package/dist/create/matroska-seek.d.ts +0 -6
- package/dist/create/matroska-seek.js +0 -32
- package/dist/create/matroska-segment.d.ts +0 -3
- package/dist/create/matroska-segment.js +0 -13
- package/dist/create/matroska-trackentry.d.ts +0 -27
- package/dist/create/matroska-trackentry.js +0 -243
- package/dist/create/media-fn.d.ts +0 -33
- package/dist/create/media-fn.js +0 -2
- package/dist/create/progress-tracker.d.ts +0 -7
- package/dist/create/progress-tracker.js +0 -43
- package/dist/create/timescale.d.ts +0 -1
- package/dist/create/timescale.js +0 -4
- package/dist/create/wav/create-wav.d.ts +0 -2
- package/dist/create/wav/create-wav.js +0 -110
- package/dist/create/with-resolvers.d.ts +0 -10
- package/dist/create/with-resolvers.js +0 -28
- package/dist/esm/buffer.mjs +0 -56
- package/dist/esm/web-fs.mjs +0 -73
- package/dist/parse-video.d.ts +0 -25
- package/dist/parse-video.js +0 -39
- package/dist/parser-context.d.ts +0 -10
- package/dist/parser-context.js +0 -2
- package/dist/parser-state.d.ts +0 -22
- package/dist/parser-state.js +0 -132
- package/dist/writers/buffer-implementation/writer.d.ts +0 -2
- package/dist/writers/buffer-implementation/writer.js +0 -54
- package/dist/writers/buffer.d.ts +0 -2
- package/dist/writers/buffer.js +0 -7
- package/dist/writers/web-fs.d.ts +0 -3
- package/dist/writers/web-fs.js +0 -74
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createCttsBox = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../primitives");
|
|
6
|
-
const makeEntry = (entry) => {
|
|
7
|
-
return (0, make_header_1.combineUint8Arrays)([
|
|
8
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entry.sampleCount),
|
|
9
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entry.sampleOffset),
|
|
10
|
-
]);
|
|
11
|
-
};
|
|
12
|
-
const createCttsBox = (samplePositions) => {
|
|
13
|
-
const offsets = samplePositions.map((s) => s.cts - s.dts);
|
|
14
|
-
const entries = [];
|
|
15
|
-
let lastOffset = null;
|
|
16
|
-
for (const offset of offsets) {
|
|
17
|
-
if (lastOffset === offset) {
|
|
18
|
-
entries[entries.length - 1].sampleCount++;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
entries.push({
|
|
22
|
-
sampleCount: 1,
|
|
23
|
-
sampleOffset: offset,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
lastOffset = offset;
|
|
27
|
-
}
|
|
28
|
-
const needsCtts = entries.length > 0 && entries.some((e) => e.sampleOffset !== 0);
|
|
29
|
-
if (!needsCtts) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
33
|
-
// type
|
|
34
|
-
(0, primitives_1.stringsToUint8Array)('ctts'),
|
|
35
|
-
// version
|
|
36
|
-
new Uint8Array([0]),
|
|
37
|
-
// flags
|
|
38
|
-
new Uint8Array([0, 0, 0]),
|
|
39
|
-
// entry count
|
|
40
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entries.length),
|
|
41
|
-
// entries
|
|
42
|
-
...entries.map((e) => makeEntry(e)),
|
|
43
|
-
]));
|
|
44
|
-
};
|
|
45
|
-
exports.createCttsBox = createCttsBox;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createStcoAtom = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../primitives");
|
|
6
|
-
const createStcoAtom = (samplePositions) => {
|
|
7
|
-
const chunkOffsets = [];
|
|
8
|
-
let lastChunk;
|
|
9
|
-
for (const sample of samplePositions) {
|
|
10
|
-
if (lastChunk !== sample.chunk) {
|
|
11
|
-
chunkOffsets.push(sample.offset);
|
|
12
|
-
}
|
|
13
|
-
lastChunk = sample.chunk;
|
|
14
|
-
}
|
|
15
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
16
|
-
// type
|
|
17
|
-
(0, primitives_1.stringsToUint8Array)('stco'),
|
|
18
|
-
// version
|
|
19
|
-
new Uint8Array([0]),
|
|
20
|
-
// flags
|
|
21
|
-
new Uint8Array([0, 0, 0]),
|
|
22
|
-
// number of entries
|
|
23
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(chunkOffsets.length),
|
|
24
|
-
// chunk offsets
|
|
25
|
-
...chunkOffsets.map((offset) => (0, primitives_1.numberTo32BitUIntOrInt)(offset)),
|
|
26
|
-
]));
|
|
27
|
-
};
|
|
28
|
-
exports.createStcoAtom = createStcoAtom;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createStsc = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../primitives");
|
|
6
|
-
const createEntry = (entry) => {
|
|
7
|
-
return (0, make_header_1.combineUint8Arrays)([
|
|
8
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entry.firstChunk),
|
|
9
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entry.samplesPerChunk),
|
|
10
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entry.sampleDescriptionIndex),
|
|
11
|
-
]);
|
|
12
|
-
};
|
|
13
|
-
const createStsc = (samplePositions) => {
|
|
14
|
-
const entries = [];
|
|
15
|
-
const deduplicateLastEntry = () => {
|
|
16
|
-
const lastEntry = entries[entries.length - 1];
|
|
17
|
-
const secondToLastEntry = entries[entries.length - 2];
|
|
18
|
-
if (lastEntry &&
|
|
19
|
-
secondToLastEntry &&
|
|
20
|
-
lastEntry.samplesPerChunk === secondToLastEntry.samplesPerChunk &&
|
|
21
|
-
lastEntry.sampleDescriptionIndex ===
|
|
22
|
-
secondToLastEntry.sampleDescriptionIndex) {
|
|
23
|
-
const lastIndex = entries.length - 1;
|
|
24
|
-
entries.length = lastIndex;
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
let lastChunk;
|
|
28
|
-
for (const samplePosition of samplePositions) {
|
|
29
|
-
if (samplePosition.chunk === lastChunk) {
|
|
30
|
-
entries[entries.length - 1].samplesPerChunk++;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
deduplicateLastEntry();
|
|
34
|
-
entries.push({
|
|
35
|
-
firstChunk: samplePosition.chunk,
|
|
36
|
-
samplesPerChunk: 1,
|
|
37
|
-
sampleDescriptionIndex: 1,
|
|
38
|
-
});
|
|
39
|
-
lastChunk = samplePosition.chunk;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
deduplicateLastEntry();
|
|
43
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
44
|
-
// type
|
|
45
|
-
(0, primitives_1.stringsToUint8Array)('stsc'),
|
|
46
|
-
// version
|
|
47
|
-
new Uint8Array([0]),
|
|
48
|
-
// flags
|
|
49
|
-
new Uint8Array([0, 0, 0]),
|
|
50
|
-
// entry count
|
|
51
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entries.length),
|
|
52
|
-
// entries
|
|
53
|
-
...entries.map((e) => createEntry(e)),
|
|
54
|
-
]));
|
|
55
|
-
};
|
|
56
|
-
exports.createStsc = createStsc;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createStss = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../primitives");
|
|
6
|
-
const createStss = (samplePositions) => {
|
|
7
|
-
const samples = samplePositions
|
|
8
|
-
.map((sample, i) => [sample.isKeyframe, i])
|
|
9
|
-
.filter((s) => s[0])
|
|
10
|
-
.map((s) => s[1] + 1);
|
|
11
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
12
|
-
// type
|
|
13
|
-
(0, primitives_1.stringsToUint8Array)('stss'),
|
|
14
|
-
// version
|
|
15
|
-
new Uint8Array([0]),
|
|
16
|
-
// flags
|
|
17
|
-
new Uint8Array([0, 0, 0]),
|
|
18
|
-
// entry count
|
|
19
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(samples.length),
|
|
20
|
-
...samples.map((sample) => (0, primitives_1.numberTo32BitUIntOrInt)(sample)),
|
|
21
|
-
]));
|
|
22
|
-
};
|
|
23
|
-
exports.createStss = createStss;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createStsz = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../primitives");
|
|
6
|
-
const createStsz = (samplePositions) => {
|
|
7
|
-
const sampleSizes = samplePositions.map((samplePosition) => samplePosition.size);
|
|
8
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
9
|
-
// type
|
|
10
|
-
(0, primitives_1.stringsToUint8Array)('stsz'),
|
|
11
|
-
// version
|
|
12
|
-
new Uint8Array([0]),
|
|
13
|
-
// flags
|
|
14
|
-
new Uint8Array([0, 0, 0]),
|
|
15
|
-
// sample size
|
|
16
|
-
// Possible optimization for the future: If all sizes are the same, we don't have to list them all out
|
|
17
|
-
// https://developer.apple.com/documentation/quicktime-file-format/sample_size_atom
|
|
18
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(0),
|
|
19
|
-
// number of entries
|
|
20
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(sampleSizes.length),
|
|
21
|
-
// sample sizes
|
|
22
|
-
...sampleSizes.map((size) => (0, primitives_1.numberTo32BitUIntOrInt)(size)),
|
|
23
|
-
]));
|
|
24
|
-
};
|
|
25
|
-
exports.createStsz = createStsz;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSttsAtom = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../primitives");
|
|
6
|
-
const makeEntry = (entry) => {
|
|
7
|
-
return (0, make_header_1.combineUint8Arrays)([
|
|
8
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entry.sampleCount),
|
|
9
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entry.sampleOffset),
|
|
10
|
-
]);
|
|
11
|
-
};
|
|
12
|
-
const createSttsAtom = (samplePositions) => {
|
|
13
|
-
let lastDuration = null;
|
|
14
|
-
const durations = samplePositions.map((_, i, a) => {
|
|
15
|
-
var _a, _b;
|
|
16
|
-
// TODO: Why does 0 appear here?
|
|
17
|
-
if (a[i].duration === undefined || a[i].duration === 0) {
|
|
18
|
-
return ((_b = (_a = a[i + 1]) === null || _a === void 0 ? void 0 : _a.dts) !== null && _b !== void 0 ? _b : a[i].dts) - a[i].dts;
|
|
19
|
-
}
|
|
20
|
-
return a[i].duration;
|
|
21
|
-
});
|
|
22
|
-
const entries = [];
|
|
23
|
-
for (const duration of durations) {
|
|
24
|
-
if (duration === lastDuration) {
|
|
25
|
-
entries[entries.length - 1].sampleCount++;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
entries.push({
|
|
29
|
-
sampleCount: 1,
|
|
30
|
-
sampleOffset: duration,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
lastDuration = duration;
|
|
34
|
-
}
|
|
35
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
36
|
-
// type
|
|
37
|
-
(0, primitives_1.stringsToUint8Array)('stts'),
|
|
38
|
-
// version
|
|
39
|
-
new Uint8Array([0]),
|
|
40
|
-
// flags
|
|
41
|
-
new Uint8Array([0, 0, 0]),
|
|
42
|
-
// entry count
|
|
43
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(entries.length),
|
|
44
|
-
// entries
|
|
45
|
-
...entries.map((e) => makeEntry(e)),
|
|
46
|
-
]));
|
|
47
|
-
};
|
|
48
|
-
exports.createSttsAtom = createSttsAtom;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const createStsdData: (codecSpecificData: Uint8Array) => Uint8Array;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createStsdData = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../../primitives");
|
|
6
|
-
const createStsdData = (codecSpecificData) => {
|
|
7
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
-
// type
|
|
9
|
-
(0, primitives_1.stringsToUint8Array)('stsd'),
|
|
10
|
-
// version
|
|
11
|
-
new Uint8Array([0]),
|
|
12
|
-
// flags
|
|
13
|
-
new Uint8Array([0, 0, 0]),
|
|
14
|
-
// entry count
|
|
15
|
-
new Uint8Array([0, 0, 0, 1]),
|
|
16
|
-
// entry
|
|
17
|
-
codecSpecificData,
|
|
18
|
-
]));
|
|
19
|
-
};
|
|
20
|
-
exports.createStsdData = createStsdData;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const createAvccBox: (privateData: Uint8Array | null) => Uint8Array;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createAvccBox = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../../primitives");
|
|
6
|
-
const createAvccBox = (privateData) => {
|
|
7
|
-
if (!privateData) {
|
|
8
|
-
throw new Error('privateData is required');
|
|
9
|
-
}
|
|
10
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
11
|
-
// type
|
|
12
|
-
(0, primitives_1.stringsToUint8Array)('avcC'),
|
|
13
|
-
privateData,
|
|
14
|
-
]));
|
|
15
|
-
};
|
|
16
|
-
exports.createAvccBox = createAvccBox;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const createPasp: (x: number, y: number) => Uint8Array;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPasp = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../../../../primitives");
|
|
6
|
-
const createPasp = (x, y) => {
|
|
7
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
-
(0, primitives_1.stringsToUint8Array)('pasp'),
|
|
9
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(x),
|
|
10
|
-
(0, primitives_1.numberTo32BitUIntOrInt)(y),
|
|
11
|
-
]));
|
|
12
|
-
};
|
|
13
|
-
exports.createPasp = createPasp;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMeta = void 0;
|
|
4
|
-
const make_header_1 = require("../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../primitives");
|
|
6
|
-
const createMeta = ({ hdlr, ilst, }) => {
|
|
7
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
-
// type
|
|
9
|
-
(0, primitives_1.stringsToUint8Array)('meta'),
|
|
10
|
-
// version
|
|
11
|
-
new Uint8Array([0]),
|
|
12
|
-
// flags
|
|
13
|
-
new Uint8Array([0, 0, 0]),
|
|
14
|
-
// hdlr
|
|
15
|
-
hdlr,
|
|
16
|
-
// ilst
|
|
17
|
-
ilst,
|
|
18
|
-
]));
|
|
19
|
-
};
|
|
20
|
-
exports.createMeta = createMeta;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const createHdlr: (type: "video" | "audio" | "mdir") => Uint8Array;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createHdlr = void 0;
|
|
4
|
-
const make_header_1 = require("../../../../boxes/webm/make-header");
|
|
5
|
-
const primitives_1 = require("../../primitives");
|
|
6
|
-
const createHdlr = (type) => {
|
|
7
|
-
return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
|
|
8
|
-
// type
|
|
9
|
-
(0, primitives_1.stringsToUint8Array)('hdlr'),
|
|
10
|
-
// version
|
|
11
|
-
new Uint8Array([0]),
|
|
12
|
-
// flags
|
|
13
|
-
new Uint8Array([0, 0, 0]),
|
|
14
|
-
// pre_defined
|
|
15
|
-
new Uint8Array([0, 0, 0, 0]),
|
|
16
|
-
// handler_type
|
|
17
|
-
(0, primitives_1.stringsToUint8Array)(type === 'mdir' ? 'mdir' : type === 'video' ? 'vide' : 'soun'),
|
|
18
|
-
// reserved
|
|
19
|
-
type === 'mdir'
|
|
20
|
-
? (0, primitives_1.numberTo32BitUIntOrInt)(1634758764)
|
|
21
|
-
: new Uint8Array([0, 0, 0, 0]),
|
|
22
|
-
new Uint8Array([0, 0, 0, 0]),
|
|
23
|
-
new Uint8Array([0, 0, 0, 0]),
|
|
24
|
-
// name
|
|
25
|
-
(0, primitives_1.stringsToUint8Array)(type === 'mdir'
|
|
26
|
-
? '\0'
|
|
27
|
-
: type === 'video'
|
|
28
|
-
? 'VideoHandler\0'
|
|
29
|
-
: 'SoundHandler\0'),
|
|
30
|
-
]));
|
|
31
|
-
};
|
|
32
|
-
exports.createHdlr = createHdlr;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const makeDurationWithPadding: (newDuration: number) => import("../boxes/webm/segments/all-segments").BytesAndOffset;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeDurationWithPadding = void 0;
|
|
4
|
-
const make_header_1 = require("../boxes/webm/make-header");
|
|
5
|
-
const makeDurationWithPadding = (newDuration) => {
|
|
6
|
-
return (0, make_header_1.makeMatroskaBytes)({
|
|
7
|
-
type: 'Duration',
|
|
8
|
-
value: {
|
|
9
|
-
value: newDuration,
|
|
10
|
-
size: '64',
|
|
11
|
-
},
|
|
12
|
-
minVintWidth: 8,
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
|
-
exports.makeDurationWithPadding = makeDurationWithPadding;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { MediaParserAudioCodec, MediaParserVideoCodec, VideoTrackColorParams } from '../get-tracks';
|
|
2
|
-
export type MakeTrackAudio = {
|
|
3
|
-
trackNumber: number;
|
|
4
|
-
codec: MediaParserAudioCodec;
|
|
5
|
-
numberOfChannels: number;
|
|
6
|
-
sampleRate: number;
|
|
7
|
-
type: 'audio';
|
|
8
|
-
codecPrivate: Uint8Array | null;
|
|
9
|
-
timescale: number;
|
|
10
|
-
};
|
|
11
|
-
export type MakeTrackVideo = {
|
|
12
|
-
color: VideoTrackColorParams;
|
|
13
|
-
width: number;
|
|
14
|
-
height: number;
|
|
15
|
-
trackNumber: number;
|
|
16
|
-
codec: MediaParserVideoCodec;
|
|
17
|
-
type: 'video';
|
|
18
|
-
codecPrivate: Uint8Array | null;
|
|
19
|
-
timescale: number;
|
|
20
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare const CLUSTER_MIN_VINT_WIDTH = 8;
|
|
2
|
-
export declare const createClusterSegment: (timestamp: number) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
|
|
3
|
-
export declare const makeSimpleBlock: ({ bytes, trackNumber, timecodeRelativeToCluster, keyframe, invisible, lacing, }: {
|
|
4
|
-
bytes: Uint8Array;
|
|
5
|
-
trackNumber: number;
|
|
6
|
-
timecodeRelativeToCluster: number;
|
|
7
|
-
keyframe: boolean;
|
|
8
|
-
invisible: boolean;
|
|
9
|
-
lacing: number;
|
|
10
|
-
}) => Uint8Array;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeSimpleBlock = exports.createClusterSegment = exports.CLUSTER_MIN_VINT_WIDTH = void 0;
|
|
4
|
-
const ebml_1 = require("../../boxes/webm/ebml");
|
|
5
|
-
const make_header_1 = require("../../boxes/webm/make-header");
|
|
6
|
-
exports.CLUSTER_MIN_VINT_WIDTH = 8;
|
|
7
|
-
const createClusterSegment = (timestamp) => {
|
|
8
|
-
return (0, make_header_1.makeMatroskaBytes)({
|
|
9
|
-
type: 'Cluster',
|
|
10
|
-
value: [
|
|
11
|
-
{
|
|
12
|
-
type: 'Timestamp',
|
|
13
|
-
minVintWidth: null,
|
|
14
|
-
value: {
|
|
15
|
-
value: timestamp,
|
|
16
|
-
byteLength: null,
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
],
|
|
20
|
-
minVintWidth: exports.CLUSTER_MIN_VINT_WIDTH,
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
exports.createClusterSegment = createClusterSegment;
|
|
24
|
-
const makeSimpleBlock = ({ bytes, trackNumber, timecodeRelativeToCluster, keyframe, invisible, lacing, }) => {
|
|
25
|
-
const simpleBlockHeader = (0, make_header_1.matroskaToHex)('0xa3');
|
|
26
|
-
const headerByte = (Number(keyframe) << 7) | (Number(invisible) << 3) | (lacing << 1);
|
|
27
|
-
const body = (0, make_header_1.combineUint8Arrays)([
|
|
28
|
-
(0, ebml_1.getVariableInt)(trackNumber, null),
|
|
29
|
-
(0, make_header_1.serializeUint16)(timecodeRelativeToCluster),
|
|
30
|
-
new Uint8Array([headerByte]),
|
|
31
|
-
bytes,
|
|
32
|
-
]);
|
|
33
|
-
return (0, make_header_1.combineUint8Arrays)([
|
|
34
|
-
simpleBlockHeader,
|
|
35
|
-
(0, ebml_1.getVariableInt)(body.length, null),
|
|
36
|
-
body,
|
|
37
|
-
]);
|
|
38
|
-
};
|
|
39
|
-
exports.makeSimpleBlock = makeSimpleBlock;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { LogLevel } from '../../log';
|
|
2
|
-
import type { AudioOrVideoSample } from '../../webcodec-sample-types';
|
|
3
|
-
import type { Writer } from '../../writers/writer';
|
|
4
|
-
export declare const timestampToClusterTimestamp: (timestamp: number, timescale: number) => number;
|
|
5
|
-
export declare const canFitInCluster: ({ clusterStartTimestamp, chunk, timescale, }: {
|
|
6
|
-
clusterStartTimestamp: number;
|
|
7
|
-
chunk: AudioOrVideoSample;
|
|
8
|
-
timescale: number;
|
|
9
|
-
}) => boolean;
|
|
10
|
-
export declare const makeCluster: ({ writer, clusterStartTimestamp, timescale, logLevel, }: {
|
|
11
|
-
writer: Writer;
|
|
12
|
-
clusterStartTimestamp: number;
|
|
13
|
-
timescale: number;
|
|
14
|
-
logLevel: LogLevel;
|
|
15
|
-
}) => Promise<{
|
|
16
|
-
addSample: (chunk: AudioOrVideoSample, trackNumber: number) => Promise<{
|
|
17
|
-
timecodeRelativeToCluster: number;
|
|
18
|
-
}>;
|
|
19
|
-
shouldMakeNewCluster: ({ isVideo, chunk, newT, }: {
|
|
20
|
-
newT: number;
|
|
21
|
-
chunk: AudioOrVideoSample;
|
|
22
|
-
isVideo: boolean;
|
|
23
|
-
}) => boolean;
|
|
24
|
-
startTimestamp: number;
|
|
25
|
-
}>;
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeCluster = exports.canFitInCluster = exports.timestampToClusterTimestamp = void 0;
|
|
4
|
-
const ebml_1 = require("../../boxes/webm/ebml");
|
|
5
|
-
const make_header_1 = require("../../boxes/webm/make-header");
|
|
6
|
-
const all_segments_1 = require("../../boxes/webm/segments/all-segments");
|
|
7
|
-
const log_1 = require("../../log");
|
|
8
|
-
const cluster_segment_1 = require("./cluster-segment");
|
|
9
|
-
const maxClusterTimestamp = 2 ** 15;
|
|
10
|
-
const timestampToClusterTimestamp = (timestamp, timescale) => {
|
|
11
|
-
return Math.round((timestamp / timescale) * 1000);
|
|
12
|
-
};
|
|
13
|
-
exports.timestampToClusterTimestamp = timestampToClusterTimestamp;
|
|
14
|
-
const canFitInCluster = ({ clusterStartTimestamp, chunk, timescale, }) => {
|
|
15
|
-
const timecodeRelativeToCluster = (0, exports.timestampToClusterTimestamp)(chunk.timestamp, timescale) -
|
|
16
|
-
(0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale);
|
|
17
|
-
if (timecodeRelativeToCluster < 0) {
|
|
18
|
-
throw new Error(`timecodeRelativeToCluster is negative, tried to add ${chunk.timestamp} to ${clusterStartTimestamp}`);
|
|
19
|
-
}
|
|
20
|
-
return timecodeRelativeToCluster <= maxClusterTimestamp;
|
|
21
|
-
};
|
|
22
|
-
exports.canFitInCluster = canFitInCluster;
|
|
23
|
-
const makeCluster = async ({ writer, clusterStartTimestamp, timescale, logLevel, }) => {
|
|
24
|
-
log_1.Log.verbose(logLevel, `Making new Matroska cluster with timestamp ${clusterStartTimestamp}`);
|
|
25
|
-
const cluster = (0, cluster_segment_1.createClusterSegment)((0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale));
|
|
26
|
-
const clusterVIntPosition = writer.getWrittenByteCount() +
|
|
27
|
-
cluster.offsets.offset +
|
|
28
|
-
(0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Cluster).byteLength;
|
|
29
|
-
let clusterSize = cluster.bytes.byteLength -
|
|
30
|
-
(0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Cluster).byteLength -
|
|
31
|
-
cluster_segment_1.CLUSTER_MIN_VINT_WIDTH;
|
|
32
|
-
await writer.write(cluster.bytes);
|
|
33
|
-
const addSample = async (chunk, trackNumber) => {
|
|
34
|
-
const timecodeRelativeToCluster = (0, exports.timestampToClusterTimestamp)(chunk.timestamp, timescale) -
|
|
35
|
-
(0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale);
|
|
36
|
-
if (!(0, exports.canFitInCluster)({ clusterStartTimestamp, chunk, timescale })) {
|
|
37
|
-
throw new Error(`timecodeRelativeToCluster is too big: ${timecodeRelativeToCluster} > ${maxClusterTimestamp}`);
|
|
38
|
-
}
|
|
39
|
-
const keyframe = chunk.type === 'key';
|
|
40
|
-
const simpleBlock = (0, cluster_segment_1.makeSimpleBlock)({
|
|
41
|
-
bytes: chunk.data,
|
|
42
|
-
invisible: false,
|
|
43
|
-
keyframe,
|
|
44
|
-
lacing: 0,
|
|
45
|
-
trackNumber,
|
|
46
|
-
timecodeRelativeToCluster,
|
|
47
|
-
});
|
|
48
|
-
clusterSize += simpleBlock.byteLength;
|
|
49
|
-
await writer.updateDataAt(clusterVIntPosition, (0, ebml_1.getVariableInt)(clusterSize, cluster_segment_1.CLUSTER_MIN_VINT_WIDTH));
|
|
50
|
-
await writer.write(simpleBlock);
|
|
51
|
-
return { timecodeRelativeToCluster };
|
|
52
|
-
};
|
|
53
|
-
const shouldMakeNewCluster = ({ isVideo, chunk, newT, }) => {
|
|
54
|
-
const newTimestamp = (0, exports.timestampToClusterTimestamp)(newT, timescale);
|
|
55
|
-
const oldTimestamp = (0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale);
|
|
56
|
-
const canFit = (0, exports.canFitInCluster)({
|
|
57
|
-
chunk,
|
|
58
|
-
clusterStartTimestamp,
|
|
59
|
-
timescale,
|
|
60
|
-
});
|
|
61
|
-
if (!canFit) {
|
|
62
|
-
// We must create a new cluster
|
|
63
|
-
// This is for example if we have an audio-only file
|
|
64
|
-
log_1.Log.verbose(logLevel, `Cannot fit ${chunk.timestamp} in cluster ${clusterStartTimestamp}. Creating new cluster`);
|
|
65
|
-
return true;
|
|
66
|
-
}
|
|
67
|
-
const keyframe = chunk.type === 'key';
|
|
68
|
-
// TODO: Timestamp falls apart when video only
|
|
69
|
-
return newTimestamp - oldTimestamp >= 2000 && keyframe && isVideo;
|
|
70
|
-
};
|
|
71
|
-
return {
|
|
72
|
-
addSample,
|
|
73
|
-
shouldMakeNewCluster,
|
|
74
|
-
startTimestamp: clusterStartTimestamp,
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
exports.makeCluster = makeCluster;
|