@remotion/media-parser 4.0.209 → 4.0.210
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/buffer.js +2 -0
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +1 -1
- package/dist/boxes/iso-base-media/make-track.js +14 -2
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +2 -1
- package/dist/boxes/iso-base-media/mdat/mdat.js +8 -3
- package/dist/boxes/iso-base-media/moov/moov.d.ts +2 -1
- package/dist/boxes/iso-base-media/moov/moov.js +2 -1
- package/dist/boxes/iso-base-media/process-box.d.ts +6 -3
- package/dist/boxes/iso-base-media/process-box.js +20 -5
- package/dist/boxes/iso-base-media/stsd/avcc.d.ts +1 -1
- package/dist/boxes/iso-base-media/stsd/avcc.js +2 -2
- package/dist/boxes/iso-base-media/stsd/ctts.js +2 -5
- package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +1 -1
- package/dist/boxes/iso-base-media/stsd/hvcc.js +2 -2
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +2 -1
- package/dist/boxes/iso-base-media/stsd/mebx.js +2 -1
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +4 -2
- package/dist/boxes/iso-base-media/stsd/samples.js +69 -11
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +2 -1
- package/dist/boxes/iso-base-media/stsd/stsd.js +2 -1
- package/dist/boxes/iso-base-media/trak/trak.d.ts +2 -1
- package/dist/boxes/iso-base-media/trak/trak.js +2 -1
- package/dist/boxes/iso-base-media/traversal.d.ts +44 -0
- package/dist/boxes/iso-base-media/traversal.js +211 -0
- package/dist/boxes/webm/color.d.ts +4 -0
- package/dist/boxes/webm/color.js +120 -0
- package/dist/boxes/webm/description.js +1 -1
- package/dist/boxes/webm/get-ready-tracks.js +3 -3
- package/dist/boxes/webm/get-sample-from-block.js +1 -1
- package/dist/boxes/webm/get-track.js +16 -1
- package/dist/boxes/webm/make-track.d.ts +9 -0
- package/dist/boxes/webm/make-track.js +260 -0
- package/dist/boxes/webm/parse-ebml.js +2 -2
- package/dist/boxes/webm/segments/all-segments.d.ts +36 -3
- package/dist/boxes/webm/segments/all-segments.js +34 -6
- package/dist/boxes/webm/traversal.d.ts +26 -1
- package/dist/boxes/webm/traversal.js +214 -1
- package/dist/create/cluster-segment.js +0 -2
- package/dist/create/cluster.d.ts +10 -2
- package/dist/create/cluster.js +16 -10
- package/dist/create/create-media.d.ts +4 -2
- package/dist/create/create-media.js +76 -14
- package/dist/create/cues.d.ts +0 -0
- package/dist/create/cues.js +1 -0
- package/dist/create/make-duration-with-padding.d.ts +1 -1
- package/dist/create/make-duration-with-padding.js +3 -3
- package/dist/create/matroska-cues.d.ts +6 -0
- package/dist/create/matroska-cues.js +50 -0
- package/dist/create/matroska-info.js +1 -1
- package/dist/create/matroska-seek.d.ts +6 -0
- package/dist/create/matroska-seek.js +32 -0
- package/dist/create/matroska-segment.d.ts +1 -0
- package/dist/create/matroska-segment.js +3 -2
- package/dist/create/matroska-trackentry.d.ts +9 -14
- package/dist/create/matroska-trackentry.js +79 -94
- package/dist/emit-available-info.d.ts +12 -0
- package/dist/emit-available-info.js +133 -0
- package/dist/esm/buffer.mjs +57 -0
- package/dist/esm/from-fetch.mjs +72 -0
- package/dist/esm/from-node.mjs +48 -0
- package/dist/esm/from-web-file.mjs +48 -0
- package/dist/esm/index.mjs +6689 -0
- package/dist/esm/web-fs.mjs +67 -0
- package/dist/get-audio-codec.d.ts +5 -5
- package/dist/get-audio-codec.js +41 -57
- package/dist/get-container.d.ts +4 -0
- package/dist/get-container.js +26 -0
- package/dist/get-duration.js +1 -1
- package/dist/get-fps.js +1 -1
- package/dist/get-sample-aspect-ratio.d.ts +1 -1
- package/dist/get-sample-aspect-ratio.js +19 -19
- package/dist/get-tracks.d.ts +13 -0
- package/dist/get-tracks.js +8 -8
- package/dist/get-video-codec.d.ts +5 -2
- package/dist/get-video-codec.js +111 -21
- package/dist/has-all-info.d.ts +2 -2
- package/dist/has-all-info.js +23 -9
- package/dist/index.d.ts +3 -1
- package/dist/options.d.ts +97 -30
- package/dist/parse-media.js +43 -62
- package/dist/parse-video.d.ts +2 -1
- package/dist/parse-video.js +3 -1
- package/dist/parser-state.js +1 -2
- package/dist/readers/from-fetch.js +24 -4
- package/dist/readers/from-node.js +13 -3
- package/dist/readers/from-web-file.js +14 -2
- package/dist/readers/reader.d.ts +6 -1
- package/dist/samples-from-moof.js +1 -1
- package/dist/traversal.d.ts +0 -21
- package/dist/traversal.js +1 -158
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +7 -0
- package/dist/writers/buffer.d.ts +2 -0
- package/dist/writers/buffer.js +58 -0
- package/dist/writers/web-fs.d.ts +1 -0
- package/dist/writers/web-fs.js +42 -18
- package/dist/writers/writer.d.ts +4 -2
- package/fetch.js +2 -0
- package/node.js +2 -0
- package/package.json +43 -8
- package/web-file.js +2 -0
- package/web-fs.js +2 -0
- package/.eslintrc +0 -8
- package/input.webm +0 -0
- package/src/add-new-matroska-tracks.ts +0 -23
- package/src/boxes/iso-base-media/base-type.ts +0 -4
- package/src/boxes/iso-base-media/esds/decoder-specific-config.ts +0 -68
- package/src/boxes/iso-base-media/esds/esds-descriptors.ts +0 -135
- package/src/boxes/iso-base-media/esds/esds.ts +0 -49
- package/src/boxes/iso-base-media/ftyp.ts +0 -39
- package/src/boxes/iso-base-media/get-sample-positions-from-track.ts +0 -69
- package/src/boxes/iso-base-media/make-track.ts +0 -116
- package/src/boxes/iso-base-media/mdat/mdat.ts +0 -140
- package/src/boxes/iso-base-media/mdhd.ts +0 -59
- package/src/boxes/iso-base-media/moov/moov.ts +0 -43
- package/src/boxes/iso-base-media/mvhd.ts +0 -114
- package/src/boxes/iso-base-media/process-box.ts +0 -748
- package/src/boxes/iso-base-media/stsd/av1c.ts +0 -19
- package/src/boxes/iso-base-media/stsd/avcc.ts +0 -36
- package/src/boxes/iso-base-media/stsd/colr.ts +0 -49
- package/src/boxes/iso-base-media/stsd/ctts.ts +0 -64
- package/src/boxes/iso-base-media/stsd/hvcc.ts +0 -32
- package/src/boxes/iso-base-media/stsd/keys.ts +0 -27
- package/src/boxes/iso-base-media/stsd/mebx.ts +0 -54
- package/src/boxes/iso-base-media/stsd/pasp.ts +0 -32
- package/src/boxes/iso-base-media/stsd/samples.ts +0 -359
- package/src/boxes/iso-base-media/stsd/stco.ts +0 -52
- package/src/boxes/iso-base-media/stsd/stsc.ts +0 -61
- package/src/boxes/iso-base-media/stsd/stsd.ts +0 -55
- package/src/boxes/iso-base-media/stsd/stss.ts +0 -47
- package/src/boxes/iso-base-media/stsd/stsz.ts +0 -75
- package/src/boxes/iso-base-media/stsd/stts.ts +0 -62
- package/src/boxes/iso-base-media/tfdt.ts +0 -37
- package/src/boxes/iso-base-media/tfhd.ts +0 -66
- package/src/boxes/iso-base-media/tkhd.ts +0 -150
- package/src/boxes/iso-base-media/to-date.ts +0 -9
- package/src/boxes/iso-base-media/trak/trak.ts +0 -43
- package/src/boxes/iso-base-media/trun.ts +0 -74
- package/src/boxes/iso-base-media/void-box.ts +0 -4
- package/src/boxes/webm/allowed-partial-segments.ts +0 -1
- package/src/boxes/webm/av1-codec-private.ts +0 -113
- package/src/boxes/webm/description.ts +0 -104
- package/src/boxes/webm/ebml.ts +0 -98
- package/src/boxes/webm/get-ready-tracks.ts +0 -36
- package/src/boxes/webm/get-sample-from-block.ts +0 -125
- package/src/boxes/webm/get-track.ts +0 -257
- package/src/boxes/webm/make-header.ts +0 -253
- package/src/boxes/webm/parse-ebml.ts +0 -259
- package/src/boxes/webm/parse-webm-header.ts +0 -18
- package/src/boxes/webm/segments/all-segments.ts +0 -888
- package/src/boxes/webm/segments/block-simple-block-flags.ts +0 -52
- package/src/boxes/webm/segments/parse-children.ts +0 -144
- package/src/boxes/webm/segments/track-entry.ts +0 -38
- package/src/boxes/webm/segments.ts +0 -147
- package/src/boxes/webm/traversal.ts +0 -45
- package/src/buffer-iterator.ts +0 -555
- package/src/create/cluster-segment.ts +0 -62
- package/src/create/cluster.ts +0 -64
- package/src/create/create-media.ts +0 -136
- package/src/create/make-duration-with-padding.ts +0 -15
- package/src/create/matroska-header.ts +0 -63
- package/src/create/matroska-info.ts +0 -30
- package/src/create/matroska-segment.ts +0 -10
- package/src/create/matroska-trackentry.ts +0 -325
- package/src/create/timescale.ts +0 -1
- package/src/get-audio-codec.ts +0 -270
- package/src/get-dimensions.ts +0 -47
- package/src/get-duration.ts +0 -103
- package/src/get-fps.ts +0 -113
- package/src/get-sample-aspect-ratio.ts +0 -204
- package/src/get-sample-positions.ts +0 -93
- package/src/get-tracks.ts +0 -147
- package/src/get-video-codec.ts +0 -117
- package/src/has-all-info.ts +0 -81
- package/src/index.ts +0 -18
- package/src/make-hvc1-codec-strings.ts +0 -55
- package/src/options.ts +0 -118
- package/src/parse-media.ts +0 -183
- package/src/parse-result.ts +0 -79
- package/src/parse-video.ts +0 -83
- package/src/parser-context.ts +0 -10
- package/src/parser-state.ts +0 -178
- package/src/readers/from-fetch.ts +0 -90
- package/src/readers/from-node.ts +0 -51
- package/src/readers/from-web-file.ts +0 -49
- package/src/readers/reader.ts +0 -15
- package/src/samples-from-moof.ts +0 -102
- package/src/test/aspect-ratio.test.ts +0 -42
- package/src/test/av1.test.ts +0 -108
- package/src/test/create-matroska.test.ts +0 -287
- package/src/test/duration.test.ts +0 -18
- package/src/test/keys.test.ts +0 -47
- package/src/test/matroska.test.ts +0 -463
- package/src/test/mvhd.test.ts +0 -94
- package/src/test/parse-esds.test.ts +0 -98
- package/src/test/parse-stco.test.ts +0 -61
- package/src/test/parse-stsc.test.ts +0 -104
- package/src/test/parse-stsz.test.ts +0 -57
- package/src/test/parse-stts.test.ts +0 -38
- package/src/test/parse-video.test.ts +0 -101
- package/src/test/parse-webm.test.ts +0 -17
- package/src/test/samples-from-moof.test.ts +0 -2496
- package/src/test/stream-local.test.ts +0 -743
- package/src/test/stream-remote.test.ts +0 -59
- package/src/test/stream-samples.test.ts +0 -181
- package/src/test/stsd.test.ts +0 -265
- package/src/test/tkhd.test.ts +0 -87
- package/src/traversal.ts +0 -528
- package/src/webcodec-sample-types.ts +0 -29
- package/src/writers/web-fs.ts +0 -50
- package/src/writers/writer.ts +0 -12
- package/tsconfig.json +0 -14
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AnySegment, IsoBaseMediaBox, RegularBox } from '../../parse-result';
|
|
2
|
+
import type { FtypBox } from './ftyp';
|
|
3
|
+
import type { MdhdBox } from './mdhd';
|
|
4
|
+
import type { MoovBox } from './moov/moov';
|
|
5
|
+
import type { MvhdBox } from './mvhd';
|
|
6
|
+
import type { CttsBox } from './stsd/ctts';
|
|
7
|
+
import type { StcoBox } from './stsd/stco';
|
|
8
|
+
import type { StscBox } from './stsd/stsc';
|
|
9
|
+
import type { StsdBox } from './stsd/stsd';
|
|
10
|
+
import type { StssBox } from './stsd/stss';
|
|
11
|
+
import type { StszBox } from './stsd/stsz';
|
|
12
|
+
import type { SttsBox } from './stsd/stts';
|
|
13
|
+
import type { TfdtBox } from './tfdt';
|
|
14
|
+
import type { TfhdBox } from './tfhd';
|
|
15
|
+
import type { TkhdBox } from './tkhd';
|
|
16
|
+
import type { TrakBox } from './trak/trak';
|
|
17
|
+
import type { TrunBox } from './trun';
|
|
18
|
+
export declare const getFtypBox: (segments: AnySegment[]) => FtypBox | null;
|
|
19
|
+
export declare const getMoovBox: (segments: AnySegment[]) => MoovBox | null;
|
|
20
|
+
export declare const getMoofBox: (main: AnySegment[]) => IsoBaseMediaBox | null;
|
|
21
|
+
export declare const getMvhdBox: (moovBox: MoovBox) => MvhdBox | null;
|
|
22
|
+
export declare const getTraks: (moovBox: MoovBox) => TrakBox[];
|
|
23
|
+
export declare const getTkhdBox: (trakBox: TrakBox) => TkhdBox | null;
|
|
24
|
+
export declare const getMdiaBox: (trakBox: TrakBox) => RegularBox | null;
|
|
25
|
+
export declare const getMdhdBox: (trakBox: TrakBox) => MdhdBox | null;
|
|
26
|
+
export declare const getStblBox: (trakBox: TrakBox) => RegularBox | null;
|
|
27
|
+
export declare const getStsdBox: (trakBox: TrakBox) => StsdBox | null;
|
|
28
|
+
export declare const getVideoDescriptors: (trakBox: TrakBox) => Uint8Array | null;
|
|
29
|
+
export declare const getStcoBox: (trakBox: TrakBox) => StcoBox | null;
|
|
30
|
+
export declare const getSttsBox: (trakBox: TrakBox) => SttsBox | null;
|
|
31
|
+
export declare const getCttsBox: (trakBox: TrakBox) => CttsBox | null;
|
|
32
|
+
export declare const getStszBox: (trakBox: TrakBox) => StszBox | null;
|
|
33
|
+
export declare const getStscBox: (trakBox: TrakBox) => StscBox | null;
|
|
34
|
+
export declare const getStssBox: (trakBox: TrakBox) => StssBox | null;
|
|
35
|
+
export declare const getTfdtBox: (segment: IsoBaseMediaBox) => TfdtBox | null;
|
|
36
|
+
export declare const getTfhdBox: (segment: IsoBaseMediaBox) => TfhdBox | null;
|
|
37
|
+
export declare const getTrunBoxes: (segment: IsoBaseMediaBox) => TrunBox[];
|
|
38
|
+
export declare const hasSkippedMdatProcessing: (anySegment: AnySegment[]) => {
|
|
39
|
+
skipped: false;
|
|
40
|
+
fileOffset?: undefined;
|
|
41
|
+
} | {
|
|
42
|
+
skipped: boolean;
|
|
43
|
+
fileOffset: number;
|
|
44
|
+
};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasSkippedMdatProcessing = exports.getTrunBoxes = exports.getTfhdBox = exports.getTfdtBox = exports.getStssBox = exports.getStscBox = exports.getStszBox = exports.getCttsBox = exports.getSttsBox = exports.getStcoBox = exports.getVideoDescriptors = exports.getStsdBox = exports.getStblBox = exports.getMdhdBox = exports.getMdiaBox = exports.getTkhdBox = exports.getTraks = exports.getMvhdBox = exports.getMoofBox = exports.getMoovBox = exports.getFtypBox = void 0;
|
|
4
|
+
const getFtypBox = (segments) => {
|
|
5
|
+
const ftypBox = segments.find((s) => s.type === 'ftyp-box');
|
|
6
|
+
if (!ftypBox || ftypBox.type !== 'ftyp-box') {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return ftypBox;
|
|
10
|
+
};
|
|
11
|
+
exports.getFtypBox = getFtypBox;
|
|
12
|
+
const getMoovBox = (segments) => {
|
|
13
|
+
const moovBox = segments.find((s) => s.type === 'moov-box');
|
|
14
|
+
if (!moovBox || moovBox.type !== 'moov-box') {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return moovBox;
|
|
18
|
+
};
|
|
19
|
+
exports.getMoovBox = getMoovBox;
|
|
20
|
+
const getMoofBox = (main) => {
|
|
21
|
+
const moofBox = main.find((s) => s.type === 'regular-box' && s.boxType === 'moof');
|
|
22
|
+
if (!moofBox || moofBox.type !== 'regular-box') {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return moofBox;
|
|
26
|
+
};
|
|
27
|
+
exports.getMoofBox = getMoofBox;
|
|
28
|
+
const getMvhdBox = (moovBox) => {
|
|
29
|
+
const mvHdBox = moovBox.children.find((s) => s.type === 'mvhd-box');
|
|
30
|
+
if (!mvHdBox || mvHdBox.type !== 'mvhd-box') {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return mvHdBox;
|
|
34
|
+
};
|
|
35
|
+
exports.getMvhdBox = getMvhdBox;
|
|
36
|
+
const getTraks = (moovBox) => {
|
|
37
|
+
return moovBox.children.filter((s) => s.type === 'trak-box');
|
|
38
|
+
};
|
|
39
|
+
exports.getTraks = getTraks;
|
|
40
|
+
const getTkhdBox = (trakBox) => {
|
|
41
|
+
const tkhdBox = trakBox.children.find((s) => s.type === 'tkhd-box');
|
|
42
|
+
return tkhdBox;
|
|
43
|
+
};
|
|
44
|
+
exports.getTkhdBox = getTkhdBox;
|
|
45
|
+
const getMdiaBox = (trakBox) => {
|
|
46
|
+
const mdiaBox = trakBox.children.find((s) => s.type === 'regular-box' && s.boxType === 'mdia');
|
|
47
|
+
if (!mdiaBox || mdiaBox.type !== 'regular-box') {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return mdiaBox;
|
|
51
|
+
};
|
|
52
|
+
exports.getMdiaBox = getMdiaBox;
|
|
53
|
+
const getMdhdBox = (trakBox) => {
|
|
54
|
+
const mdiaBox = (0, exports.getMdiaBox)(trakBox);
|
|
55
|
+
if (!mdiaBox) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const mdhdBox = mdiaBox.children.find((c) => c.type === 'mdhd-box');
|
|
59
|
+
return mdhdBox;
|
|
60
|
+
};
|
|
61
|
+
exports.getMdhdBox = getMdhdBox;
|
|
62
|
+
const getStblBox = (trakBox) => {
|
|
63
|
+
const mdiaBox = (0, exports.getMdiaBox)(trakBox);
|
|
64
|
+
if (!mdiaBox) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const minfBox = mdiaBox.children.find((s) => s.type === 'regular-box' && s.boxType === 'minf');
|
|
68
|
+
if (!minfBox || minfBox.type !== 'regular-box') {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const stblBox = minfBox.children.find((s) => s.type === 'regular-box' && s.boxType === 'stbl');
|
|
72
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return stblBox;
|
|
76
|
+
};
|
|
77
|
+
exports.getStblBox = getStblBox;
|
|
78
|
+
const getStsdBox = (trakBox) => {
|
|
79
|
+
const stblBox = (0, exports.getStblBox)(trakBox);
|
|
80
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const stsdBox = stblBox.children.find((s) => s.type === 'stsd-box');
|
|
84
|
+
return stsdBox;
|
|
85
|
+
};
|
|
86
|
+
exports.getStsdBox = getStsdBox;
|
|
87
|
+
const getVideoDescriptors = (trakBox) => {
|
|
88
|
+
var _a;
|
|
89
|
+
const stsdBox = (0, exports.getStsdBox)(trakBox);
|
|
90
|
+
if (!stsdBox) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const descriptors = stsdBox.samples.map((s) => {
|
|
94
|
+
return s.type === 'video'
|
|
95
|
+
? s.descriptors.map((d) => {
|
|
96
|
+
return d.type === 'avcc-box'
|
|
97
|
+
? d.privateData
|
|
98
|
+
: d.type === 'hvcc-box'
|
|
99
|
+
? d.privateData
|
|
100
|
+
: null;
|
|
101
|
+
})
|
|
102
|
+
: [];
|
|
103
|
+
});
|
|
104
|
+
return (_a = descriptors.flat(1).filter(Boolean)[0]) !== null && _a !== void 0 ? _a : null;
|
|
105
|
+
};
|
|
106
|
+
exports.getVideoDescriptors = getVideoDescriptors;
|
|
107
|
+
const getStcoBox = (trakBox) => {
|
|
108
|
+
const stblBox = (0, exports.getStblBox)(trakBox);
|
|
109
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const stcoBox = stblBox.children.find((s) => s.type === 'stco-box');
|
|
113
|
+
return stcoBox;
|
|
114
|
+
};
|
|
115
|
+
exports.getStcoBox = getStcoBox;
|
|
116
|
+
const getSttsBox = (trakBox) => {
|
|
117
|
+
const stblBox = (0, exports.getStblBox)(trakBox);
|
|
118
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const sttsBox = stblBox.children.find((s) => s.type === 'stts-box');
|
|
122
|
+
return sttsBox;
|
|
123
|
+
};
|
|
124
|
+
exports.getSttsBox = getSttsBox;
|
|
125
|
+
const getCttsBox = (trakBox) => {
|
|
126
|
+
const stblBox = (0, exports.getStblBox)(trakBox);
|
|
127
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const cttsBox = stblBox.children.find((s) => s.type === 'ctts-box');
|
|
131
|
+
return cttsBox;
|
|
132
|
+
};
|
|
133
|
+
exports.getCttsBox = getCttsBox;
|
|
134
|
+
const getStszBox = (trakBox) => {
|
|
135
|
+
const stblBox = (0, exports.getStblBox)(trakBox);
|
|
136
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const stszBox = stblBox.children.find((s) => s.type === 'stsz-box');
|
|
140
|
+
return stszBox;
|
|
141
|
+
};
|
|
142
|
+
exports.getStszBox = getStszBox;
|
|
143
|
+
const getStscBox = (trakBox) => {
|
|
144
|
+
const stblBox = (0, exports.getStblBox)(trakBox);
|
|
145
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
const stcoBox = stblBox.children.find((b) => b.type === 'stsc-box');
|
|
149
|
+
return stcoBox;
|
|
150
|
+
};
|
|
151
|
+
exports.getStscBox = getStscBox;
|
|
152
|
+
const getStssBox = (trakBox) => {
|
|
153
|
+
const stblBox = (0, exports.getStblBox)(trakBox);
|
|
154
|
+
if (!stblBox || stblBox.type !== 'regular-box') {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const stssBox = stblBox.children.find((b) => b.type === 'stss-box');
|
|
158
|
+
return stssBox;
|
|
159
|
+
};
|
|
160
|
+
exports.getStssBox = getStssBox;
|
|
161
|
+
const getTfdtBox = (segment) => {
|
|
162
|
+
if (segment.type !== 'regular-box' || segment.boxType !== 'traf') {
|
|
163
|
+
throw new Error('Expected traf-box');
|
|
164
|
+
}
|
|
165
|
+
const tfhdBox = segment.children.find((c) => c.type === 'tfdt-box');
|
|
166
|
+
if (!tfhdBox || tfhdBox.type !== 'tfdt-box') {
|
|
167
|
+
throw new Error('Expected tfhd-box');
|
|
168
|
+
}
|
|
169
|
+
return tfhdBox;
|
|
170
|
+
};
|
|
171
|
+
exports.getTfdtBox = getTfdtBox;
|
|
172
|
+
const getTfhdBox = (segment) => {
|
|
173
|
+
if (segment.type !== 'regular-box' || segment.boxType !== 'traf') {
|
|
174
|
+
throw new Error('Expected traf-box');
|
|
175
|
+
}
|
|
176
|
+
const tfhdBox = segment.children.find((c) => c.type === 'tfhd-box');
|
|
177
|
+
if (!tfhdBox || tfhdBox.type !== 'tfhd-box') {
|
|
178
|
+
throw new Error('Expected tfhd-box');
|
|
179
|
+
}
|
|
180
|
+
return tfhdBox;
|
|
181
|
+
};
|
|
182
|
+
exports.getTfhdBox = getTfhdBox;
|
|
183
|
+
const getTrunBoxes = (segment) => {
|
|
184
|
+
if (segment.type !== 'regular-box' || segment.boxType !== 'traf') {
|
|
185
|
+
throw new Error('Expected traf-box');
|
|
186
|
+
}
|
|
187
|
+
const trunBoxes = segment.children.filter((c) => c.type === 'trun-box');
|
|
188
|
+
return trunBoxes;
|
|
189
|
+
};
|
|
190
|
+
exports.getTrunBoxes = getTrunBoxes;
|
|
191
|
+
const hasSkippedMdatProcessing = (anySegment) => {
|
|
192
|
+
const mdat = anySegment.find((b) => b.type === 'mdat-box');
|
|
193
|
+
if (!mdat) {
|
|
194
|
+
return {
|
|
195
|
+
skipped: false,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
if (mdat.type !== 'mdat-box') {
|
|
199
|
+
throw new Error('Expected mdat-box');
|
|
200
|
+
}
|
|
201
|
+
if (mdat.samplesProcessed) {
|
|
202
|
+
return {
|
|
203
|
+
skipped: false,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
skipped: true,
|
|
208
|
+
fileOffset: mdat.fileOffset,
|
|
209
|
+
};
|
|
210
|
+
};
|
|
211
|
+
exports.hasSkippedMdatProcessing = hasSkippedMdatProcessing;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { VideoTrackColorParams } from '../../get-tracks';
|
|
2
|
+
import type { ColourSegment } from './segments/all-segments';
|
|
3
|
+
export declare const parseColorSegment: (colourSegment: ColourSegment) => VideoTrackColorParams;
|
|
4
|
+
export declare const makeMatroskaColorBytes: ({ transferCharacteristics, matrixCoefficients, primaries, fullRange, }: VideoTrackColorParams) => import("./segments/all-segments").BytesAndOffset;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeMatroskaColorBytes = exports.parseColorSegment = void 0;
|
|
4
|
+
const make_header_1 = require("./make-header");
|
|
5
|
+
const traversal_1 = require("./traversal");
|
|
6
|
+
const parseColorSegment = (colourSegment) => {
|
|
7
|
+
const transferCharacteristics = (0, traversal_1.getTransferCharacteristicsSegment)(colourSegment);
|
|
8
|
+
const matrixCoefficients = (0, traversal_1.getMatrixCoefficientsSegment)(colourSegment);
|
|
9
|
+
const primaries = (0, traversal_1.getPrimariesSegment)(colourSegment);
|
|
10
|
+
const range = (0, traversal_1.getRangeSegment)(colourSegment);
|
|
11
|
+
return {
|
|
12
|
+
transferCharacteristics: transferCharacteristics
|
|
13
|
+
? transferCharacteristics.value.value === 1
|
|
14
|
+
? 'bt709'
|
|
15
|
+
: transferCharacteristics.value.value === 6
|
|
16
|
+
? 'smpte170m'
|
|
17
|
+
: transferCharacteristics.value.value === 13
|
|
18
|
+
? 'iec61966-2-1'
|
|
19
|
+
: null
|
|
20
|
+
: null,
|
|
21
|
+
matrixCoefficients: matrixCoefficients
|
|
22
|
+
? matrixCoefficients.value.value === 1
|
|
23
|
+
? 'bt709'
|
|
24
|
+
: matrixCoefficients.value.value === 6
|
|
25
|
+
? 'smpte170m'
|
|
26
|
+
: matrixCoefficients.value.value === 5
|
|
27
|
+
? 'bt470bg'
|
|
28
|
+
: null
|
|
29
|
+
: null,
|
|
30
|
+
primaries: primaries
|
|
31
|
+
? primaries.value.value === 1
|
|
32
|
+
? 'bt709'
|
|
33
|
+
: primaries.value.value === 6
|
|
34
|
+
? 'smpte170m'
|
|
35
|
+
: primaries.value.value === 5
|
|
36
|
+
? 'bt470bg'
|
|
37
|
+
: null
|
|
38
|
+
: null,
|
|
39
|
+
fullRange: (transferCharacteristics === null || transferCharacteristics === void 0 ? void 0 : transferCharacteristics.value.value) && (matrixCoefficients === null || matrixCoefficients === void 0 ? void 0 : matrixCoefficients.value.value)
|
|
40
|
+
? null
|
|
41
|
+
: range
|
|
42
|
+
? Boolean(range === null || range === void 0 ? void 0 : range.value.value)
|
|
43
|
+
: null,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
exports.parseColorSegment = parseColorSegment;
|
|
47
|
+
const makeMatroskaColorBytes = ({ transferCharacteristics, matrixCoefficients, primaries, fullRange, }) => {
|
|
48
|
+
const rangeValue = transferCharacteristics && matrixCoefficients
|
|
49
|
+
? 3
|
|
50
|
+
: fullRange === true
|
|
51
|
+
? 2
|
|
52
|
+
: fullRange === false
|
|
53
|
+
? 1
|
|
54
|
+
: 0;
|
|
55
|
+
// https://datatracker.ietf.org/doc/draft-ietf-cellar-matroska/
|
|
56
|
+
// 5.1.4.1.28.27
|
|
57
|
+
const primariesValue = primaries === 'bt709'
|
|
58
|
+
? 1
|
|
59
|
+
: primaries === 'smpte170m'
|
|
60
|
+
? 6
|
|
61
|
+
: primaries === 'bt470bg'
|
|
62
|
+
? 5
|
|
63
|
+
: 2;
|
|
64
|
+
const transferChracteristicsValue = transferCharacteristics === 'bt709'
|
|
65
|
+
? 1
|
|
66
|
+
: transferCharacteristics === 'smpte170m'
|
|
67
|
+
? 6
|
|
68
|
+
: transferCharacteristics === 'iec61966-2-1'
|
|
69
|
+
? 13
|
|
70
|
+
: 2;
|
|
71
|
+
if (matrixCoefficients === 'rgb') {
|
|
72
|
+
throw new Error('Cannot encode Matroska in RGB');
|
|
73
|
+
}
|
|
74
|
+
const matrixCoefficientsValue = matrixCoefficients === 'bt709'
|
|
75
|
+
? 1
|
|
76
|
+
: matrixCoefficients === 'bt470bg'
|
|
77
|
+
? 5
|
|
78
|
+
: matrixCoefficients === 'smpte170m'
|
|
79
|
+
? 6
|
|
80
|
+
: 2;
|
|
81
|
+
return (0, make_header_1.makeMatroskaBytes)({
|
|
82
|
+
type: 'Colour',
|
|
83
|
+
minVintWidth: null,
|
|
84
|
+
value: [
|
|
85
|
+
{
|
|
86
|
+
type: 'TransferCharacteristics',
|
|
87
|
+
value: {
|
|
88
|
+
value: transferChracteristicsValue,
|
|
89
|
+
byteLength: null,
|
|
90
|
+
},
|
|
91
|
+
minVintWidth: null,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'MatrixCoefficients',
|
|
95
|
+
value: {
|
|
96
|
+
value: matrixCoefficientsValue,
|
|
97
|
+
byteLength: null,
|
|
98
|
+
},
|
|
99
|
+
minVintWidth: null,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'Primaries',
|
|
103
|
+
value: {
|
|
104
|
+
value: primariesValue,
|
|
105
|
+
byteLength: null,
|
|
106
|
+
},
|
|
107
|
+
minVintWidth: null,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'Range',
|
|
111
|
+
value: {
|
|
112
|
+
value: rangeValue,
|
|
113
|
+
byteLength: null,
|
|
114
|
+
},
|
|
115
|
+
minVintWidth: null,
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
exports.makeMatroskaColorBytes = makeMatroskaColorBytes;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAudioDescription = void 0;
|
|
4
4
|
const buffer_iterator_1 = require("../../buffer-iterator");
|
|
5
|
-
const traversal_1 = require("
|
|
5
|
+
const traversal_1 = require("./traversal");
|
|
6
6
|
const getAudioDescription = (track) => {
|
|
7
7
|
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
8
8
|
if (!codec || codec.value !== 'A_VORBIS') {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTracksFromMatroska = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const make_track_1 = require("./make-track");
|
|
5
|
+
const traversal_1 = require("./traversal");
|
|
6
6
|
const getTracksFromMatroska = (segment, timescale) => {
|
|
7
7
|
const tracksSegment = (0, traversal_1.getTracksSegment)(segment);
|
|
8
8
|
if (!tracksSegment) {
|
|
@@ -16,7 +16,7 @@ const getTracksFromMatroska = (segment, timescale) => {
|
|
|
16
16
|
if (trackEntrySegment.type !== 'TrackEntry') {
|
|
17
17
|
throw new Error('Expected track entry segment');
|
|
18
18
|
}
|
|
19
|
-
const track = (0,
|
|
19
|
+
const track = (0, make_track_1.getTrack)({
|
|
20
20
|
track: trackEntrySegment,
|
|
21
21
|
timescale,
|
|
22
22
|
});
|
|
@@ -10,7 +10,7 @@ const getSampleFromBlock = (ebml, parserContext, offset) => {
|
|
|
10
10
|
if (trackNumber === null) {
|
|
11
11
|
throw new Error('Not enough data to get track number, should not happen');
|
|
12
12
|
}
|
|
13
|
-
const timecodeRelativeToCluster = iterator.
|
|
13
|
+
const timecodeRelativeToCluster = iterator.getInt16();
|
|
14
14
|
const { keyframe } = (0, block_simple_block_flags_1.parseBlockFlags)(iterator, ebml.type === 'SimpleBlock'
|
|
15
15
|
? all_segments_1.matroskaElements.SimpleBlock
|
|
16
16
|
: all_segments_1.matroskaElements.Block);
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getTrack = void 0;
|
|
4
4
|
const buffer_iterator_1 = require("../../buffer-iterator");
|
|
5
5
|
const make_hvc1_codec_strings_1 = require("../../make-hvc1-codec-strings");
|
|
6
|
-
const traversal_1 = require("../../traversal");
|
|
7
6
|
const av1_codec_private_1 = require("./av1-codec-private");
|
|
8
7
|
const description_1 = require("./description");
|
|
9
8
|
const track_entry_1 = require("./segments/track-entry");
|
|
9
|
+
const traversal_1 = require("./traversal");
|
|
10
10
|
const getDescription = (track) => {
|
|
11
11
|
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
12
12
|
if (!codec) {
|
|
@@ -128,6 +128,7 @@ const getTrack = ({ timescale, track, }) => {
|
|
|
128
128
|
const displayHeight = (0, traversal_1.getDisplayHeightSegment)(track);
|
|
129
129
|
const displayWidth = (0, traversal_1.getDisplayWidthSegment)(track);
|
|
130
130
|
const codec = (0, traversal_1.getCodecSegment)(track);
|
|
131
|
+
const codecPrivate = (0, traversal_1.getPrivateData)(track);
|
|
131
132
|
if (!codec) {
|
|
132
133
|
return null;
|
|
133
134
|
}
|
|
@@ -160,11 +161,24 @@ const getTrack = ({ timescale, track, }) => {
|
|
|
160
161
|
: width.value.value,
|
|
161
162
|
rotation: 0,
|
|
162
163
|
trakBox: null,
|
|
164
|
+
codecPrivate,
|
|
165
|
+
// TODO: Parse colors
|
|
166
|
+
color: {
|
|
167
|
+
// TODO: Set transferCharacteristics
|
|
168
|
+
transferCharacteristics: null,
|
|
169
|
+
// TODO matrixCoefficients
|
|
170
|
+
matrixCoefficients: null,
|
|
171
|
+
// TODO primaries
|
|
172
|
+
primaries: null,
|
|
173
|
+
// TODO fullRange
|
|
174
|
+
fullRange: null,
|
|
175
|
+
},
|
|
163
176
|
};
|
|
164
177
|
}
|
|
165
178
|
if ((0, track_entry_1.trackTypeToString)(trackType.value.value) === 'audio') {
|
|
166
179
|
const sampleRate = (0, traversal_1.getSampleRate)(track);
|
|
167
180
|
const numberOfChannels = (0, traversal_1.getNumberOfChannels)(track);
|
|
181
|
+
const codecPrivate = (0, traversal_1.getPrivateData)(track);
|
|
168
182
|
if (sampleRate === null) {
|
|
169
183
|
throw new Error('Could not find sample rate or number of channels');
|
|
170
184
|
}
|
|
@@ -177,6 +191,7 @@ const getTrack = ({ timescale, track, }) => {
|
|
|
177
191
|
sampleRate,
|
|
178
192
|
description: (0, description_1.getAudioDescription)(track),
|
|
179
193
|
trakBox: null,
|
|
194
|
+
codecPrivate,
|
|
180
195
|
};
|
|
181
196
|
}
|
|
182
197
|
return null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AudioTrack, MediaParserAudioCodec, VideoTrack } from '../../get-tracks';
|
|
2
|
+
import type { TrackEntry } from './segments/all-segments';
|
|
3
|
+
export declare const getMatroskaAudioCodecWithoutConfigString: ({ track, }: {
|
|
4
|
+
track: TrackEntry;
|
|
5
|
+
}) => MediaParserAudioCodec;
|
|
6
|
+
export declare const getTrack: ({ timescale, track, }: {
|
|
7
|
+
timescale: number;
|
|
8
|
+
track: TrackEntry;
|
|
9
|
+
}) => VideoTrack | AudioTrack | null;
|