@remotion/media-parser 4.0.229 → 4.0.230
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/boxes/iso-base-media/esds/decoder-specific-config.d.ts +3 -2
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +7 -8
- package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +4 -2
- package/dist/boxes/iso-base-media/esds/esds-descriptors.js +5 -4
- package/dist/boxes/iso-base-media/esds/esds.d.ts +3 -1
- package/dist/boxes/iso-base-media/esds/esds.js +2 -2
- package/dist/boxes/iso-base-media/make-track.js +2 -1
- package/dist/boxes/iso-base-media/mdat/mdat.js +13 -7
- package/dist/boxes/iso-base-media/moov/moov.d.ts +3 -1
- package/dist/boxes/iso-base-media/moov/moov.js +2 -2
- package/dist/boxes/iso-base-media/mvhd.js +11 -9
- 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 +5 -4
- package/dist/boxes/iso-base-media/process-box.js +17 -14
- package/dist/boxes/iso-base-media/stsd/colr.d.ts +14 -4
- package/dist/boxes/iso-base-media/stsd/colr.js +13 -1
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +1 -2
- package/dist/boxes/iso-base-media/stsd/mebx.js +2 -2
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +5 -2
- package/dist/boxes/iso-base-media/stsd/samples.js +7 -6
- package/dist/boxes/iso-base-media/stsd/stsd.js +1 -0
- package/dist/boxes/iso-base-media/to-date.d.ts +1 -0
- package/dist/boxes/iso-base-media/to-date.js +9 -1
- package/dist/boxes/iso-base-media/trak/trak.d.ts +3 -1
- package/dist/boxes/iso-base-media/trak/trak.js +2 -2
- package/dist/boxes/webm/av1-codec-private.js +1 -1
- package/dist/boxes/webm/ebml.d.ts +1 -1
- package/dist/boxes/webm/get-sample-from-block.d.ts +4 -4
- package/dist/boxes/webm/get-sample-from-block.js +4 -2
- package/dist/boxes/webm/make-track.js +1 -0
- package/dist/buffer-iterator.d.ts +1 -1
- package/dist/buffer-iterator.js +1 -8
- 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 +90 -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 +168 -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 +47 -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-track-info.d.ts +20 -0
- package/dist/create/make-track-info.js +2 -0
- package/dist/create/{cluster-segment.d.ts → matroska/cluster-segment.d.ts} +1 -1
- package/dist/create/{cluster-segment.js → matroska/cluster-segment.js} +2 -2
- package/dist/create/{cluster.d.ts → matroska/cluster.d.ts} +6 -5
- package/dist/create/{cluster.js → matroska/cluster.js} +16 -16
- package/dist/create/matroska/create-matroska-media.d.ts +2 -0
- package/dist/create/{create-media.js → matroska/create-matroska-media.js} +25 -18
- package/dist/create/matroska/make-duration-with-padding.d.ts +1 -0
- package/dist/create/{make-duration-with-padding.js → matroska/make-duration-with-padding.js} +1 -1
- package/dist/create/{matroska-cues.d.ts → matroska/matroska-cues.d.ts} +1 -1
- package/dist/create/{matroska-cues.js → matroska/matroska-cues.js} +1 -1
- package/dist/create/matroska/matroska-header.d.ts +1 -0
- package/dist/create/{matroska-header.js → matroska/matroska-header.js} +1 -1
- package/dist/create/{matroska-info.d.ts → matroska/matroska-info.d.ts} +1 -1
- package/dist/create/{matroska-info.js → matroska/matroska-info.js} +1 -1
- package/dist/create/matroska/matroska-seek.d.ts +6 -0
- package/dist/create/{matroska-seek.js → matroska/matroska-seek.js} +1 -1
- package/dist/create/{matroska-segment.d.ts → matroska/matroska-segment.d.ts} +1 -1
- package/dist/create/{matroska-segment.js → matroska/matroska-segment.js} +1 -1
- package/dist/create/matroska/matroska-trackentry.d.ts +10 -0
- package/dist/create/{matroska-trackentry.js → matroska/matroska-trackentry.js} +9 -3
- package/dist/create/{create-media.d.ts → media-fn.d.ts} +16 -4
- package/dist/create/media-fn.js +2 -0
- package/dist/create/timescale.d.ts +1 -1
- package/dist/create/timescale.js +2 -2
- package/dist/esm/buffer.mjs +1 -1
- package/dist/esm/index.mjs +1452 -209
- package/dist/get-audio-codec.d.ts +1 -0
- package/dist/get-audio-codec.js +27 -3
- package/dist/get-fps.d.ts +1 -0
- package/dist/get-fps.js +17 -13
- package/dist/get-sample-positions.d.ts +1 -0
- package/dist/get-sample-positions.js +1 -0
- package/dist/get-tracks.d.ts +1 -0
- package/dist/get-video-codec.js +4 -0
- package/dist/index.d.ts +4 -7
- package/dist/index.js +4 -2
- package/dist/options.d.ts +2 -0
- package/dist/parse-media.js +2 -1
- package/dist/parse-video.d.ts +3 -1
- package/dist/parse-video.js +3 -14
- package/dist/parser-state.d.ts +3 -3
- package/dist/samples-from-moof.js +1 -0
- package/dist/webcodec-sample-types.d.ts +7 -20
- package/dist/writers/buffer-implementation/writer.js +1 -1
- package/package.json +3 -3
- package/dist/create/make-duration-with-padding.d.ts +0 -1
- package/dist/create/matroska-header.d.ts +0 -1
- package/dist/create/matroska-seek.d.ts +0 -6
- package/dist/create/matroska-trackentry.d.ts +0 -27
- package/dist/create/polyfill-audio-sample.d.ts +0 -3
- package/dist/create/polyfill-audio-sample.js +0 -15
- package/dist/writers/buffer-implementation/multi-buffer.d.ts +0 -0
- package/dist/writers/buffer-implementation/multi-buffer.js +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
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;
|
|
@@ -0,0 +1,28 @@
|
|
|
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;
|
|
@@ -0,0 +1,56 @@
|
|
|
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;
|
|
@@ -0,0 +1,23 @@
|
|
|
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;
|
|
@@ -0,0 +1,25 @@
|
|
|
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;
|
|
@@ -0,0 +1,48 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createStsdData: (codecSpecificData: Uint8Array) => Uint8Array;
|
|
@@ -0,0 +1,20 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createAvccBox: (privateData: Uint8Array | null) => Uint8Array;
|
|
@@ -0,0 +1,16 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createPasp: (x: number, y: number) => Uint8Array;
|
|
@@ -0,0 +1,13 @@
|
|
|
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;
|
|
@@ -0,0 +1,20 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createHdlr: (type: "video" | "audio" | "mdir") => Uint8Array;
|
|
@@ -0,0 +1,32 @@
|
|
|
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;
|
|
@@ -0,0 +1,20 @@
|
|
|
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,5 +1,5 @@
|
|
|
1
1
|
export declare const CLUSTER_MIN_VINT_WIDTH = 8;
|
|
2
|
-
export declare const createClusterSegment: (timestamp: number) => import("
|
|
2
|
+
export declare const createClusterSegment: (timestamp: number) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
|
|
3
3
|
export declare const makeSimpleBlock: ({ bytes, trackNumber, timecodeRelativeToCluster, keyframe, invisible, lacing, }: {
|
|
4
4
|
bytes: Uint8Array;
|
|
5
5
|
trackNumber: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeSimpleBlock = exports.createClusterSegment = exports.CLUSTER_MIN_VINT_WIDTH = void 0;
|
|
4
|
-
const ebml_1 = require("
|
|
5
|
-
const make_header_1 = require("
|
|
4
|
+
const ebml_1 = require("../../boxes/webm/ebml");
|
|
5
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
6
6
|
exports.CLUSTER_MIN_VINT_WIDTH = 8;
|
|
7
7
|
const createClusterSegment = (timestamp) => {
|
|
8
8
|
return (0, make_header_1.makeMatroskaBytes)({
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import type { AudioOrVideoSample } from '
|
|
2
|
-
import type { Writer } from '
|
|
3
|
-
export declare const timestampToClusterTimestamp: (timestamp: number) => number;
|
|
4
|
-
export declare const canFitInCluster: ({ clusterStartTimestamp, chunk, }: {
|
|
1
|
+
import type { AudioOrVideoSample } from '../../webcodec-sample-types';
|
|
2
|
+
import type { Writer } from '../../writers/writer';
|
|
3
|
+
export declare const timestampToClusterTimestamp: (timestamp: number, timescale: number) => number;
|
|
4
|
+
export declare const canFitInCluster: ({ clusterStartTimestamp, chunk, timescale, }: {
|
|
5
5
|
clusterStartTimestamp: number;
|
|
6
6
|
chunk: AudioOrVideoSample;
|
|
7
|
+
timescale: number;
|
|
7
8
|
}) => boolean;
|
|
8
|
-
export declare const makeCluster: (w: Writer, clusterStartTimestamp: number) => Promise<{
|
|
9
|
+
export declare const makeCluster: (w: Writer, clusterStartTimestamp: number, timescale: number) => Promise<{
|
|
9
10
|
addSample: (chunk: AudioOrVideoSample, trackNumber: number) => Promise<{
|
|
10
11
|
timecodeRelativeToCluster: number;
|
|
11
12
|
}>;
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeCluster = exports.canFitInCluster = exports.timestampToClusterTimestamp = void 0;
|
|
4
|
-
const ebml_1 = require("
|
|
5
|
-
const make_header_1 = require("
|
|
6
|
-
const all_segments_1 = require("
|
|
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
7
|
const cluster_segment_1 = require("./cluster-segment");
|
|
8
|
-
const timescale_1 = require("./timescale");
|
|
9
8
|
const maxClusterTimestamp = 2 ** 15;
|
|
10
|
-
const timestampToClusterTimestamp = (timestamp) => {
|
|
11
|
-
return Math.round((timestamp /
|
|
9
|
+
const timestampToClusterTimestamp = (timestamp, timescale) => {
|
|
10
|
+
return Math.round((timestamp / timescale) * 1000);
|
|
12
11
|
};
|
|
13
12
|
exports.timestampToClusterTimestamp = timestampToClusterTimestamp;
|
|
14
|
-
const canFitInCluster = ({ clusterStartTimestamp, chunk, }) => {
|
|
15
|
-
const timecodeRelativeToCluster = (0, exports.timestampToClusterTimestamp)(chunk.timestamp) -
|
|
16
|
-
(0, exports.timestampToClusterTimestamp)(clusterStartTimestamp);
|
|
13
|
+
const canFitInCluster = ({ clusterStartTimestamp, chunk, timescale, }) => {
|
|
14
|
+
const timecodeRelativeToCluster = (0, exports.timestampToClusterTimestamp)(chunk.timestamp, timescale) -
|
|
15
|
+
(0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale);
|
|
17
16
|
if (timecodeRelativeToCluster < 0) {
|
|
18
17
|
throw new Error(`timecodeRelativeToCluster is negative`);
|
|
19
18
|
}
|
|
20
19
|
return timecodeRelativeToCluster <= maxClusterTimestamp;
|
|
21
20
|
};
|
|
22
21
|
exports.canFitInCluster = canFitInCluster;
|
|
23
|
-
const makeCluster = async (w, clusterStartTimestamp) => {
|
|
24
|
-
const cluster = (0, cluster_segment_1.createClusterSegment)((0, exports.timestampToClusterTimestamp)(clusterStartTimestamp));
|
|
22
|
+
const makeCluster = async (w, clusterStartTimestamp, timescale) => {
|
|
23
|
+
const cluster = (0, cluster_segment_1.createClusterSegment)((0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale));
|
|
25
24
|
const clusterVIntPosition = w.getWrittenByteCount() +
|
|
26
25
|
cluster.offsets.offset +
|
|
27
26
|
(0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Cluster).byteLength;
|
|
@@ -30,9 +29,9 @@ const makeCluster = async (w, clusterStartTimestamp) => {
|
|
|
30
29
|
cluster_segment_1.CLUSTER_MIN_VINT_WIDTH;
|
|
31
30
|
await w.write(cluster.bytes);
|
|
32
31
|
const addSample = async (chunk, trackNumber) => {
|
|
33
|
-
const timecodeRelativeToCluster = (0, exports.timestampToClusterTimestamp)(chunk.timestamp) -
|
|
34
|
-
(0, exports.timestampToClusterTimestamp)(clusterStartTimestamp);
|
|
35
|
-
if (!(0, exports.canFitInCluster)({ clusterStartTimestamp, chunk })) {
|
|
32
|
+
const timecodeRelativeToCluster = (0, exports.timestampToClusterTimestamp)(chunk.timestamp, timescale) -
|
|
33
|
+
(0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale);
|
|
34
|
+
if (!(0, exports.canFitInCluster)({ clusterStartTimestamp, chunk, timescale })) {
|
|
36
35
|
throw new Error(`timecodeRelativeToCluster is too big: ${timecodeRelativeToCluster} > ${maxClusterTimestamp}`);
|
|
37
36
|
}
|
|
38
37
|
const keyframe = chunk.type === 'key';
|
|
@@ -50,11 +49,12 @@ const makeCluster = async (w, clusterStartTimestamp) => {
|
|
|
50
49
|
return { timecodeRelativeToCluster };
|
|
51
50
|
};
|
|
52
51
|
const shouldMakeNewCluster = ({ isVideo, chunk, newT, }) => {
|
|
53
|
-
const newTimestamp = (0, exports.timestampToClusterTimestamp)(newT);
|
|
54
|
-
const oldTimestamp = (0, exports.timestampToClusterTimestamp)(clusterStartTimestamp);
|
|
52
|
+
const newTimestamp = (0, exports.timestampToClusterTimestamp)(newT, timescale);
|
|
53
|
+
const oldTimestamp = (0, exports.timestampToClusterTimestamp)(clusterStartTimestamp, timescale);
|
|
55
54
|
const canFit = (0, exports.canFitInCluster)({
|
|
56
55
|
chunk,
|
|
57
56
|
clusterStartTimestamp,
|
|
57
|
+
timescale,
|
|
58
58
|
});
|
|
59
59
|
if (!canFit) {
|
|
60
60
|
// We must create a new cluster
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const ebml_1 = require("
|
|
5
|
-
const make_header_1 = require("
|
|
6
|
-
const all_segments_1 = require("
|
|
3
|
+
exports.createMatroskaMedia = 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
7
|
const cluster_1 = require("./cluster");
|
|
8
8
|
const make_duration_with_padding_1 = require("./make-duration-with-padding");
|
|
9
9
|
const matroska_cues_1 = require("./matroska-cues");
|
|
@@ -12,14 +12,14 @@ const matroska_info_1 = require("./matroska-info");
|
|
|
12
12
|
const matroska_seek_1 = require("./matroska-seek");
|
|
13
13
|
const matroska_segment_1 = require("./matroska-segment");
|
|
14
14
|
const matroska_trackentry_1 = require("./matroska-trackentry");
|
|
15
|
-
const
|
|
16
|
-
const
|
|
15
|
+
const timescale = 1000000;
|
|
16
|
+
const createMatroskaMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, }) => {
|
|
17
17
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
18
18
|
const header = (0, matroska_header_1.makeMatroskaHeader)();
|
|
19
19
|
const w = await writer.createContent();
|
|
20
20
|
await w.write(header.bytes);
|
|
21
21
|
const matroskaInfo = (0, matroska_info_1.makeMatroskaInfo)({
|
|
22
|
-
timescale
|
|
22
|
+
timescale,
|
|
23
23
|
});
|
|
24
24
|
const currentTracks = [];
|
|
25
25
|
const seeks = [];
|
|
@@ -69,7 +69,7 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
69
69
|
};
|
|
70
70
|
await w.write(matroskaSegment.bytes);
|
|
71
71
|
const clusterOffset = w.getWrittenByteCount();
|
|
72
|
-
let currentCluster = await (0, cluster_1.makeCluster)(w, 0);
|
|
72
|
+
let currentCluster = await (0, cluster_1.makeCluster)(w, 0, timescale);
|
|
73
73
|
seeks.push({
|
|
74
74
|
hexString: all_segments_1.matroskaElements.Cluster,
|
|
75
75
|
byte: clusterOffset - seekHeadOffset,
|
|
@@ -84,7 +84,7 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
84
84
|
})) {
|
|
85
85
|
return { cluster: currentCluster, isNew: false, smallestProgress };
|
|
86
86
|
}
|
|
87
|
-
currentCluster = await (0, cluster_1.makeCluster)(w, smallestProgress);
|
|
87
|
+
currentCluster = await (0, cluster_1.makeCluster)(w, smallestProgress, timescale);
|
|
88
88
|
return { cluster: currentCluster, isNew: true, smallestProgress };
|
|
89
89
|
};
|
|
90
90
|
const updateDuration = async (newDuration) => {
|
|
@@ -92,7 +92,7 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
92
92
|
await w.updateDataAt(durationOffset, blocks.bytes);
|
|
93
93
|
onBytesProgress(w.getWrittenByteCount());
|
|
94
94
|
};
|
|
95
|
-
const addSample = async (chunk, trackNumber, isVideo) => {
|
|
95
|
+
const addSample = async ({ chunk, trackNumber, isVideo, }) => {
|
|
96
96
|
var _a;
|
|
97
97
|
trackNumberProgresses[trackNumber] = chunk.timestamp;
|
|
98
98
|
const { cluster, isNew, smallestProgress } = await getClusterOrMakeNew({
|
|
@@ -105,7 +105,7 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
105
105
|
if (isNew) {
|
|
106
106
|
const newCluster = w.getWrittenByteCount();
|
|
107
107
|
cues.push({
|
|
108
|
-
time: (0, cluster_1.timestampToClusterTimestamp)(smallestProgress) +
|
|
108
|
+
time: (0, cluster_1.timestampToClusterTimestamp)(smallestProgress, timescale) +
|
|
109
109
|
timecodeRelativeToCluster,
|
|
110
110
|
clusterPosition: newCluster - seekHeadOffset,
|
|
111
111
|
trackNumber,
|
|
@@ -122,6 +122,16 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
122
122
|
const operationProm = { current: Promise.resolve() };
|
|
123
123
|
const waitForFinishPromises = [];
|
|
124
124
|
return {
|
|
125
|
+
updateTrackSampleRate: ({ sampleRate, trackNumber }) => {
|
|
126
|
+
currentTracks.forEach((track) => {
|
|
127
|
+
if (track.trackNumber === trackNumber) {
|
|
128
|
+
if (track.type !== 'audio') {
|
|
129
|
+
throw new Error('track is not audio');
|
|
130
|
+
}
|
|
131
|
+
track.sampleRate = sampleRate;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
},
|
|
125
135
|
save: async () => {
|
|
126
136
|
const file = await w.save();
|
|
127
137
|
return file;
|
|
@@ -129,8 +139,8 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
129
139
|
remove: async () => {
|
|
130
140
|
await w.remove();
|
|
131
141
|
},
|
|
132
|
-
addSample: (chunk, trackNumber, isVideo) => {
|
|
133
|
-
operationProm.current = operationProm.current.then(() => addSample(chunk, trackNumber, isVideo));
|
|
142
|
+
addSample: ({ chunk, trackNumber, isVideo }) => {
|
|
143
|
+
operationProm.current = operationProm.current.then(() => addSample({ chunk, trackNumber, isVideo }));
|
|
134
144
|
return operationProm.current;
|
|
135
145
|
},
|
|
136
146
|
updateDuration: (duration) => {
|
|
@@ -139,10 +149,7 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
139
149
|
},
|
|
140
150
|
addTrack: (track) => {
|
|
141
151
|
const trackNumber = currentTracks.length + 1;
|
|
142
|
-
|
|
143
|
-
? (0, matroska_trackentry_1.makeMatroskaVideoTrackEntryBytes)({ ...track, trackNumber })
|
|
144
|
-
: (0, matroska_trackentry_1.makeMatroskaAudioTrackEntryBytes)({ ...track, trackNumber });
|
|
145
|
-
operationProm.current = operationProm.current.then(() => addTrack(bytes));
|
|
152
|
+
operationProm.current = operationProm.current.then(() => addTrack({ ...track, trackNumber }));
|
|
146
153
|
trackNumbers.push(trackNumber);
|
|
147
154
|
return operationProm.current.then(() => ({ trackNumber }));
|
|
148
155
|
},
|
|
@@ -167,4 +174,4 @@ const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, })
|
|
|
167
174
|
},
|
|
168
175
|
};
|
|
169
176
|
};
|
|
170
|
-
exports.
|
|
177
|
+
exports.createMatroskaMedia = createMatroskaMedia;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const makeDurationWithPadding: (newDuration: number) => import("../../boxes/webm/segments/all-segments").BytesAndOffset;
|
package/dist/create/{make-duration-with-padding.js → matroska/make-duration-with-padding.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeDurationWithPadding = void 0;
|
|
4
|
-
const make_header_1 = require("
|
|
4
|
+
const make_header_1 = require("../../boxes/webm/make-header");
|
|
5
5
|
const makeDurationWithPadding = (newDuration) => {
|
|
6
6
|
return (0, make_header_1.makeMatroskaBytes)({
|
|
7
7
|
type: 'Duration',
|