@remotion/media-parser 4.0.245 → 4.0.246
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/avc/create-sps-pps-data.js +10 -4
- package/dist/boxes/iso-base-media/to-date.d.ts +0 -1
- package/dist/boxes/iso-base-media/to-date.js +1 -9
- package/dist/boxes/transport-stream/parse-stream-packet.js +4 -4
- package/dist/boxes/webm/color.d.ts +0 -1
- package/dist/boxes/webm/color.js +1 -83
- package/dist/boxes/webm/parse-ebml.js +8 -10
- package/dist/boxes/webm/segments/all-segments.d.ts +8 -21
- package/dist/boxes/webm/segments/all-segments.js +7 -19
- package/dist/combine-uint8-arrays.d.ts +1 -0
- package/dist/combine-uint8-arrays.js +23 -0
- package/dist/esm/index.mjs +6683 -8998
- package/dist/file-types/detect-file-type.js +2 -2
- package/dist/index.d.ts +787 -27
- package/dist/index.js +19 -13
- package/dist/parse-media.js +0 -3
- package/dist/state/parser-state.d.ts +1 -3
- package/dist/state/parser-state.js +1 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -15
- package/buffer.js +0 -2
- package/dist/boxes/webm/ebml.d.ts +0 -2
- package/dist/boxes/webm/ebml.js +0 -94
- package/dist/boxes/webm/make-header.d.ts +0 -8
- package/dist/boxes/webm/make-header.js +0 -187
- 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 -184
- 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 -41
- 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 -51
- 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-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 -189
- 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/media-fn.d.ts +0 -32
- package/dist/create/media-fn.js +0 -2
- package/dist/create/progress-tracker.d.ts +0 -9
- package/dist/create/progress-tracker.js +0 -67
- 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 -74
- 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 -75
- package/dist/writers/writer.d.ts +0 -15
- package/dist/writers/writer.js +0 -2
- package/web-fs.js +0 -2
package/dist/index.js
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VERSION = exports.MediaParserInternals = exports.parseMedia = exports.IsAPdfError = exports.IsAnUnsupportedFileTypeError = exports.IsAnUnsupportedAudioTypeError = exports.IsAnImageError = exports.IsAGifError = void 0;
|
|
4
4
|
const aac_codecprivate_1 = require("./aac-codecprivate");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
5
|
+
const ftyp_1 = require("./boxes/iso-base-media/ftyp");
|
|
6
|
+
const mvhd_1 = require("./boxes/iso-base-media/mvhd");
|
|
7
|
+
const samples_1 = require("./boxes/iso-base-media/stsd/samples");
|
|
8
|
+
const stsd_1 = require("./boxes/iso-base-media/stsd/stsd");
|
|
9
|
+
const tkhd_1 = require("./boxes/iso-base-media/tkhd");
|
|
10
|
+
const parse_ebml_1 = require("./boxes/webm/parse-ebml");
|
|
11
|
+
const all_segments_1 = require("./boxes/webm/segments/all-segments");
|
|
12
|
+
const buffer_iterator_1 = require("./buffer-iterator");
|
|
11
13
|
const log_1 = require("./log");
|
|
14
|
+
const parser_state_1 = require("./state/parser-state");
|
|
12
15
|
var errors_1 = require("./errors");
|
|
13
16
|
Object.defineProperty(exports, "IsAGifError", { enumerable: true, get: function () { return errors_1.IsAGifError; } });
|
|
14
17
|
Object.defineProperty(exports, "IsAnImageError", { enumerable: true, get: function () { return errors_1.IsAnImageError; } });
|
|
@@ -18,15 +21,18 @@ Object.defineProperty(exports, "IsAPdfError", { enumerable: true, get: function
|
|
|
18
21
|
var parse_media_1 = require("./parse-media");
|
|
19
22
|
Object.defineProperty(exports, "parseMedia", { enumerable: true, get: function () { return parse_media_1.parseMedia; } });
|
|
20
23
|
exports.MediaParserInternals = {
|
|
21
|
-
createMatroskaMedia: create_matroska_media_1.createMatroskaMedia,
|
|
22
|
-
createIsoBaseMedia: create_iso_base_media_1.createIsoBaseMedia,
|
|
23
|
-
createWav: create_wav_1.createWav,
|
|
24
24
|
Log: log_1.Log,
|
|
25
|
-
IoEventEmitter: event_emitter_1.IoEventEmitter,
|
|
26
|
-
makeProgressTracker: progress_tracker_1.makeProgressTracker,
|
|
27
|
-
withResolvers: with_resolvers_1.withResolvers,
|
|
28
|
-
withResolversAndWaitForReturn: with_resolvers_1.withResolversAndWaitForReturn,
|
|
29
25
|
createAacCodecPrivate: aac_codecprivate_1.createAacCodecPrivate,
|
|
26
|
+
matroskaElements: all_segments_1.matroskaElements,
|
|
27
|
+
ebmlMap: all_segments_1.ebmlMap,
|
|
28
|
+
parseTkhd: tkhd_1.parseTkhd,
|
|
29
|
+
getArrayBufferIterator: buffer_iterator_1.getArrayBufferIterator,
|
|
30
|
+
parseStsd: stsd_1.parseStsd,
|
|
31
|
+
makeParserState: parser_state_1.makeParserState,
|
|
32
|
+
processSample: samples_1.processSample,
|
|
33
|
+
parseFtyp: ftyp_1.parseFtyp,
|
|
34
|
+
parseEbml: parse_ebml_1.parseEbml,
|
|
35
|
+
parseMvhd: mvhd_1.parseMvhd,
|
|
30
36
|
};
|
|
31
37
|
var version_1 = require("./version");
|
|
32
38
|
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
|
package/dist/parse-media.js
CHANGED
|
@@ -30,9 +30,6 @@ const parseMedia = async function ({ src, fields: _fieldsInReturnValue, reader:
|
|
|
30
30
|
fields,
|
|
31
31
|
onAudioTrack: onAudioTrack !== null && onAudioTrack !== void 0 ? onAudioTrack : null,
|
|
32
32
|
onVideoTrack: onVideoTrack !== null && onVideoTrack !== void 0 ? onVideoTrack : null,
|
|
33
|
-
nullifySamples: !(typeof process !== 'undefined' &&
|
|
34
|
-
typeof process.env !== 'undefined' &&
|
|
35
|
-
process.env.KEEP_SAMPLES === 'true'),
|
|
36
33
|
supportsContentRange,
|
|
37
34
|
});
|
|
38
35
|
let currentReader = reader;
|
|
@@ -10,13 +10,12 @@ export type SpsAndPps = {
|
|
|
10
10
|
sps: AvcProfileInfo;
|
|
11
11
|
pps: AvcPPs;
|
|
12
12
|
};
|
|
13
|
-
export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields,
|
|
13
|
+
export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields, onAudioTrack, onVideoTrack, supportsContentRange, }: {
|
|
14
14
|
hasAudioTrackHandlers: boolean;
|
|
15
15
|
hasVideoTrackHandlers: boolean;
|
|
16
16
|
signal: AbortSignal | undefined;
|
|
17
17
|
getIterator: () => BufferIterator | null;
|
|
18
18
|
fields: Options<ParseMediaFields>;
|
|
19
|
-
nullifySamples: boolean;
|
|
20
19
|
supportsContentRange: boolean;
|
|
21
20
|
onAudioTrack: OnAudioTrack | null;
|
|
22
21
|
onVideoTrack: OnVideoTrack | null;
|
|
@@ -59,7 +58,6 @@ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHan
|
|
|
59
58
|
getStructure: () => import("../parse-result").Structure;
|
|
60
59
|
setStructure: (value: import("../parse-result").Structure) => void;
|
|
61
60
|
};
|
|
62
|
-
nullifySamples: boolean;
|
|
63
61
|
onAudioTrack: OnAudioTrack | null;
|
|
64
62
|
onVideoTrack: OnVideoTrack | null;
|
|
65
63
|
supportsContentRange: boolean;
|
|
@@ -8,7 +8,7 @@ const sample_callbacks_1 = require("./sample-callbacks");
|
|
|
8
8
|
const slow_duration_fps_1 = require("./slow-duration-fps");
|
|
9
9
|
const structure_1 = require("./structure");
|
|
10
10
|
const webm_1 = require("./webm");
|
|
11
|
-
const makeParserState = ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields,
|
|
11
|
+
const makeParserState = ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields, onAudioTrack, onVideoTrack, supportsContentRange, }) => {
|
|
12
12
|
let skippedBytes = 0;
|
|
13
13
|
const increaseSkippedBytes = (bytes) => {
|
|
14
14
|
skippedBytes += bytes;
|
|
@@ -39,7 +39,6 @@ const makeParserState = ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal,
|
|
|
39
39
|
increaseSkippedBytes,
|
|
40
40
|
keyframes,
|
|
41
41
|
structure,
|
|
42
|
-
nullifySamples,
|
|
43
42
|
onAudioTrack,
|
|
44
43
|
onVideoTrack,
|
|
45
44
|
supportsContentRange,
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.246";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-parser"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/media-parser",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.246",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@types/wicg-file-system-access": "2023.10.5",
|
|
11
11
|
"eslint": "9.14.0",
|
|
12
|
-
"@remotion/example-videos": "4.0.
|
|
13
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
12
|
+
"@remotion/example-videos": "4.0.246",
|
|
13
|
+
"@remotion/eslint-config-internal": "4.0.246"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
@@ -43,18 +43,6 @@
|
|
|
43
43
|
"module": "./dist/esm/from-web-file.mjs",
|
|
44
44
|
"import": "./dist/esm/from-web-file.mjs"
|
|
45
45
|
},
|
|
46
|
-
"./web-fs": {
|
|
47
|
-
"types": "./dist/writers/web-fs.d.ts",
|
|
48
|
-
"require": "./dist/writers/web-fs.js",
|
|
49
|
-
"module": "./dist/esm/web-fs.mjs",
|
|
50
|
-
"import": "./dist/esm/web-fs.mjs"
|
|
51
|
-
},
|
|
52
|
-
"./buffer": {
|
|
53
|
-
"types": "./dist/writers/buffer.d.ts",
|
|
54
|
-
"require": "./dist/writers/buffer.js",
|
|
55
|
-
"module": "./dist/esm/buffer.mjs",
|
|
56
|
-
"import": "./dist/esm/buffer.mjs"
|
|
57
|
-
},
|
|
58
46
|
"./package.json": "./package.json"
|
|
59
47
|
},
|
|
60
48
|
"typesVersions": {
|
package/buffer.js
DELETED
package/dist/boxes/webm/ebml.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// https://github.com/Vanilagy/webm-muxer/blob/main/src/ebml.ts#L101
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.getVariableInt = exports.measureEBMLVarInt = void 0;
|
|
5
|
-
const measureEBMLVarInt = (value) => {
|
|
6
|
-
if (value < (1 << 7) - 1) {
|
|
7
|
-
/** Top bit is set, leaving 7 bits to hold the integer, but we can't store
|
|
8
|
-
* 127 because "all bits set to one" is a reserved value. Same thing for the
|
|
9
|
-
* other cases below:
|
|
10
|
-
*/
|
|
11
|
-
return 1;
|
|
12
|
-
}
|
|
13
|
-
if (value < (1 << 14) - 1) {
|
|
14
|
-
return 2;
|
|
15
|
-
}
|
|
16
|
-
if (value < (1 << 21) - 1) {
|
|
17
|
-
return 3;
|
|
18
|
-
}
|
|
19
|
-
if (value < (1 << 28) - 1) {
|
|
20
|
-
return 4;
|
|
21
|
-
}
|
|
22
|
-
if (value < 2 ** 35 - 1) {
|
|
23
|
-
return 5;
|
|
24
|
-
}
|
|
25
|
-
if (value < 2 ** 42 - 1) {
|
|
26
|
-
return 6;
|
|
27
|
-
}
|
|
28
|
-
throw new Error('EBML VINT size not supported ' + value);
|
|
29
|
-
};
|
|
30
|
-
exports.measureEBMLVarInt = measureEBMLVarInt;
|
|
31
|
-
const getVariableInt = (value, minWidth) => {
|
|
32
|
-
const width = Math.max((0, exports.measureEBMLVarInt)(value), minWidth !== null && minWidth !== void 0 ? minWidth : 0);
|
|
33
|
-
switch (width) {
|
|
34
|
-
case 1:
|
|
35
|
-
return new Uint8Array([(1 << 7) | value]);
|
|
36
|
-
case 2:
|
|
37
|
-
return new Uint8Array([(1 << 6) | (value >> 8), value]);
|
|
38
|
-
case 3:
|
|
39
|
-
return new Uint8Array([(1 << 5) | (value >> 16), value >> 8, value]);
|
|
40
|
-
case 4:
|
|
41
|
-
return new Uint8Array([
|
|
42
|
-
(1 << 4) | (value >> 24),
|
|
43
|
-
value >> 16,
|
|
44
|
-
value >> 8,
|
|
45
|
-
value,
|
|
46
|
-
]);
|
|
47
|
-
case 5:
|
|
48
|
-
/**
|
|
49
|
-
* JavaScript converts its doubles to 32-bit integers for bitwise
|
|
50
|
-
* operations, so we need to do a division by 2^32 instead of a
|
|
51
|
-
* right-shift of 32 to retain those top 3 bits
|
|
52
|
-
*/
|
|
53
|
-
return new Uint8Array([
|
|
54
|
-
(1 << 3) | ((value / 2 ** 32) & 0x7),
|
|
55
|
-
value >> 24,
|
|
56
|
-
value >> 16,
|
|
57
|
-
value >> 8,
|
|
58
|
-
value,
|
|
59
|
-
]);
|
|
60
|
-
case 6:
|
|
61
|
-
return new Uint8Array([
|
|
62
|
-
(1 << 2) | ((value / 2 ** 40) & 0x3),
|
|
63
|
-
(value / 2 ** 32) | 0,
|
|
64
|
-
value >> 24,
|
|
65
|
-
value >> 16,
|
|
66
|
-
value >> 8,
|
|
67
|
-
value,
|
|
68
|
-
]);
|
|
69
|
-
case 7:
|
|
70
|
-
return new Uint8Array([
|
|
71
|
-
(1 << 1) | ((value / 2 ** 48) & 0x1),
|
|
72
|
-
(value / 2 ** 40) | 0,
|
|
73
|
-
(value / 2 ** 32) | 0,
|
|
74
|
-
value >> 24,
|
|
75
|
-
value >> 16,
|
|
76
|
-
value >> 8,
|
|
77
|
-
value,
|
|
78
|
-
]);
|
|
79
|
-
case 8:
|
|
80
|
-
return new Uint8Array([
|
|
81
|
-
(1 << 0) | ((value / 2 ** 56) & 0x1),
|
|
82
|
-
(value / 2 ** 48) | 0,
|
|
83
|
-
(value / 2 ** 40) | 0,
|
|
84
|
-
(value / 2 ** 32) | 0,
|
|
85
|
-
value >> 24,
|
|
86
|
-
value >> 16,
|
|
87
|
-
value >> 8,
|
|
88
|
-
value,
|
|
89
|
-
]);
|
|
90
|
-
default:
|
|
91
|
-
throw new Error('Bad EBML VINT size ' + width);
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
exports.getVariableInt = getVariableInt;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { BytesAndOffset, PossibleEbmlOrUint8Array } from './segments/all-segments';
|
|
2
|
-
import { matroskaElements } from './segments/all-segments';
|
|
3
|
-
export declare const webmPattern: Uint8Array;
|
|
4
|
-
export declare const matroskaToHex: (matrId: (typeof matroskaElements)[keyof typeof matroskaElements]) => Uint8Array;
|
|
5
|
-
export declare const makeMatroskaBytes: (fields: PossibleEbmlOrUint8Array) => BytesAndOffset;
|
|
6
|
-
export declare const padMatroskaBytes: (fields: PossibleEbmlOrUint8Array, totalLength: number) => BytesAndOffset[];
|
|
7
|
-
export declare const combineUint8Arrays: (arrays: Uint8Array[]) => Uint8Array;
|
|
8
|
-
export declare function serializeUint16(value: number): Uint8Array;
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.combineUint8Arrays = exports.padMatroskaBytes = exports.makeMatroskaBytes = exports.matroskaToHex = exports.webmPattern = void 0;
|
|
4
|
-
exports.serializeUint16 = serializeUint16;
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
6
|
-
const ebml_1 = require("./ebml");
|
|
7
|
-
const all_segments_1 = require("./segments/all-segments");
|
|
8
|
-
exports.webmPattern = new Uint8Array([0x1a, 0x45, 0xdf, 0xa3]);
|
|
9
|
-
const matroskaToHex = (matrId) => {
|
|
10
|
-
const numbers = new Uint8Array((matrId.length - 2) / 2);
|
|
11
|
-
for (let i = 2; i < matrId.length; i += 2) {
|
|
12
|
-
const hex = matrId.substring(i, i + 2);
|
|
13
|
-
numbers[(i - 2) / 2] = parseInt(hex, 16);
|
|
14
|
-
}
|
|
15
|
-
return numbers;
|
|
16
|
-
};
|
|
17
|
-
exports.matroskaToHex = matroskaToHex;
|
|
18
|
-
function putUintDynamic(number, minimumLength) {
|
|
19
|
-
if (number < 0) {
|
|
20
|
-
throw new Error('This function is designed for non-negative integers only.');
|
|
21
|
-
}
|
|
22
|
-
// Calculate the minimum number of bytes needed to store the integer
|
|
23
|
-
const length = Math.max(minimumLength !== null && minimumLength !== void 0 ? minimumLength : 0, Math.ceil(Math.log2(number + 1) / 8));
|
|
24
|
-
const bytes = new Uint8Array(length);
|
|
25
|
-
for (let i = 0; i < length; i++) {
|
|
26
|
-
// Extract each byte from the number
|
|
27
|
-
bytes[length - 1 - i] = (number >> (8 * i)) & 0xff;
|
|
28
|
-
}
|
|
29
|
-
return bytes;
|
|
30
|
-
}
|
|
31
|
-
const makeFromStructure = (fields) => {
|
|
32
|
-
if ('bytes' in fields) {
|
|
33
|
-
return fields;
|
|
34
|
-
}
|
|
35
|
-
const arrays = [];
|
|
36
|
-
const struct = all_segments_1.ebmlMap[(0, all_segments_1.getIdForName)(fields.type)];
|
|
37
|
-
if (struct.type === 'uint8array') {
|
|
38
|
-
return {
|
|
39
|
-
bytes: fields.value,
|
|
40
|
-
offsets: { offset: 0, children: [], field: fields.type },
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
if (struct.type === 'children') {
|
|
44
|
-
const children = [];
|
|
45
|
-
let bytesWritten = 0;
|
|
46
|
-
for (const item of fields.value) {
|
|
47
|
-
const { bytes, offsets } = (0, exports.makeMatroskaBytes)(item);
|
|
48
|
-
arrays.push(bytes);
|
|
49
|
-
children.push((0, all_segments_1.incrementOffsetAndChildren)(offsets, bytesWritten));
|
|
50
|
-
bytesWritten += bytes.byteLength;
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
bytes: (0, exports.combineUint8Arrays)(arrays),
|
|
54
|
-
offsets: { offset: 0, children, field: fields.type },
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (struct.type === 'string') {
|
|
58
|
-
return {
|
|
59
|
-
bytes: new TextEncoder().encode(fields.value),
|
|
60
|
-
offsets: {
|
|
61
|
-
children: [],
|
|
62
|
-
offset: 0,
|
|
63
|
-
field: fields.type,
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
if (struct.type === 'uint') {
|
|
68
|
-
return {
|
|
69
|
-
bytes: putUintDynamic(fields.value.value, fields.value.byteLength),
|
|
70
|
-
offsets: {
|
|
71
|
-
children: [],
|
|
72
|
-
offset: 0,
|
|
73
|
-
field: fields.type,
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
if (struct.type === 'hex-string') {
|
|
78
|
-
const hex = fields.value.substring(2);
|
|
79
|
-
const arr = new Uint8Array(hex.length / 2);
|
|
80
|
-
for (let i = 0; i < hex.length; i += 2) {
|
|
81
|
-
const byte = parseInt(hex.substring(i, i + 2), 16);
|
|
82
|
-
arr[i / 2] = byte;
|
|
83
|
-
}
|
|
84
|
-
return {
|
|
85
|
-
bytes: arr,
|
|
86
|
-
offsets: {
|
|
87
|
-
children: [],
|
|
88
|
-
offset: 0,
|
|
89
|
-
field: fields.type,
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
if (struct.type === 'float') {
|
|
94
|
-
const value = fields.value;
|
|
95
|
-
if (value.size === '32') {
|
|
96
|
-
const dataView = new DataView(new ArrayBuffer(4));
|
|
97
|
-
dataView.setFloat32(0, value.value);
|
|
98
|
-
return {
|
|
99
|
-
bytes: new Uint8Array(dataView.buffer),
|
|
100
|
-
offsets: {
|
|
101
|
-
children: [],
|
|
102
|
-
offset: 0,
|
|
103
|
-
field: fields.type,
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
const dataView2 = new DataView(new ArrayBuffer(8));
|
|
108
|
-
dataView2.setFloat64(0, value.value);
|
|
109
|
-
return {
|
|
110
|
-
bytes: new Uint8Array(dataView2.buffer),
|
|
111
|
-
offsets: {
|
|
112
|
-
children: [],
|
|
113
|
-
offset: 0,
|
|
114
|
-
field: fields.type,
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
throw new Error('Unexpected type');
|
|
119
|
-
};
|
|
120
|
-
const makeMatroskaBytes = (fields) => {
|
|
121
|
-
if ('bytes' in fields) {
|
|
122
|
-
return fields;
|
|
123
|
-
}
|
|
124
|
-
const value = makeFromStructure(fields);
|
|
125
|
-
const header = (0, exports.matroskaToHex)((0, all_segments_1.getIdForName)(fields.type));
|
|
126
|
-
const size = (0, ebml_1.getVariableInt)(value.bytes.length, fields.minVintWidth);
|
|
127
|
-
const bytes = (0, exports.combineUint8Arrays)([header, size, value.bytes]);
|
|
128
|
-
return {
|
|
129
|
-
bytes,
|
|
130
|
-
offsets: {
|
|
131
|
-
offset: value.offsets.offset,
|
|
132
|
-
field: value.offsets.field,
|
|
133
|
-
children: value.offsets.children.map((c) => {
|
|
134
|
-
return (0, all_segments_1.incrementOffsetAndChildren)(c, header.byteLength + size.byteLength);
|
|
135
|
-
}),
|
|
136
|
-
},
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
exports.makeMatroskaBytes = makeMatroskaBytes;
|
|
140
|
-
const padMatroskaBytes = (fields, totalLength) => {
|
|
141
|
-
const regular = (0, exports.makeMatroskaBytes)(fields);
|
|
142
|
-
const paddingLength = totalLength -
|
|
143
|
-
regular.bytes.byteLength -
|
|
144
|
-
(0, exports.matroskaToHex)(all_segments_1.matroskaElements.Void).byteLength;
|
|
145
|
-
if (paddingLength < 0) {
|
|
146
|
-
throw new Error('ooops');
|
|
147
|
-
}
|
|
148
|
-
const padding = (0, exports.makeMatroskaBytes)({
|
|
149
|
-
type: 'Void',
|
|
150
|
-
value: new Uint8Array(paddingLength).fill(0),
|
|
151
|
-
minVintWidth: null,
|
|
152
|
-
});
|
|
153
|
-
return [
|
|
154
|
-
regular,
|
|
155
|
-
{
|
|
156
|
-
bytes: padding.bytes,
|
|
157
|
-
offsets: (0, all_segments_1.incrementOffsetAndChildren)(padding.offsets, regular.bytes.length),
|
|
158
|
-
},
|
|
159
|
-
];
|
|
160
|
-
};
|
|
161
|
-
exports.padMatroskaBytes = padMatroskaBytes;
|
|
162
|
-
const combineUint8Arrays = (arrays) => {
|
|
163
|
-
if (arrays.length === 0) {
|
|
164
|
-
return new Uint8Array([]);
|
|
165
|
-
}
|
|
166
|
-
if (arrays.length === 1) {
|
|
167
|
-
return arrays[0];
|
|
168
|
-
}
|
|
169
|
-
let totalLength = 0;
|
|
170
|
-
for (const array of arrays) {
|
|
171
|
-
totalLength += array.length;
|
|
172
|
-
}
|
|
173
|
-
const result = new Uint8Array(totalLength);
|
|
174
|
-
let offset = 0;
|
|
175
|
-
for (const array of arrays) {
|
|
176
|
-
result.set(array, offset);
|
|
177
|
-
offset += array.length;
|
|
178
|
-
}
|
|
179
|
-
return result;
|
|
180
|
-
};
|
|
181
|
-
exports.combineUint8Arrays = combineUint8Arrays;
|
|
182
|
-
function serializeUint16(value) {
|
|
183
|
-
const buffer = new ArrayBuffer(2);
|
|
184
|
-
const view = new DataView(buffer);
|
|
185
|
-
view.setUint16(0, value);
|
|
186
|
-
return new Uint8Array(buffer);
|
|
187
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
type Input = {
|
|
2
|
-
timestamp: number;
|
|
3
|
-
keyFrame: boolean;
|
|
4
|
-
};
|
|
5
|
-
type Output = {
|
|
6
|
-
timestamp: number;
|
|
7
|
-
};
|
|
8
|
-
type Processed = {};
|
|
9
|
-
type Progress = {
|
|
10
|
-
smallestProgress: number;
|
|
11
|
-
};
|
|
12
|
-
type IoEventMap = {
|
|
13
|
-
input: Input;
|
|
14
|
-
output: Output;
|
|
15
|
-
processed: Processed;
|
|
16
|
-
progress: Progress;
|
|
17
|
-
};
|
|
18
|
-
export type IoEventTypes = keyof IoEventMap;
|
|
19
|
-
export type CallbackListener<T extends IoEventTypes> = (data: {
|
|
20
|
-
detail: IoEventMap[T];
|
|
21
|
-
}) => void;
|
|
22
|
-
type IoListeners = {
|
|
23
|
-
[EventType in IoEventTypes]: CallbackListener<EventType>[];
|
|
24
|
-
};
|
|
25
|
-
export declare class IoEventEmitter {
|
|
26
|
-
listeners: IoListeners;
|
|
27
|
-
addEventListener<Q extends IoEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
28
|
-
removeEventListener<Q extends IoEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
29
|
-
dispatchEvent<T extends IoEventTypes>(dispatchName: T, context: IoEventMap[T]): void;
|
|
30
|
-
}
|
|
31
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IoEventEmitter = void 0;
|
|
4
|
-
class IoEventEmitter {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.listeners = {
|
|
7
|
-
input: [],
|
|
8
|
-
output: [],
|
|
9
|
-
processed: [],
|
|
10
|
-
progress: [],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
addEventListener(name, callback) {
|
|
14
|
-
this.listeners[name].push(callback);
|
|
15
|
-
}
|
|
16
|
-
removeEventListener(name, callback) {
|
|
17
|
-
this.listeners[name] = this.listeners[name].filter((l) => l !== callback);
|
|
18
|
-
}
|
|
19
|
-
dispatchEvent(dispatchName, context) {
|
|
20
|
-
this.listeners[dispatchName].forEach((callback) => {
|
|
21
|
-
callback({ detail: context });
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.IoEventEmitter = IoEventEmitter;
|
|
@@ -1,48 +0,0 @@
|
|
|
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;
|
|
@@ -1,22 +0,0 @@
|
|
|
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;
|
|
@@ -1,36 +0,0 @@
|
|
|
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;
|