@remotion/media-parser 4.0.191
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/.eslintrc +8 -0
- package/LICENSE.md +49 -0
- package/README.md +18 -0
- package/dist/boxes/iso-base-media/base-type.d.ts +4 -0
- package/dist/boxes/iso-base-media/base-type.js +2 -0
- package/dist/boxes/iso-base-media/ftyp.d.ts +13 -0
- package/dist/boxes/iso-base-media/ftyp.js +22 -0
- package/dist/boxes/iso-base-media/moov/moov.d.ts +12 -0
- package/dist/boxes/iso-base-media/moov/moov.js +22 -0
- package/dist/boxes/iso-base-media/mvhd.d.ts +30 -0
- package/dist/boxes/iso-base-media/mvhd.js +59 -0
- package/dist/boxes/iso-base-media/process-box.d.ts +8 -0
- package/dist/boxes/iso-base-media/process-box.js +174 -0
- package/dist/boxes/iso-base-media/stsd/keys.d.ts +5 -0
- package/dist/boxes/iso-base-media/stsd/keys.js +21 -0
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +14 -0
- package/dist/boxes/iso-base-media/stsd/mebx.js +27 -0
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +48 -0
- package/dist/boxes/iso-base-media/stsd/samples.js +215 -0
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +13 -0
- package/dist/boxes/iso-base-media/stsd/stsd.js +26 -0
- package/dist/boxes/iso-base-media/stts/stts.d.ts +15 -0
- package/dist/boxes/iso-base-media/stts/stts.js +35 -0
- package/dist/boxes/iso-base-media/tkhd.d.ts +22 -0
- package/dist/boxes/iso-base-media/tkhd.js +63 -0
- package/dist/boxes/iso-base-media/to-date.d.ts +1 -0
- package/dist/boxes/iso-base-media/to-date.js +11 -0
- package/dist/boxes/iso-base-media/trak/trak.d.ts +12 -0
- package/dist/boxes/iso-base-media/trak/trak.js +22 -0
- package/dist/boxes/webm/parse-webm-header.d.ts +3 -0
- package/dist/boxes/webm/parse-webm-header.js +16 -0
- package/dist/boxes/webm/segments/duration.d.ts +6 -0
- package/dist/boxes/webm/segments/duration.js +15 -0
- package/dist/boxes/webm/segments/info.d.ts +8 -0
- package/dist/boxes/webm/segments/info.js +14 -0
- package/dist/boxes/webm/segments/main.d.ts +7 -0
- package/dist/boxes/webm/segments/main.js +13 -0
- package/dist/boxes/webm/segments/muxing.d.ts +6 -0
- package/dist/boxes/webm/segments/muxing.js +12 -0
- package/dist/boxes/webm/segments/parse-children.d.ts +3 -0
- package/dist/boxes/webm/segments/parse-children.js +17 -0
- package/dist/boxes/webm/segments/seek-head.d.ts +8 -0
- package/dist/boxes/webm/segments/seek-head.js +13 -0
- package/dist/boxes/webm/segments/seek-position.d.ts +6 -0
- package/dist/boxes/webm/segments/seek-position.js +12 -0
- package/dist/boxes/webm/segments/seek.d.ts +8 -0
- package/dist/boxes/webm/segments/seek.js +16 -0
- package/dist/boxes/webm/segments/timestamp-scale.d.ts +6 -0
- package/dist/boxes/webm/segments/timestamp-scale.js +11 -0
- package/dist/boxes/webm/segments/track-entry.d.ts +71 -0
- package/dist/boxes/webm/segments/track-entry.js +175 -0
- package/dist/boxes/webm/segments/tracks.d.ts +7 -0
- package/dist/boxes/webm/segments/tracks.js +13 -0
- package/dist/boxes/webm/segments/unknown.d.ts +6 -0
- package/dist/boxes/webm/segments/unknown.js +11 -0
- package/dist/boxes/webm/segments/void.d.ts +6 -0
- package/dist/boxes/webm/segments/void.js +12 -0
- package/dist/boxes/webm/segments/writing.d.ts +6 -0
- package/dist/boxes/webm/segments/writing.js +12 -0
- package/dist/boxes/webm/segments.d.ts +16 -0
- package/dist/boxes/webm/segments.js +106 -0
- package/dist/buffer-iterator.d.ts +36 -0
- package/dist/buffer-iterator.js +263 -0
- package/dist/from-node.d.ts +2 -0
- package/dist/from-node.js +19 -0
- package/dist/from-web.d.ts +2 -0
- package/dist/from-web.js +40 -0
- package/dist/get-dimensions.d.ts +7 -0
- package/dist/get-dimensions.js +104 -0
- package/dist/get-duration.d.ts +3 -0
- package/dist/get-duration.js +61 -0
- package/dist/get-fps.d.ts +3 -0
- package/dist/get-fps.js +70 -0
- package/dist/has-all-info.d.ts +3 -0
- package/dist/has-all-info.js +27 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -0
- package/dist/options.d.ts +19 -0
- package/dist/options.js +2 -0
- package/dist/parse-media.d.ts +2 -0
- package/dist/parse-media.js +44 -0
- package/dist/parse-result.d.ts +29 -0
- package/dist/parse-result.js +2 -0
- package/dist/parse-video.d.ts +10 -0
- package/dist/parse-video.js +29 -0
- package/dist/reader.d.ts +7 -0
- package/dist/reader.js +2 -0
- package/package.json +47 -0
- package/src/boxes/iso-base-media/base-type.ts +4 -0
- package/src/boxes/iso-base-media/ftyp.ts +39 -0
- package/src/boxes/iso-base-media/moov/moov.ts +37 -0
- package/src/boxes/iso-base-media/mvhd.ts +107 -0
- package/src/boxes/iso-base-media/process-box.ts +236 -0
- package/src/boxes/iso-base-media/stsd/keys.ts +25 -0
- package/src/boxes/iso-base-media/stsd/mebx.ts +46 -0
- package/src/boxes/iso-base-media/stsd/samples.ts +298 -0
- package/src/boxes/iso-base-media/stsd/stsd.ts +48 -0
- package/src/boxes/iso-base-media/stts/stts.ts +62 -0
- package/src/boxes/iso-base-media/tkhd.ts +105 -0
- package/src/boxes/iso-base-media/to-date.ts +9 -0
- package/src/boxes/iso-base-media/trak/trak.ts +37 -0
- package/src/boxes/webm/parse-webm-header.ts +18 -0
- package/src/boxes/webm/segments/duration.ts +22 -0
- package/src/boxes/webm/segments/info.ts +20 -0
- package/src/boxes/webm/segments/main.ts +19 -0
- package/src/boxes/webm/segments/muxing.ts +18 -0
- package/src/boxes/webm/segments/parse-children.ts +21 -0
- package/src/boxes/webm/segments/seek-head.ts +21 -0
- package/src/boxes/webm/segments/seek-position.ts +19 -0
- package/src/boxes/webm/segments/seek.ts +23 -0
- package/src/boxes/webm/segments/timestamp-scale.ts +17 -0
- package/src/boxes/webm/segments/track-entry.ts +295 -0
- package/src/boxes/webm/segments/tracks.ts +22 -0
- package/src/boxes/webm/segments/unknown.ts +19 -0
- package/src/boxes/webm/segments/void.ts +16 -0
- package/src/boxes/webm/segments/writing.ts +18 -0
- package/src/boxes/webm/segments.ts +206 -0
- package/src/buffer-iterator.ts +305 -0
- package/src/from-node.ts +22 -0
- package/src/from-web.ts +53 -0
- package/src/get-dimensions.ts +147 -0
- package/src/get-duration.ts +73 -0
- package/src/get-fps.ts +92 -0
- package/src/has-all-info.ts +34 -0
- package/src/index.ts +1 -0
- package/src/options.ts +38 -0
- package/src/parse-media.ts +57 -0
- package/src/parse-result.ts +44 -0
- package/src/parse-video.ts +41 -0
- package/src/reader.ts +10 -0
- package/src/test/duration.test.ts +34 -0
- package/src/test/keys.test.ts +47 -0
- package/src/test/matroska.test.ts +163 -0
- package/src/test/mvhd.test.ts +89 -0
- package/src/test/parse-stts.test.ts +38 -0
- package/src/test/parse-video.test.ts +113 -0
- package/src/test/parse-webm.test.ts +15 -0
- package/src/test/stream-local.test.ts +105 -0
- package/src/test/stream-remote.test.ts +12 -0
- package/src/test/stsd.test.ts +162 -0
- package/src/test/tkhd.test.ts +84 -0
- package/tsconfig.json +10 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTimestampScaleSegment = void 0;
|
|
4
|
+
const parseTimestampScaleSegment = (iterator) => {
|
|
5
|
+
const timestampScale = iterator.getDecimalBytes(3);
|
|
6
|
+
return {
|
|
7
|
+
type: 'timestamp-scale-segment',
|
|
8
|
+
timestampScale,
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
exports.parseTimestampScaleSegment = parseTimestampScaleSegment;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { BufferIterator } from '../../../buffer-iterator';
|
|
2
|
+
import type { MatroskaSegment } from '../segments';
|
|
3
|
+
export type TrackEntrySegment = {
|
|
4
|
+
type: 'track-entry-segment';
|
|
5
|
+
children: MatroskaSegment[];
|
|
6
|
+
};
|
|
7
|
+
export declare const parseTrackEntry: (iterator: BufferIterator) => TrackEntrySegment;
|
|
8
|
+
export type TrackNumberSegment = {
|
|
9
|
+
type: 'track-number-segment';
|
|
10
|
+
trackNumber: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const parseTrackNumber: (iterator: BufferIterator) => TrackNumberSegment;
|
|
13
|
+
export type TrackUIDSegment = {
|
|
14
|
+
type: 'track-uid-segment';
|
|
15
|
+
trackUid: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const parseTrackUID: (iterator: BufferIterator) => TrackUIDSegment;
|
|
18
|
+
export type FlagLacingSegment = {
|
|
19
|
+
type: 'flag-lacing-segment';
|
|
20
|
+
lacing: boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare const parseFlagLacing: (iterator: BufferIterator) => FlagLacingSegment;
|
|
23
|
+
export type LanguageSegment = {
|
|
24
|
+
type: 'language-segment';
|
|
25
|
+
language: string;
|
|
26
|
+
};
|
|
27
|
+
export declare const parseLanguageSegment: (iterator: BufferIterator) => LanguageSegment;
|
|
28
|
+
export type CodecSegment = {
|
|
29
|
+
type: 'codec-segment';
|
|
30
|
+
codec: string;
|
|
31
|
+
};
|
|
32
|
+
export declare const parseCodecSegment: (iterator: BufferIterator) => CodecSegment;
|
|
33
|
+
export type TrackTypeSegment = {
|
|
34
|
+
type: 'track-type-segment';
|
|
35
|
+
trackType: number;
|
|
36
|
+
};
|
|
37
|
+
export declare const parseTrackTypeSegment: (iterator: BufferIterator) => TrackTypeSegment;
|
|
38
|
+
export type DefaultDurationSegment = {
|
|
39
|
+
type: 'default-duration-segment';
|
|
40
|
+
defaultDuration: number;
|
|
41
|
+
};
|
|
42
|
+
export declare const parseDefaultDurationSegment: (iterator: BufferIterator) => DefaultDurationSegment;
|
|
43
|
+
export type VideoSegment = {
|
|
44
|
+
type: 'video-segment';
|
|
45
|
+
children: MatroskaSegment[];
|
|
46
|
+
};
|
|
47
|
+
export declare const parseVideoSegment: (iterator: BufferIterator) => VideoSegment;
|
|
48
|
+
export type WidthSegment = {
|
|
49
|
+
type: 'width-segment';
|
|
50
|
+
width: number;
|
|
51
|
+
};
|
|
52
|
+
export declare const parseWidthSegment: (iterator: BufferIterator) => WidthSegment;
|
|
53
|
+
export type HeightSegment = {
|
|
54
|
+
type: 'height-segment';
|
|
55
|
+
height: number;
|
|
56
|
+
};
|
|
57
|
+
export declare const parseHeightSegment: (iterator: BufferIterator) => HeightSegment;
|
|
58
|
+
export type AlphaModeSegment = {
|
|
59
|
+
type: 'alpha-mode-segment';
|
|
60
|
+
alphaMode: number;
|
|
61
|
+
};
|
|
62
|
+
export declare const parseAlphaModeSegment: (iterator: BufferIterator) => AlphaModeSegment;
|
|
63
|
+
export type MaxBlockAdditionId = {
|
|
64
|
+
type: 'max-block-addition-id-segment';
|
|
65
|
+
maxBlockAdditionId: number;
|
|
66
|
+
};
|
|
67
|
+
export declare const parseMaxBlockAdditionId: (iterator: BufferIterator) => MaxBlockAdditionId;
|
|
68
|
+
export type ColorSegment = {
|
|
69
|
+
type: 'color-segment';
|
|
70
|
+
};
|
|
71
|
+
export declare const parseColorSegment: (iterator: BufferIterator) => ColorSegment;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseColorSegment = exports.parseMaxBlockAdditionId = exports.parseAlphaModeSegment = exports.parseHeightSegment = exports.parseWidthSegment = exports.parseVideoSegment = exports.parseDefaultDurationSegment = exports.parseTrackTypeSegment = exports.parseCodecSegment = exports.parseLanguageSegment = exports.parseFlagLacing = exports.parseTrackUID = exports.parseTrackNumber = exports.parseTrackEntry = void 0;
|
|
4
|
+
const parse_children_1 = require("./parse-children");
|
|
5
|
+
const parseTrackEntry = (iterator) => {
|
|
6
|
+
const offset = iterator.counter.getOffset();
|
|
7
|
+
const length = iterator.getVint();
|
|
8
|
+
return {
|
|
9
|
+
type: 'track-entry-segment',
|
|
10
|
+
children: (0, parse_children_1.expectChildren)(iterator, length - (iterator.counter.getOffset() - offset)),
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.parseTrackEntry = parseTrackEntry;
|
|
14
|
+
const parseTrackNumber = (iterator) => {
|
|
15
|
+
const length = iterator.getVint();
|
|
16
|
+
if (length !== 1) {
|
|
17
|
+
throw new Error('Expected track number to be 1 byte');
|
|
18
|
+
}
|
|
19
|
+
const trackNumber = iterator.getUint8();
|
|
20
|
+
return {
|
|
21
|
+
type: 'track-number-segment',
|
|
22
|
+
trackNumber,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.parseTrackNumber = parseTrackNumber;
|
|
26
|
+
const parseTrackUID = (iterator) => {
|
|
27
|
+
const length = iterator.getVint();
|
|
28
|
+
// Observation: AV1 has 8 bytes, WebM has 7
|
|
29
|
+
if (length !== 8 && length !== 7) {
|
|
30
|
+
throw new Error('Expected track number to be 8 byte');
|
|
31
|
+
}
|
|
32
|
+
const bytes = iterator.getSlice(length);
|
|
33
|
+
const asString = [...bytes]
|
|
34
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
35
|
+
.join('');
|
|
36
|
+
return {
|
|
37
|
+
type: 'track-uid-segment',
|
|
38
|
+
trackUid: asString,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.parseTrackUID = parseTrackUID;
|
|
42
|
+
const parseFlagLacing = (iterator) => {
|
|
43
|
+
const length = iterator.getVint();
|
|
44
|
+
if (length !== 1) {
|
|
45
|
+
throw new Error('Expected flag lacing to be 1 byte');
|
|
46
|
+
}
|
|
47
|
+
const bytes = iterator.getSlice(length);
|
|
48
|
+
if (bytes[0] !== 1 && bytes[0] !== 0) {
|
|
49
|
+
throw new Error('Expected lacing to be 1 or 0');
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
type: 'flag-lacing-segment',
|
|
53
|
+
lacing: Boolean(bytes[0]),
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
exports.parseFlagLacing = parseFlagLacing;
|
|
57
|
+
const parseLanguageSegment = (iterator) => {
|
|
58
|
+
const length = iterator.getVint();
|
|
59
|
+
if (length !== 3) {
|
|
60
|
+
throw new Error('Expected language segment to be 3 bytes');
|
|
61
|
+
}
|
|
62
|
+
const language = iterator.getByteString(length);
|
|
63
|
+
return {
|
|
64
|
+
type: 'language-segment',
|
|
65
|
+
language,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
exports.parseLanguageSegment = parseLanguageSegment;
|
|
69
|
+
const parseCodecSegment = (iterator) => {
|
|
70
|
+
const length = iterator.getVint();
|
|
71
|
+
// Could make a TypeScript enum with it
|
|
72
|
+
// https://www.matroska.org/technical/codec_specs.html
|
|
73
|
+
const codec = iterator.getByteString(length);
|
|
74
|
+
return {
|
|
75
|
+
type: 'codec-segment',
|
|
76
|
+
codec,
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
exports.parseCodecSegment = parseCodecSegment;
|
|
80
|
+
const parseTrackTypeSegment = (iterator) => {
|
|
81
|
+
const length = iterator.getVint();
|
|
82
|
+
if (length !== 1) {
|
|
83
|
+
throw new Error('Expected track type segment to be 1 byte');
|
|
84
|
+
}
|
|
85
|
+
const trackType = iterator.getUint8();
|
|
86
|
+
// Could make the return type nicer
|
|
87
|
+
/* 1 - video,
|
|
88
|
+
2 - audio,
|
|
89
|
+
3 - complex,
|
|
90
|
+
16 - logo,
|
|
91
|
+
17 - subtitle,
|
|
92
|
+
18 - buttons,
|
|
93
|
+
32 - control,
|
|
94
|
+
33 - metadata;
|
|
95
|
+
*/
|
|
96
|
+
return {
|
|
97
|
+
type: 'track-type-segment',
|
|
98
|
+
trackType,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
exports.parseTrackTypeSegment = parseTrackTypeSegment;
|
|
102
|
+
const parseDefaultDurationSegment = (iterator) => {
|
|
103
|
+
const length = iterator.getVint();
|
|
104
|
+
const defaultDuration = iterator.getDecimalBytes(length);
|
|
105
|
+
return {
|
|
106
|
+
type: 'default-duration-segment',
|
|
107
|
+
defaultDuration,
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
exports.parseDefaultDurationSegment = parseDefaultDurationSegment;
|
|
111
|
+
const parseVideoSegment = (iterator) => {
|
|
112
|
+
const offset = iterator.counter.getOffset();
|
|
113
|
+
const length = iterator.getVint();
|
|
114
|
+
return {
|
|
115
|
+
type: 'video-segment',
|
|
116
|
+
children: (0, parse_children_1.expectChildren)(iterator, length - (iterator.counter.getOffset() - offset)),
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
exports.parseVideoSegment = parseVideoSegment;
|
|
120
|
+
const parseWidthSegment = (iterator) => {
|
|
121
|
+
const length = iterator.getVint();
|
|
122
|
+
if (length !== 2) {
|
|
123
|
+
throw new Error('Expected width segment to be 2 bytes');
|
|
124
|
+
}
|
|
125
|
+
const width = iterator.getUint16();
|
|
126
|
+
return {
|
|
127
|
+
type: 'width-segment',
|
|
128
|
+
width,
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
exports.parseWidthSegment = parseWidthSegment;
|
|
132
|
+
const parseHeightSegment = (iterator) => {
|
|
133
|
+
const length = iterator.getVint();
|
|
134
|
+
if (length !== 2) {
|
|
135
|
+
throw new Error('Expected height segment to be 2 bytes');
|
|
136
|
+
}
|
|
137
|
+
const height = iterator.getUint16();
|
|
138
|
+
return {
|
|
139
|
+
type: 'height-segment',
|
|
140
|
+
height,
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
exports.parseHeightSegment = parseHeightSegment;
|
|
144
|
+
const parseAlphaModeSegment = (iterator) => {
|
|
145
|
+
const length = iterator.getVint();
|
|
146
|
+
if (length !== 1) {
|
|
147
|
+
throw new Error('Expected alpha mode segment to be 1 byte');
|
|
148
|
+
}
|
|
149
|
+
const alphaMode = iterator.getUint8();
|
|
150
|
+
return {
|
|
151
|
+
type: 'alpha-mode-segment',
|
|
152
|
+
alphaMode,
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
exports.parseAlphaModeSegment = parseAlphaModeSegment;
|
|
156
|
+
const parseMaxBlockAdditionId = (iterator) => {
|
|
157
|
+
const length = iterator.getVint();
|
|
158
|
+
if (length !== 1) {
|
|
159
|
+
throw new Error('Expected alpha mode segment to be 1 byte');
|
|
160
|
+
}
|
|
161
|
+
const maxBlockAdditionId = iterator.getUint8();
|
|
162
|
+
return {
|
|
163
|
+
type: 'max-block-addition-id-segment',
|
|
164
|
+
maxBlockAdditionId,
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
exports.parseMaxBlockAdditionId = parseMaxBlockAdditionId;
|
|
168
|
+
const parseColorSegment = (iterator) => {
|
|
169
|
+
const length = iterator.getVint();
|
|
170
|
+
iterator.discard(length - 1);
|
|
171
|
+
return {
|
|
172
|
+
type: 'color-segment',
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
exports.parseColorSegment = parseColorSegment;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BufferIterator } from '../../../buffer-iterator';
|
|
2
|
+
import type { MatroskaSegment } from '../segments';
|
|
3
|
+
export type TracksSegment = {
|
|
4
|
+
type: 'tracks-segment';
|
|
5
|
+
children: MatroskaSegment[];
|
|
6
|
+
};
|
|
7
|
+
export declare const parseTracksSegment: (iterator: BufferIterator) => TracksSegment;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTracksSegment = void 0;
|
|
4
|
+
const parse_children_1 = require("./parse-children");
|
|
5
|
+
const parseTracksSegment = (iterator) => {
|
|
6
|
+
const offset = iterator.counter.getOffset();
|
|
7
|
+
const length = iterator.getVint();
|
|
8
|
+
return {
|
|
9
|
+
type: 'tracks-segment',
|
|
10
|
+
children: (0, parse_children_1.expectChildren)(iterator, length - (iterator.counter.getOffset() - offset)),
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.parseTracksSegment = parseTracksSegment;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseUnknownSegment = void 0;
|
|
4
|
+
const parseUnknownSegment = (iterator, id, length) => {
|
|
5
|
+
iterator.discard(length);
|
|
6
|
+
return {
|
|
7
|
+
id,
|
|
8
|
+
type: 'unknown-segment',
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
exports.parseUnknownSegment = parseUnknownSegment;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseVoidSegment = void 0;
|
|
4
|
+
const parseVoidSegment = (iterator) => {
|
|
5
|
+
const length = iterator.getVint();
|
|
6
|
+
iterator.discard(length);
|
|
7
|
+
return {
|
|
8
|
+
type: 'void-segment',
|
|
9
|
+
length,
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
exports.parseVoidSegment = parseVoidSegment;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseWritingSegment = void 0;
|
|
4
|
+
const parseWritingSegment = (iterator) => {
|
|
5
|
+
const length = iterator.getVint();
|
|
6
|
+
const value = iterator.getByteString(length);
|
|
7
|
+
return {
|
|
8
|
+
type: 'writing-app-segment',
|
|
9
|
+
value,
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
exports.parseWritingSegment = parseWritingSegment;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BufferIterator } from '../../buffer-iterator';
|
|
2
|
+
import type { DurationSegment } from './segments/duration';
|
|
3
|
+
import type { InfoSegment } from './segments/info';
|
|
4
|
+
import type { MainSegment } from './segments/main';
|
|
5
|
+
import { type MuxingAppSegment } from './segments/muxing';
|
|
6
|
+
import { type SeekSegment } from './segments/seek';
|
|
7
|
+
import type { SeekHeadSegment } from './segments/seek-head';
|
|
8
|
+
import { type SeekPositionSegment } from './segments/seek-position';
|
|
9
|
+
import type { TimestampScaleSegment } from './segments/timestamp-scale';
|
|
10
|
+
import type { AlphaModeSegment, CodecSegment, ColorSegment, DefaultDurationSegment, FlagLacingSegment, HeightSegment, LanguageSegment, MaxBlockAdditionId, TrackEntrySegment, TrackNumberSegment, TrackTypeSegment, TrackUIDSegment, VideoSegment, WidthSegment } from './segments/track-entry';
|
|
11
|
+
import type { TracksSegment } from './segments/tracks';
|
|
12
|
+
import type { UnknownSegment } from './segments/unknown';
|
|
13
|
+
import type { VoidSegment } from './segments/void';
|
|
14
|
+
import type { WritingAppSegment } from './segments/writing';
|
|
15
|
+
export type MatroskaSegment = MainSegment | UnknownSegment | SeekHeadSegment | SeekSegment | SeekPositionSegment | VoidSegment | InfoSegment | TimestampScaleSegment | MuxingAppSegment | WritingAppSegment | DurationSegment | TracksSegment | TrackEntrySegment | TrackNumberSegment | TrackUIDSegment | FlagLacingSegment | LanguageSegment | CodecSegment | TrackTypeSegment | DefaultDurationSegment | VideoSegment | WidthSegment | HeightSegment | AlphaModeSegment | MaxBlockAdditionId | ColorSegment;
|
|
16
|
+
export declare const expectSegment: (iterator: BufferIterator) => MatroskaSegment;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expectSegment = void 0;
|
|
4
|
+
const duration_1 = require("./segments/duration");
|
|
5
|
+
const info_1 = require("./segments/info");
|
|
6
|
+
const main_1 = require("./segments/main");
|
|
7
|
+
const muxing_1 = require("./segments/muxing");
|
|
8
|
+
const seek_1 = require("./segments/seek");
|
|
9
|
+
const seek_head_1 = require("./segments/seek-head");
|
|
10
|
+
const seek_position_1 = require("./segments/seek-position");
|
|
11
|
+
const timestamp_scale_1 = require("./segments/timestamp-scale");
|
|
12
|
+
const track_entry_1 = require("./segments/track-entry");
|
|
13
|
+
const tracks_1 = require("./segments/tracks");
|
|
14
|
+
const unknown_1 = require("./segments/unknown");
|
|
15
|
+
const void_1 = require("./segments/void");
|
|
16
|
+
const writing_1 = require("./segments/writing");
|
|
17
|
+
const expectSegment = (iterator) => {
|
|
18
|
+
const segmentId = iterator.getMatroskaSegmentId();
|
|
19
|
+
if (segmentId === '0x') {
|
|
20
|
+
return {
|
|
21
|
+
type: 'unknown-segment',
|
|
22
|
+
id: segmentId,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (segmentId === '0x18538067') {
|
|
26
|
+
return (0, main_1.parseMainSegment)(iterator);
|
|
27
|
+
}
|
|
28
|
+
if (segmentId === '0x114d9b74') {
|
|
29
|
+
return (0, seek_head_1.parseSeekHeadSegment)(iterator);
|
|
30
|
+
}
|
|
31
|
+
if (segmentId === '0x4dbb') {
|
|
32
|
+
return (0, seek_1.parseSeekSegment)(iterator);
|
|
33
|
+
}
|
|
34
|
+
if (segmentId === '0x53ac') {
|
|
35
|
+
return (0, seek_position_1.parseSeekPositionSegment)(iterator);
|
|
36
|
+
}
|
|
37
|
+
if (segmentId === '0xec') {
|
|
38
|
+
return (0, void_1.parseVoidSegment)(iterator);
|
|
39
|
+
}
|
|
40
|
+
if (segmentId === '0x1549a966') {
|
|
41
|
+
return (0, info_1.parseInfoSegment)(iterator);
|
|
42
|
+
}
|
|
43
|
+
if (segmentId === '0x2ad7b183') {
|
|
44
|
+
return (0, timestamp_scale_1.parseTimestampScaleSegment)(iterator);
|
|
45
|
+
}
|
|
46
|
+
if (segmentId === '0x4d80') {
|
|
47
|
+
return (0, muxing_1.parseMuxingSegment)(iterator);
|
|
48
|
+
}
|
|
49
|
+
if (segmentId === '0x5741') {
|
|
50
|
+
return (0, writing_1.parseWritingSegment)(iterator);
|
|
51
|
+
}
|
|
52
|
+
if (segmentId === '0x4489') {
|
|
53
|
+
return (0, duration_1.parseDurationSegment)(iterator);
|
|
54
|
+
}
|
|
55
|
+
if (segmentId === '0x1654ae6b') {
|
|
56
|
+
return (0, tracks_1.parseTracksSegment)(iterator);
|
|
57
|
+
}
|
|
58
|
+
if (segmentId === '0xae') {
|
|
59
|
+
return (0, track_entry_1.parseTrackEntry)(iterator);
|
|
60
|
+
}
|
|
61
|
+
if (segmentId === '0xd7') {
|
|
62
|
+
return (0, track_entry_1.parseTrackNumber)(iterator);
|
|
63
|
+
}
|
|
64
|
+
if (segmentId === '0x73c5') {
|
|
65
|
+
return (0, track_entry_1.parseTrackUID)(iterator);
|
|
66
|
+
}
|
|
67
|
+
if (segmentId === '0x9c') {
|
|
68
|
+
return (0, track_entry_1.parseFlagLacing)(iterator);
|
|
69
|
+
}
|
|
70
|
+
if (segmentId === '0x22b59c') {
|
|
71
|
+
return (0, track_entry_1.parseLanguageSegment)(iterator);
|
|
72
|
+
}
|
|
73
|
+
if (segmentId === '0x86') {
|
|
74
|
+
return (0, track_entry_1.parseCodecSegment)(iterator);
|
|
75
|
+
}
|
|
76
|
+
if (segmentId === '0x83') {
|
|
77
|
+
return (0, track_entry_1.parseTrackTypeSegment)(iterator);
|
|
78
|
+
}
|
|
79
|
+
if (segmentId === '0x55ee') {
|
|
80
|
+
return (0, track_entry_1.parseMaxBlockAdditionId)(iterator);
|
|
81
|
+
}
|
|
82
|
+
if (segmentId === '0x55b0') {
|
|
83
|
+
return (0, track_entry_1.parseColorSegment)(iterator);
|
|
84
|
+
}
|
|
85
|
+
if (segmentId === '0x23e383') {
|
|
86
|
+
return (0, track_entry_1.parseDefaultDurationSegment)(iterator);
|
|
87
|
+
}
|
|
88
|
+
if (segmentId === '0xe0') {
|
|
89
|
+
return (0, track_entry_1.parseVideoSegment)(iterator);
|
|
90
|
+
}
|
|
91
|
+
if (segmentId === '0xb0') {
|
|
92
|
+
return (0, track_entry_1.parseWidthSegment)(iterator);
|
|
93
|
+
}
|
|
94
|
+
if (segmentId === '0xba') {
|
|
95
|
+
return (0, track_entry_1.parseHeightSegment)(iterator);
|
|
96
|
+
}
|
|
97
|
+
if (segmentId === '0x53c0') {
|
|
98
|
+
return (0, track_entry_1.parseAlphaModeSegment)(iterator);
|
|
99
|
+
}
|
|
100
|
+
const length = iterator.getVint();
|
|
101
|
+
const bytesRemaining = iterator.byteLength() - iterator.counter.getOffset();
|
|
102
|
+
const toDiscard = Math.min(bytesRemaining, length > 0 ? length : bytesRemaining);
|
|
103
|
+
const child = (0, unknown_1.parseUnknownSegment)(iterator, segmentId, toDiscard);
|
|
104
|
+
return child;
|
|
105
|
+
};
|
|
106
|
+
exports.expectSegment = expectSegment;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare class OffsetCounter {
|
|
2
|
+
#private;
|
|
3
|
+
constructor(initial: number);
|
|
4
|
+
increment(amount: number): void;
|
|
5
|
+
getOffset(): number;
|
|
6
|
+
getDiscardedOffset(): number;
|
|
7
|
+
discardBytes(amount: number): void;
|
|
8
|
+
decrement(amount: number): void;
|
|
9
|
+
}
|
|
10
|
+
export declare const getArrayBufferIterator: (initialData: Uint8Array) => {
|
|
11
|
+
addData: (newData: Uint8Array) => void;
|
|
12
|
+
counter: OffsetCounter;
|
|
13
|
+
byteLength: () => number;
|
|
14
|
+
bytesRemaining: () => number;
|
|
15
|
+
isIsoBaseMedia: () => boolean;
|
|
16
|
+
discardFirstBytes: () => void;
|
|
17
|
+
isWebm: () => boolean;
|
|
18
|
+
discard: (length: number) => void;
|
|
19
|
+
getFourByteNumber: () => number;
|
|
20
|
+
getSlice: (amount: number) => Uint8Array;
|
|
21
|
+
getAtom: () => string;
|
|
22
|
+
getMatroskaSegmentId: () => string;
|
|
23
|
+
getVint: () => number;
|
|
24
|
+
getUint8: () => number;
|
|
25
|
+
getEBML: () => number;
|
|
26
|
+
getInt8: () => number;
|
|
27
|
+
getUint16: () => number;
|
|
28
|
+
getInt16: () => number;
|
|
29
|
+
getUint32: () => number;
|
|
30
|
+
getFixedPoint1616Number: () => number;
|
|
31
|
+
getPascalString: () => number[];
|
|
32
|
+
getDecimalBytes(length: number): number;
|
|
33
|
+
getByteString(length: number): string;
|
|
34
|
+
getFloat64: () => number;
|
|
35
|
+
};
|
|
36
|
+
export type BufferIterator = ReturnType<typeof getArrayBufferIterator>;
|