music-metadata 7.11.6 → 7.11.7
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/README.md +432 -432
- package/lib/ParserFactory.d.ts +49 -49
- package/lib/ParserFactory.js +251 -251
- package/lib/aiff/AiffParser.d.ts +15 -15
- package/lib/aiff/AiffParser.js +85 -85
- package/lib/aiff/AiffToken.d.ts +22 -22
- package/lib/aiff/AiffToken.js +43 -43
- package/lib/apev2/APEv2Parser.d.ts +30 -30
- package/lib/apev2/APEv2Parser.js +162 -162
- package/lib/apev2/APEv2TagMapper.d.ts +4 -4
- package/lib/apev2/APEv2TagMapper.js +86 -86
- package/lib/apev2/APEv2Token.d.ts +100 -100
- package/lib/apev2/APEv2Token.js +126 -126
- package/lib/asf/AsfObject.d.ts +319 -319
- package/lib/asf/AsfObject.js +384 -384
- package/lib/asf/AsfParser.d.ts +17 -17
- package/lib/asf/AsfParser.js +135 -135
- package/lib/asf/AsfTagMapper.d.ts +7 -7
- package/lib/asf/AsfTagMapper.js +95 -95
- package/lib/asf/AsfUtil.d.ts +13 -13
- package/lib/asf/AsfUtil.js +40 -40
- package/lib/asf/GUID.d.ts +86 -86
- package/lib/asf/GUID.js +123 -123
- package/lib/common/BasicParser.d.ts +17 -17
- package/lib/common/BasicParser.js +18 -18
- package/lib/common/CaseInsensitiveTagMap.d.ts +10 -10
- package/lib/common/CaseInsensitiveTagMap.js +21 -21
- package/lib/common/CombinedTagMapper.d.ts +19 -19
- package/lib/common/CombinedTagMapper.js +51 -51
- package/lib/common/FourCC.d.ts +6 -6
- package/lib/common/FourCC.js +28 -28
- package/lib/common/GenericTagMapper.d.ts +51 -51
- package/lib/common/GenericTagMapper.js +55 -55
- package/lib/common/GenericTagTypes.d.ts +33 -33
- package/lib/common/GenericTagTypes.js +131 -131
- package/lib/common/MetadataCollector.d.ts +76 -76
- package/lib/common/MetadataCollector.js +275 -275
- package/lib/common/RandomFileReader.d.ts +20 -20
- package/lib/common/RandomFileReader.js +37 -37
- package/lib/common/RandomUint8ArrayReader.d.ts +18 -18
- package/lib/common/RandomUint8ArrayReader.js +25 -25
- package/lib/common/Util.d.ts +58 -57
- package/lib/common/Util.js +162 -169
- package/lib/core.d.ts +48 -48
- package/lib/core.js +90 -90
- package/lib/dsdiff/DsdiffParser.d.ts +14 -14
- package/lib/dsdiff/DsdiffParser.js +143 -143
- package/lib/dsdiff/DsdiffToken.d.ts +9 -9
- package/lib/dsdiff/DsdiffToken.js +21 -21
- package/lib/dsf/DsfChunk.d.ts +86 -86
- package/lib/dsf/DsfChunk.js +54 -54
- package/lib/dsf/DsfParser.d.ts +9 -9
- package/lib/dsf/DsfParser.js +56 -56
- package/lib/flac/FlacParser.d.ts +28 -28
- package/lib/flac/FlacParser.js +175 -175
- package/lib/id3v1/ID3v1Parser.d.ts +13 -13
- package/lib/id3v1/ID3v1Parser.js +134 -134
- package/lib/id3v1/ID3v1TagMap.d.ts +4 -4
- package/lib/id3v1/ID3v1TagMap.js +22 -22
- package/lib/id3v2/AbstractID3Parser.d.ts +17 -17
- package/lib/id3v2/AbstractID3Parser.js +60 -60
- package/lib/id3v2/FrameParser.d.ts +32 -32
- package/lib/id3v2/FrameParser.js +329 -323
- package/lib/id3v2/ID3v22TagMapper.d.ts +9 -9
- package/lib/id3v2/ID3v22TagMapper.js +55 -55
- package/lib/id3v2/ID3v24TagMapper.d.ts +14 -14
- package/lib/id3v2/ID3v24TagMapper.js +193 -193
- package/lib/id3v2/ID3v2Parser.d.ts +29 -29
- package/lib/id3v2/ID3v2Parser.js +194 -194
- package/lib/id3v2/ID3v2Token.d.ts +73 -73
- package/lib/id3v2/ID3v2Token.js +106 -106
- package/lib/iff/index.d.ts +33 -33
- package/lib/iff/index.js +19 -19
- package/lib/index.d.ts +45 -45
- package/lib/index.js +74 -74
- package/lib/lyrics3/Lyrics3.d.ts +3 -3
- package/lib/lyrics3/Lyrics3.js +17 -17
- package/lib/matroska/MatroskaDtd.d.ts +8 -8
- package/lib/matroska/MatroskaDtd.js +279 -279
- package/lib/matroska/MatroskaParser.d.ts +37 -37
- package/lib/matroska/MatroskaParser.js +235 -235
- package/lib/matroska/MatroskaTagMapper.d.ts +4 -4
- package/lib/matroska/MatroskaTagMapper.js +35 -35
- package/lib/matroska/types.d.ts +175 -175
- package/lib/matroska/types.js +32 -32
- package/lib/mp4/Atom.d.ts +16 -16
- package/lib/mp4/Atom.js +70 -70
- package/lib/mp4/AtomToken.d.ts +395 -395
- package/lib/mp4/AtomToken.js +406 -406
- package/lib/mp4/MP4Parser.d.ts +30 -30
- package/lib/mp4/MP4Parser.js +511 -511
- package/lib/mp4/MP4TagMapper.d.ts +5 -5
- package/lib/mp4/MP4TagMapper.js +115 -115
- package/lib/mpeg/ExtendedLameHeader.d.ts +27 -27
- package/lib/mpeg/ExtendedLameHeader.js +31 -31
- package/lib/mpeg/MpegParser.d.ts +49 -49
- package/lib/mpeg/MpegParser.js +529 -529
- package/lib/mpeg/ReplayGainDataFormat.d.ts +55 -55
- package/lib/mpeg/ReplayGainDataFormat.js +69 -69
- package/lib/mpeg/XingTag.d.ts +45 -45
- package/lib/mpeg/XingTag.js +69 -69
- package/lib/musepack/index.d.ts +5 -5
- package/lib/musepack/index.js +32 -32
- package/lib/musepack/sv7/BitReader.d.ts +13 -13
- package/lib/musepack/sv7/BitReader.js +54 -54
- package/lib/musepack/sv7/MpcSv7Parser.d.ts +8 -8
- package/lib/musepack/sv7/MpcSv7Parser.js +46 -46
- package/lib/musepack/sv7/StreamVersion7.d.ts +28 -28
- package/lib/musepack/sv7/StreamVersion7.js +41 -41
- package/lib/musepack/sv8/MpcSv8Parser.d.ts +6 -6
- package/lib/musepack/sv8/MpcSv8Parser.js +55 -55
- package/lib/musepack/sv8/StreamVersion8.d.ts +40 -40
- package/lib/musepack/sv8/StreamVersion8.js +80 -80
- package/lib/ogg/Ogg.d.ts +72 -72
- package/lib/ogg/Ogg.js +2 -2
- package/lib/ogg/OggParser.d.ts +23 -23
- package/lib/ogg/OggParser.js +126 -126
- package/lib/ogg/opus/Opus.d.ts +48 -48
- package/lib/ogg/opus/Opus.js +28 -28
- package/lib/ogg/opus/OpusParser.d.ts +25 -25
- package/lib/ogg/opus/OpusParser.js +56 -56
- package/lib/ogg/speex/Speex.d.ts +36 -36
- package/lib/ogg/speex/Speex.js +31 -31
- package/lib/ogg/speex/SpeexParser.d.ts +22 -22
- package/lib/ogg/speex/SpeexParser.js +35 -35
- package/lib/ogg/theora/Theora.d.ts +20 -20
- package/lib/ogg/theora/Theora.js +23 -23
- package/lib/ogg/theora/TheoraParser.d.ts +28 -28
- package/lib/ogg/theora/TheoraParser.js +44 -44
- package/lib/ogg/vorbis/Vorbis.d.ts +79 -79
- package/lib/ogg/vorbis/Vorbis.js +78 -78
- package/lib/ogg/vorbis/VorbisDecoder.d.ts +12 -12
- package/lib/ogg/vorbis/VorbisDecoder.js +32 -32
- package/lib/ogg/vorbis/VorbisParser.d.ts +36 -36
- package/lib/ogg/vorbis/VorbisParser.js +128 -128
- package/lib/ogg/vorbis/VorbisTagMapper.d.ts +7 -7
- package/lib/ogg/vorbis/VorbisTagMapper.js +132 -132
- package/lib/riff/RiffChunk.d.ts +16 -16
- package/lib/riff/RiffChunk.js +32 -32
- package/lib/riff/RiffInfoTagMap.d.ts +10 -10
- package/lib/riff/RiffInfoTagMap.js +37 -37
- package/lib/type.d.ts +599 -599
- package/lib/type.js +13 -13
- package/lib/wav/WaveChunk.d.ts +64 -64
- package/lib/wav/WaveChunk.js +65 -65
- package/lib/wav/WaveParser.d.ts +24 -24
- package/lib/wav/WaveParser.js +144 -144
- package/lib/wavpack/WavPackParser.d.ts +14 -14
- package/lib/wavpack/WavPackParser.js +105 -105
- package/lib/wavpack/WavPackToken.d.ts +64 -64
- package/lib/wavpack/WavPackToken.js +76 -76
- package/package.json +142 -142
package/lib/matroska/types.d.ts
CHANGED
|
@@ -1,175 +1,175 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
export interface IHeader {
|
|
3
|
-
id: number;
|
|
4
|
-
len: number;
|
|
5
|
-
}
|
|
6
|
-
export declare enum DataType {
|
|
7
|
-
string = 0,
|
|
8
|
-
uint = 1,
|
|
9
|
-
uid = 2,
|
|
10
|
-
bool = 3,
|
|
11
|
-
binary = 4,
|
|
12
|
-
float = 5
|
|
13
|
-
}
|
|
14
|
-
export interface IElementType<T> {
|
|
15
|
-
readonly name: string;
|
|
16
|
-
readonly value?: DataType;
|
|
17
|
-
readonly container?: IContainerType;
|
|
18
|
-
readonly multiple?: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface IContainerType {
|
|
21
|
-
[id: number]: IElementType<string | number | boolean | Buffer>;
|
|
22
|
-
}
|
|
23
|
-
export interface ITree {
|
|
24
|
-
[name: string]: string | number | boolean | Buffer | ITree | ITree[];
|
|
25
|
-
}
|
|
26
|
-
export interface ISeekHead {
|
|
27
|
-
id?: Buffer;
|
|
28
|
-
position?: number;
|
|
29
|
-
}
|
|
30
|
-
export interface IMetaSeekInformation {
|
|
31
|
-
seekHeads: ISeekHead[];
|
|
32
|
-
}
|
|
33
|
-
export interface ISegmentInformation {
|
|
34
|
-
uid?: Buffer;
|
|
35
|
-
timecodeScale?: number;
|
|
36
|
-
duration?: number;
|
|
37
|
-
dateUTC?: number;
|
|
38
|
-
title?: string;
|
|
39
|
-
muxingApp?: string;
|
|
40
|
-
writingApp?: string;
|
|
41
|
-
}
|
|
42
|
-
export interface ITrackEntry {
|
|
43
|
-
uid?: Buffer;
|
|
44
|
-
trackNumber?: number;
|
|
45
|
-
trackType?: TrackType;
|
|
46
|
-
audio?: ITrackAudio;
|
|
47
|
-
video?: ITrackVideo;
|
|
48
|
-
flagEnabled?: boolean;
|
|
49
|
-
flagDefault?: boolean;
|
|
50
|
-
flagLacing?: boolean;
|
|
51
|
-
defaultDuration?: number;
|
|
52
|
-
trackTimecodeScale?: number;
|
|
53
|
-
name?: string;
|
|
54
|
-
language?: string;
|
|
55
|
-
codecID?: string;
|
|
56
|
-
codecPrivate?: Buffer;
|
|
57
|
-
codecName?: string;
|
|
58
|
-
codecSettings?: string;
|
|
59
|
-
codecInfoUrl?: string;
|
|
60
|
-
codecDownloadUrl?: string;
|
|
61
|
-
codecDecodeAll?: string;
|
|
62
|
-
trackOverlay?: string;
|
|
63
|
-
}
|
|
64
|
-
export interface ITrackVideo {
|
|
65
|
-
flagInterlaced?: boolean;
|
|
66
|
-
stereoMode?: number;
|
|
67
|
-
pixelWidth?: number;
|
|
68
|
-
pixelHeight?: number;
|
|
69
|
-
displayWidth?: number;
|
|
70
|
-
displayHeight?: number;
|
|
71
|
-
displayUnit?: number;
|
|
72
|
-
aspectRatioType?: number;
|
|
73
|
-
colourSpace?: Buffer;
|
|
74
|
-
gammaValue?: number;
|
|
75
|
-
}
|
|
76
|
-
export interface ITrackAudio {
|
|
77
|
-
samplingFrequency?: number;
|
|
78
|
-
outputSamplingFrequency?: number;
|
|
79
|
-
channels?: number;
|
|
80
|
-
channelPositions?: Buffer;
|
|
81
|
-
bitDepth?: number;
|
|
82
|
-
}
|
|
83
|
-
export interface ICuePoint {
|
|
84
|
-
cueTime?: number;
|
|
85
|
-
cueTrackPositions: ICueTrackPosition[];
|
|
86
|
-
}
|
|
87
|
-
export interface ICueTrackPosition {
|
|
88
|
-
cueTrack?: number;
|
|
89
|
-
cueClusterPosition?: number;
|
|
90
|
-
cueBlockNumber?: number;
|
|
91
|
-
cueCodecState?: number;
|
|
92
|
-
cueReference?: ICueReference;
|
|
93
|
-
}
|
|
94
|
-
export interface ICueReference {
|
|
95
|
-
cueRefTime?: number;
|
|
96
|
-
cueRefCluster?: number;
|
|
97
|
-
cueRefNumber?: number;
|
|
98
|
-
cueRefCodecState?: number;
|
|
99
|
-
}
|
|
100
|
-
export interface ISimpleTag {
|
|
101
|
-
name?: string;
|
|
102
|
-
string?: string;
|
|
103
|
-
binary?: Buffer;
|
|
104
|
-
language?: string;
|
|
105
|
-
default?: boolean;
|
|
106
|
-
}
|
|
107
|
-
export declare enum TargetType {
|
|
108
|
-
shot = 10,
|
|
109
|
-
scene = 20,
|
|
110
|
-
track = 30,
|
|
111
|
-
part = 40,
|
|
112
|
-
album = 50,
|
|
113
|
-
edition = 60,
|
|
114
|
-
collection = 70
|
|
115
|
-
}
|
|
116
|
-
export declare enum TrackType {
|
|
117
|
-
video = 1,
|
|
118
|
-
audio = 2,
|
|
119
|
-
complex = 3,
|
|
120
|
-
logo = 4,
|
|
121
|
-
subtitle = 17,
|
|
122
|
-
button = 18,
|
|
123
|
-
control = 32
|
|
124
|
-
}
|
|
125
|
-
export interface ITarget {
|
|
126
|
-
trackUID?: Buffer;
|
|
127
|
-
chapterUID?: Buffer;
|
|
128
|
-
attachmentUID?: Buffer;
|
|
129
|
-
targetTypeValue?: TargetType;
|
|
130
|
-
targetType?: string;
|
|
131
|
-
}
|
|
132
|
-
export interface ITag {
|
|
133
|
-
target: ITarget;
|
|
134
|
-
simpleTags: ISimpleTag[];
|
|
135
|
-
}
|
|
136
|
-
export interface ITags {
|
|
137
|
-
tag: ITag[];
|
|
138
|
-
}
|
|
139
|
-
export interface ITrackElement {
|
|
140
|
-
entries?: ITrackEntry[];
|
|
141
|
-
}
|
|
142
|
-
export interface IAttachmedFile {
|
|
143
|
-
description?: string;
|
|
144
|
-
name: string;
|
|
145
|
-
mimeType: string;
|
|
146
|
-
data: Buffer;
|
|
147
|
-
uid: string;
|
|
148
|
-
}
|
|
149
|
-
export interface IAttachments {
|
|
150
|
-
attachedFiles?: IAttachmedFile[];
|
|
151
|
-
}
|
|
152
|
-
export interface IMatroskaSegment {
|
|
153
|
-
metaSeekInfo?: IMetaSeekInformation;
|
|
154
|
-
seekHeads?: ISeekHead[];
|
|
155
|
-
info?: ISegmentInformation;
|
|
156
|
-
tracks?: ITrackElement;
|
|
157
|
-
tags?: ITags;
|
|
158
|
-
cues?: ICuePoint[];
|
|
159
|
-
attachments?: IAttachments;
|
|
160
|
-
}
|
|
161
|
-
export interface IEbmlElements {
|
|
162
|
-
version?: number;
|
|
163
|
-
readVersion?: number;
|
|
164
|
-
maxIDWidth?: number;
|
|
165
|
-
maxSizeWidth?: number;
|
|
166
|
-
docType?: string;
|
|
167
|
-
docTypeVersion?: number;
|
|
168
|
-
docTypeReadVersion?: number;
|
|
169
|
-
}
|
|
170
|
-
export interface IEbmlDoc {
|
|
171
|
-
ebml: IEbmlElements;
|
|
172
|
-
}
|
|
173
|
-
export interface IMatroskaDoc extends IEbmlDoc {
|
|
174
|
-
segment: IMatroskaSegment;
|
|
175
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export interface IHeader {
|
|
3
|
+
id: number;
|
|
4
|
+
len: number;
|
|
5
|
+
}
|
|
6
|
+
export declare enum DataType {
|
|
7
|
+
string = 0,
|
|
8
|
+
uint = 1,
|
|
9
|
+
uid = 2,
|
|
10
|
+
bool = 3,
|
|
11
|
+
binary = 4,
|
|
12
|
+
float = 5
|
|
13
|
+
}
|
|
14
|
+
export interface IElementType<T> {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly value?: DataType;
|
|
17
|
+
readonly container?: IContainerType;
|
|
18
|
+
readonly multiple?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface IContainerType {
|
|
21
|
+
[id: number]: IElementType<string | number | boolean | Buffer>;
|
|
22
|
+
}
|
|
23
|
+
export interface ITree {
|
|
24
|
+
[name: string]: string | number | boolean | Buffer | ITree | ITree[];
|
|
25
|
+
}
|
|
26
|
+
export interface ISeekHead {
|
|
27
|
+
id?: Buffer;
|
|
28
|
+
position?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface IMetaSeekInformation {
|
|
31
|
+
seekHeads: ISeekHead[];
|
|
32
|
+
}
|
|
33
|
+
export interface ISegmentInformation {
|
|
34
|
+
uid?: Buffer;
|
|
35
|
+
timecodeScale?: number;
|
|
36
|
+
duration?: number;
|
|
37
|
+
dateUTC?: number;
|
|
38
|
+
title?: string;
|
|
39
|
+
muxingApp?: string;
|
|
40
|
+
writingApp?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ITrackEntry {
|
|
43
|
+
uid?: Buffer;
|
|
44
|
+
trackNumber?: number;
|
|
45
|
+
trackType?: TrackType;
|
|
46
|
+
audio?: ITrackAudio;
|
|
47
|
+
video?: ITrackVideo;
|
|
48
|
+
flagEnabled?: boolean;
|
|
49
|
+
flagDefault?: boolean;
|
|
50
|
+
flagLacing?: boolean;
|
|
51
|
+
defaultDuration?: number;
|
|
52
|
+
trackTimecodeScale?: number;
|
|
53
|
+
name?: string;
|
|
54
|
+
language?: string;
|
|
55
|
+
codecID?: string;
|
|
56
|
+
codecPrivate?: Buffer;
|
|
57
|
+
codecName?: string;
|
|
58
|
+
codecSettings?: string;
|
|
59
|
+
codecInfoUrl?: string;
|
|
60
|
+
codecDownloadUrl?: string;
|
|
61
|
+
codecDecodeAll?: string;
|
|
62
|
+
trackOverlay?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface ITrackVideo {
|
|
65
|
+
flagInterlaced?: boolean;
|
|
66
|
+
stereoMode?: number;
|
|
67
|
+
pixelWidth?: number;
|
|
68
|
+
pixelHeight?: number;
|
|
69
|
+
displayWidth?: number;
|
|
70
|
+
displayHeight?: number;
|
|
71
|
+
displayUnit?: number;
|
|
72
|
+
aspectRatioType?: number;
|
|
73
|
+
colourSpace?: Buffer;
|
|
74
|
+
gammaValue?: number;
|
|
75
|
+
}
|
|
76
|
+
export interface ITrackAudio {
|
|
77
|
+
samplingFrequency?: number;
|
|
78
|
+
outputSamplingFrequency?: number;
|
|
79
|
+
channels?: number;
|
|
80
|
+
channelPositions?: Buffer;
|
|
81
|
+
bitDepth?: number;
|
|
82
|
+
}
|
|
83
|
+
export interface ICuePoint {
|
|
84
|
+
cueTime?: number;
|
|
85
|
+
cueTrackPositions: ICueTrackPosition[];
|
|
86
|
+
}
|
|
87
|
+
export interface ICueTrackPosition {
|
|
88
|
+
cueTrack?: number;
|
|
89
|
+
cueClusterPosition?: number;
|
|
90
|
+
cueBlockNumber?: number;
|
|
91
|
+
cueCodecState?: number;
|
|
92
|
+
cueReference?: ICueReference;
|
|
93
|
+
}
|
|
94
|
+
export interface ICueReference {
|
|
95
|
+
cueRefTime?: number;
|
|
96
|
+
cueRefCluster?: number;
|
|
97
|
+
cueRefNumber?: number;
|
|
98
|
+
cueRefCodecState?: number;
|
|
99
|
+
}
|
|
100
|
+
export interface ISimpleTag {
|
|
101
|
+
name?: string;
|
|
102
|
+
string?: string;
|
|
103
|
+
binary?: Buffer;
|
|
104
|
+
language?: string;
|
|
105
|
+
default?: boolean;
|
|
106
|
+
}
|
|
107
|
+
export declare enum TargetType {
|
|
108
|
+
shot = 10,
|
|
109
|
+
scene = 20,
|
|
110
|
+
track = 30,
|
|
111
|
+
part = 40,
|
|
112
|
+
album = 50,
|
|
113
|
+
edition = 60,
|
|
114
|
+
collection = 70
|
|
115
|
+
}
|
|
116
|
+
export declare enum TrackType {
|
|
117
|
+
video = 1,
|
|
118
|
+
audio = 2,
|
|
119
|
+
complex = 3,
|
|
120
|
+
logo = 4,
|
|
121
|
+
subtitle = 17,
|
|
122
|
+
button = 18,
|
|
123
|
+
control = 32
|
|
124
|
+
}
|
|
125
|
+
export interface ITarget {
|
|
126
|
+
trackUID?: Buffer;
|
|
127
|
+
chapterUID?: Buffer;
|
|
128
|
+
attachmentUID?: Buffer;
|
|
129
|
+
targetTypeValue?: TargetType;
|
|
130
|
+
targetType?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface ITag {
|
|
133
|
+
target: ITarget;
|
|
134
|
+
simpleTags: ISimpleTag[];
|
|
135
|
+
}
|
|
136
|
+
export interface ITags {
|
|
137
|
+
tag: ITag[];
|
|
138
|
+
}
|
|
139
|
+
export interface ITrackElement {
|
|
140
|
+
entries?: ITrackEntry[];
|
|
141
|
+
}
|
|
142
|
+
export interface IAttachmedFile {
|
|
143
|
+
description?: string;
|
|
144
|
+
name: string;
|
|
145
|
+
mimeType: string;
|
|
146
|
+
data: Buffer;
|
|
147
|
+
uid: string;
|
|
148
|
+
}
|
|
149
|
+
export interface IAttachments {
|
|
150
|
+
attachedFiles?: IAttachmedFile[];
|
|
151
|
+
}
|
|
152
|
+
export interface IMatroskaSegment {
|
|
153
|
+
metaSeekInfo?: IMetaSeekInformation;
|
|
154
|
+
seekHeads?: ISeekHead[];
|
|
155
|
+
info?: ISegmentInformation;
|
|
156
|
+
tracks?: ITrackElement;
|
|
157
|
+
tags?: ITags;
|
|
158
|
+
cues?: ICuePoint[];
|
|
159
|
+
attachments?: IAttachments;
|
|
160
|
+
}
|
|
161
|
+
export interface IEbmlElements {
|
|
162
|
+
version?: number;
|
|
163
|
+
readVersion?: number;
|
|
164
|
+
maxIDWidth?: number;
|
|
165
|
+
maxSizeWidth?: number;
|
|
166
|
+
docType?: string;
|
|
167
|
+
docTypeVersion?: number;
|
|
168
|
+
docTypeReadVersion?: number;
|
|
169
|
+
}
|
|
170
|
+
export interface IEbmlDoc {
|
|
171
|
+
ebml: IEbmlElements;
|
|
172
|
+
}
|
|
173
|
+
export interface IMatroskaDoc extends IEbmlDoc {
|
|
174
|
+
segment: IMatroskaSegment;
|
|
175
|
+
}
|
package/lib/matroska/types.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TrackType = exports.TargetType = exports.DataType = void 0;
|
|
4
|
-
var DataType;
|
|
5
|
-
(function (DataType) {
|
|
6
|
-
DataType[DataType["string"] = 0] = "string";
|
|
7
|
-
DataType[DataType["uint"] = 1] = "uint";
|
|
8
|
-
DataType[DataType["uid"] = 2] = "uid";
|
|
9
|
-
DataType[DataType["bool"] = 3] = "bool";
|
|
10
|
-
DataType[DataType["binary"] = 4] = "binary";
|
|
11
|
-
DataType[DataType["float"] = 5] = "float";
|
|
12
|
-
})(DataType = exports.DataType || (exports.DataType = {}));
|
|
13
|
-
var TargetType;
|
|
14
|
-
(function (TargetType) {
|
|
15
|
-
TargetType[TargetType["shot"] = 10] = "shot";
|
|
16
|
-
TargetType[TargetType["scene"] = 20] = "scene";
|
|
17
|
-
TargetType[TargetType["track"] = 30] = "track";
|
|
18
|
-
TargetType[TargetType["part"] = 40] = "part";
|
|
19
|
-
TargetType[TargetType["album"] = 50] = "album";
|
|
20
|
-
TargetType[TargetType["edition"] = 60] = "edition";
|
|
21
|
-
TargetType[TargetType["collection"] = 70] = "collection";
|
|
22
|
-
})(TargetType = exports.TargetType || (exports.TargetType = {}));
|
|
23
|
-
var TrackType;
|
|
24
|
-
(function (TrackType) {
|
|
25
|
-
TrackType[TrackType["video"] = 1] = "video";
|
|
26
|
-
TrackType[TrackType["audio"] = 2] = "audio";
|
|
27
|
-
TrackType[TrackType["complex"] = 3] = "complex";
|
|
28
|
-
TrackType[TrackType["logo"] = 4] = "logo";
|
|
29
|
-
TrackType[TrackType["subtitle"] = 17] = "subtitle";
|
|
30
|
-
TrackType[TrackType["button"] = 18] = "button";
|
|
31
|
-
TrackType[TrackType["control"] = 32] = "control";
|
|
32
|
-
})(TrackType = exports.TrackType || (exports.TrackType = {}));
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TrackType = exports.TargetType = exports.DataType = void 0;
|
|
4
|
+
var DataType;
|
|
5
|
+
(function (DataType) {
|
|
6
|
+
DataType[DataType["string"] = 0] = "string";
|
|
7
|
+
DataType[DataType["uint"] = 1] = "uint";
|
|
8
|
+
DataType[DataType["uid"] = 2] = "uid";
|
|
9
|
+
DataType[DataType["bool"] = 3] = "bool";
|
|
10
|
+
DataType[DataType["binary"] = 4] = "binary";
|
|
11
|
+
DataType[DataType["float"] = 5] = "float";
|
|
12
|
+
})(DataType = exports.DataType || (exports.DataType = {}));
|
|
13
|
+
var TargetType;
|
|
14
|
+
(function (TargetType) {
|
|
15
|
+
TargetType[TargetType["shot"] = 10] = "shot";
|
|
16
|
+
TargetType[TargetType["scene"] = 20] = "scene";
|
|
17
|
+
TargetType[TargetType["track"] = 30] = "track";
|
|
18
|
+
TargetType[TargetType["part"] = 40] = "part";
|
|
19
|
+
TargetType[TargetType["album"] = 50] = "album";
|
|
20
|
+
TargetType[TargetType["edition"] = 60] = "edition";
|
|
21
|
+
TargetType[TargetType["collection"] = 70] = "collection";
|
|
22
|
+
})(TargetType = exports.TargetType || (exports.TargetType = {}));
|
|
23
|
+
var TrackType;
|
|
24
|
+
(function (TrackType) {
|
|
25
|
+
TrackType[TrackType["video"] = 1] = "video";
|
|
26
|
+
TrackType[TrackType["audio"] = 2] = "audio";
|
|
27
|
+
TrackType[TrackType["complex"] = 3] = "complex";
|
|
28
|
+
TrackType[TrackType["logo"] = 4] = "logo";
|
|
29
|
+
TrackType[TrackType["subtitle"] = 17] = "subtitle";
|
|
30
|
+
TrackType[TrackType["button"] = 18] = "button";
|
|
31
|
+
TrackType[TrackType["control"] = 32] = "control";
|
|
32
|
+
})(TrackType = exports.TrackType || (exports.TrackType = {}));
|
package/lib/mp4/Atom.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { ITokenizer } from 'strtok3/lib/core';
|
|
2
|
-
import * as AtomToken from './AtomToken';
|
|
3
|
-
export declare type AtomDataHandler = (atom: Atom, remaining: number) => Promise<void>;
|
|
4
|
-
export declare class Atom {
|
|
5
|
-
readonly header: AtomToken.IAtomHeader;
|
|
6
|
-
extended: boolean;
|
|
7
|
-
readonly parent: Atom;
|
|
8
|
-
static readAtom(tokenizer: ITokenizer, dataHandler: AtomDataHandler, parent: Atom, remaining: number): Promise<Atom>;
|
|
9
|
-
readonly children: Atom[];
|
|
10
|
-
readonly atomPath: string;
|
|
11
|
-
constructor(header: AtomToken.IAtomHeader, extended: boolean, parent: Atom);
|
|
12
|
-
getHeaderLength(): number;
|
|
13
|
-
getPayloadLength(remaining: number): number;
|
|
14
|
-
readAtoms(tokenizer: ITokenizer, dataHandler: AtomDataHandler, size: number): Promise<void>;
|
|
15
|
-
private readData;
|
|
16
|
-
}
|
|
1
|
+
import { ITokenizer } from 'strtok3/lib/core';
|
|
2
|
+
import * as AtomToken from './AtomToken';
|
|
3
|
+
export declare type AtomDataHandler = (atom: Atom, remaining: number) => Promise<void>;
|
|
4
|
+
export declare class Atom {
|
|
5
|
+
readonly header: AtomToken.IAtomHeader;
|
|
6
|
+
extended: boolean;
|
|
7
|
+
readonly parent: Atom;
|
|
8
|
+
static readAtom(tokenizer: ITokenizer, dataHandler: AtomDataHandler, parent: Atom, remaining: number): Promise<Atom>;
|
|
9
|
+
readonly children: Atom[];
|
|
10
|
+
readonly atomPath: string;
|
|
11
|
+
constructor(header: AtomToken.IAtomHeader, extended: boolean, parent: Atom);
|
|
12
|
+
getHeaderLength(): number;
|
|
13
|
+
getPayloadLength(remaining: number): number;
|
|
14
|
+
readAtoms(tokenizer: ITokenizer, dataHandler: AtomDataHandler, size: number): Promise<void>;
|
|
15
|
+
private readData;
|
|
16
|
+
}
|
package/lib/mp4/Atom.js
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Atom = void 0;
|
|
4
|
-
const initDebug = require("debug");
|
|
5
|
-
const AtomToken = require("./AtomToken");
|
|
6
|
-
const debug = initDebug('music-metadata:parser:MP4:Atom');
|
|
7
|
-
class Atom {
|
|
8
|
-
constructor(header, extended, parent) {
|
|
9
|
-
this.header = header;
|
|
10
|
-
this.extended = extended;
|
|
11
|
-
this.parent = parent;
|
|
12
|
-
this.children = [];
|
|
13
|
-
this.atomPath = (this.parent ? this.parent.atomPath + '.' : '') + this.header.name;
|
|
14
|
-
}
|
|
15
|
-
static async readAtom(tokenizer, dataHandler, parent, remaining) {
|
|
16
|
-
// Parse atom header
|
|
17
|
-
const offset = tokenizer.position;
|
|
18
|
-
// debug(`Reading next token on offset=${offset}...`); // buf.toString('ascii')
|
|
19
|
-
const header = await tokenizer.readToken(AtomToken.Header);
|
|
20
|
-
const extended = header.length === BigInt(1);
|
|
21
|
-
if (extended) {
|
|
22
|
-
header.length = await tokenizer.readToken(AtomToken.ExtendedSize);
|
|
23
|
-
}
|
|
24
|
-
const atomBean = new Atom(header, header.length === BigInt(1), parent);
|
|
25
|
-
const payloadLength = atomBean.getPayloadLength(remaining);
|
|
26
|
-
debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); // buf.toString('ascii')
|
|
27
|
-
await atomBean.readData(tokenizer, dataHandler, payloadLength);
|
|
28
|
-
return atomBean;
|
|
29
|
-
}
|
|
30
|
-
getHeaderLength() {
|
|
31
|
-
return this.extended ? 16 : 8;
|
|
32
|
-
}
|
|
33
|
-
getPayloadLength(remaining) {
|
|
34
|
-
return (this.header.length === BigInt(0) ? remaining : Number(this.header.length)) - this.getHeaderLength();
|
|
35
|
-
}
|
|
36
|
-
async readAtoms(tokenizer, dataHandler, size) {
|
|
37
|
-
while (size > 0) {
|
|
38
|
-
const atomBean = await Atom.readAtom(tokenizer, dataHandler, this, size);
|
|
39
|
-
this.children.push(atomBean);
|
|
40
|
-
size -= atomBean.header.length === BigInt(0) ? size : Number(atomBean.header.length);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
async readData(tokenizer, dataHandler, remaining) {
|
|
44
|
-
switch (this.header.name) {
|
|
45
|
-
// "Container" atoms, contains nested atoms
|
|
46
|
-
case 'moov': // The Movie Atom: contains other atoms
|
|
47
|
-
case 'udta': // User defined atom
|
|
48
|
-
case 'trak':
|
|
49
|
-
case 'mdia': // Media atom
|
|
50
|
-
case 'minf': // Media Information Atom
|
|
51
|
-
case 'stbl': // The Sample Table Atom
|
|
52
|
-
case '<id>':
|
|
53
|
-
case 'ilst':
|
|
54
|
-
case 'tref':
|
|
55
|
-
return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining));
|
|
56
|
-
case 'meta': // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8
|
|
57
|
-
// meta has 4 bytes of padding, ignore
|
|
58
|
-
await tokenizer.ignore(4);
|
|
59
|
-
return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining) - 4);
|
|
60
|
-
case 'mdhd': // Media header atom
|
|
61
|
-
case 'mvhd': // 'movie' => 'mvhd': movie header atom; child of Movie Atom
|
|
62
|
-
case 'tkhd':
|
|
63
|
-
case 'stsz':
|
|
64
|
-
case 'mdat':
|
|
65
|
-
default:
|
|
66
|
-
return dataHandler(this, remaining);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.Atom = Atom;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Atom = void 0;
|
|
4
|
+
const initDebug = require("debug");
|
|
5
|
+
const AtomToken = require("./AtomToken");
|
|
6
|
+
const debug = initDebug('music-metadata:parser:MP4:Atom');
|
|
7
|
+
class Atom {
|
|
8
|
+
constructor(header, extended, parent) {
|
|
9
|
+
this.header = header;
|
|
10
|
+
this.extended = extended;
|
|
11
|
+
this.parent = parent;
|
|
12
|
+
this.children = [];
|
|
13
|
+
this.atomPath = (this.parent ? this.parent.atomPath + '.' : '') + this.header.name;
|
|
14
|
+
}
|
|
15
|
+
static async readAtom(tokenizer, dataHandler, parent, remaining) {
|
|
16
|
+
// Parse atom header
|
|
17
|
+
const offset = tokenizer.position;
|
|
18
|
+
// debug(`Reading next token on offset=${offset}...`); // buf.toString('ascii')
|
|
19
|
+
const header = await tokenizer.readToken(AtomToken.Header);
|
|
20
|
+
const extended = header.length === BigInt(1);
|
|
21
|
+
if (extended) {
|
|
22
|
+
header.length = await tokenizer.readToken(AtomToken.ExtendedSize);
|
|
23
|
+
}
|
|
24
|
+
const atomBean = new Atom(header, header.length === BigInt(1), parent);
|
|
25
|
+
const payloadLength = atomBean.getPayloadLength(remaining);
|
|
26
|
+
debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); // buf.toString('ascii')
|
|
27
|
+
await atomBean.readData(tokenizer, dataHandler, payloadLength);
|
|
28
|
+
return atomBean;
|
|
29
|
+
}
|
|
30
|
+
getHeaderLength() {
|
|
31
|
+
return this.extended ? 16 : 8;
|
|
32
|
+
}
|
|
33
|
+
getPayloadLength(remaining) {
|
|
34
|
+
return (this.header.length === BigInt(0) ? remaining : Number(this.header.length)) - this.getHeaderLength();
|
|
35
|
+
}
|
|
36
|
+
async readAtoms(tokenizer, dataHandler, size) {
|
|
37
|
+
while (size > 0) {
|
|
38
|
+
const atomBean = await Atom.readAtom(tokenizer, dataHandler, this, size);
|
|
39
|
+
this.children.push(atomBean);
|
|
40
|
+
size -= atomBean.header.length === BigInt(0) ? size : Number(atomBean.header.length);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async readData(tokenizer, dataHandler, remaining) {
|
|
44
|
+
switch (this.header.name) {
|
|
45
|
+
// "Container" atoms, contains nested atoms
|
|
46
|
+
case 'moov': // The Movie Atom: contains other atoms
|
|
47
|
+
case 'udta': // User defined atom
|
|
48
|
+
case 'trak':
|
|
49
|
+
case 'mdia': // Media atom
|
|
50
|
+
case 'minf': // Media Information Atom
|
|
51
|
+
case 'stbl': // The Sample Table Atom
|
|
52
|
+
case '<id>':
|
|
53
|
+
case 'ilst':
|
|
54
|
+
case 'tref':
|
|
55
|
+
return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining));
|
|
56
|
+
case 'meta': // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8
|
|
57
|
+
// meta has 4 bytes of padding, ignore
|
|
58
|
+
await tokenizer.ignore(4);
|
|
59
|
+
return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining) - 4);
|
|
60
|
+
case 'mdhd': // Media header atom
|
|
61
|
+
case 'mvhd': // 'movie' => 'mvhd': movie header atom; child of Movie Atom
|
|
62
|
+
case 'tkhd':
|
|
63
|
+
case 'stsz':
|
|
64
|
+
case 'mdat':
|
|
65
|
+
default:
|
|
66
|
+
return dataHandler(this, remaining);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.Atom = Atom;
|