music-metadata 10.1.0 → 10.3.0

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.
Files changed (63) hide show
  1. package/README.md +465 -141
  2. package/lib/ParseError.d.ts +87 -0
  3. package/lib/ParseError.js +39 -0
  4. package/lib/ParserFactory.d.ts +1 -1
  5. package/lib/ParserFactory.js +9 -8
  6. package/lib/aiff/AiffParser.js +6 -7
  7. package/lib/aiff/AiffToken.d.ts +15 -0
  8. package/lib/aiff/AiffToken.js +5 -2
  9. package/lib/apev2/APEv2Parser.d.ts +15 -0
  10. package/lib/apev2/APEv2Parser.js +6 -3
  11. package/lib/asf/AsfObject.d.ts +15 -0
  12. package/lib/asf/AsfObject.js +4 -1
  13. package/lib/asf/AsfParser.js +2 -1
  14. package/lib/common/CombinedTagMapper.js +2 -1
  15. package/lib/common/FourCC.js +3 -2
  16. package/lib/common/MetadataCollector.js +2 -4
  17. package/lib/common/Util.js +3 -2
  18. package/lib/core.d.ts +2 -1
  19. package/lib/core.js +1 -1
  20. package/lib/default.cjs +5 -0
  21. package/lib/dsdiff/DsdiffParser.d.ts +15 -0
  22. package/lib/dsdiff/DsdiffParser.js +6 -3
  23. package/lib/dsf/DsfParser.d.ts +15 -0
  24. package/lib/dsf/DsfParser.js +4 -1
  25. package/lib/ebml/EbmlIterator.d.ts +67 -0
  26. package/lib/ebml/EbmlIterator.js +223 -0
  27. package/lib/ebml/types.d.ts +36 -0
  28. package/lib/ebml/types.js +10 -0
  29. package/lib/flac/FlacParser.js +5 -2
  30. package/lib/id3v2/FrameParser.d.ts +14 -0
  31. package/lib/id3v2/FrameParser.js +7 -1
  32. package/lib/id3v2/ID3v2Parser.js +10 -8
  33. package/lib/matroska/MatroskaDtd.d.ts +2 -2
  34. package/lib/matroska/MatroskaDtd.js +246 -239
  35. package/lib/matroska/MatroskaParser.d.ts +8 -22
  36. package/lib/matroska/MatroskaParser.js +119 -204
  37. package/lib/matroska/types.d.ts +8 -44
  38. package/lib/matroska/types.js +0 -9
  39. package/lib/mp4/AtomToken.d.ts +14 -0
  40. package/lib/mp4/AtomToken.js +6 -3
  41. package/lib/mp4/MP4Parser.js +4 -3
  42. package/lib/mpeg/MpegParser.d.ts +15 -0
  43. package/lib/mpeg/MpegParser.js +7 -4
  44. package/lib/musepack/MusepackConentError.d.ts +15 -0
  45. package/lib/musepack/MusepackConentError.js +4 -0
  46. package/lib/musepack/index.js +4 -3
  47. package/lib/musepack/sv7/MpcSv7Parser.js +2 -1
  48. package/lib/musepack/sv8/MpcSv8Parser.js +3 -2
  49. package/lib/node.cjs +5 -0
  50. package/lib/ogg/OggParser.d.ts +15 -0
  51. package/lib/ogg/OggParser.js +5 -2
  52. package/lib/ogg/opus/Opus.d.ts +15 -0
  53. package/lib/ogg/opus/Opus.js +4 -1
  54. package/lib/ogg/opus/OpusParser.js +2 -1
  55. package/lib/ogg/vorbis/VorbisParser.d.ts +15 -0
  56. package/lib/ogg/vorbis/VorbisParser.js +6 -3
  57. package/lib/type.d.ts +9 -0
  58. package/lib/wav/WaveChunk.d.ts +15 -0
  59. package/lib/wav/WaveChunk.js +5 -2
  60. package/lib/wav/WaveParser.js +3 -2
  61. package/lib/wavpack/WavPackParser.d.ts +15 -0
  62. package/lib/wavpack/WavPackParser.js +6 -3
  63. package/package.json +20 -11
@@ -1,231 +1,238 @@
1
- import { DataType } from './types.js';
1
+ import { DataType } from '../ebml/types.js';
2
2
  /**
3
3
  * Elements of document type description
4
4
  * Derived from https://github.com/tungol/EBML/blob/master/doctypes/matroska.dtd
5
5
  * Extended with:
6
6
  * - https://www.matroska.org/technical/specs/index.html
7
7
  */
8
- export const elements = {
9
- 440786851: {
10
- name: 'ebml',
11
- container: {
12
- 17030: { name: 'ebmlVersion', value: DataType.uint }, // 5.1.1
13
- 17143: { name: 'ebmlReadVersion', value: DataType.uint }, // 5.1.2
14
- 17138: { name: 'ebmlMaxIDWidth', value: DataType.uint }, // 5.1.3
15
- 17139: { name: 'ebmlMaxSizeWidth', value: DataType.uint }, // 5.1.4
16
- 17026: { name: 'docType', value: DataType.string }, // 5.1.5
17
- 17031: { name: 'docTypeVersion', value: DataType.uint }, // 5.1.6
18
- 17029: { name: 'docTypeReadVersion', value: DataType.uint } // 5.1.7
19
- }
20
- },
21
- // Matroska segments
22
- 408125543: {
23
- name: 'segment',
24
- container: {
25
- // Meta Seek Information
26
- 290298740: {
27
- name: 'seekHead',
28
- container: {
29
- 19899: {
30
- name: 'seek',
31
- container: {
32
- 21419: { name: 'seekId', value: DataType.binary },
33
- 21420: { name: 'seekPosition', value: DataType.uint }
8
+ export const matroskaDtd = {
9
+ name: 'dtd',
10
+ container: {
11
+ 0x1a45dfa3: {
12
+ name: 'ebml',
13
+ container: {
14
+ 0x4286: { name: 'ebmlVersion', value: DataType.uint }, // 5.1.1
15
+ 0x42f7: { name: 'ebmlReadVersion', value: DataType.uint }, // 5.1.2
16
+ 0x42f2: { name: 'ebmlMaxIDWidth', value: DataType.uint }, // 5.1.3
17
+ 0x42f3: { name: 'ebmlMaxSizeWidth', value: DataType.uint }, // 5.1.4
18
+ 0x4282: { name: 'docType', value: DataType.string }, // 5.1.5
19
+ 0x4287: { name: 'docTypeVersion', value: DataType.uint }, // 5.1.6
20
+ 0x4285: { name: 'docTypeReadVersion', value: DataType.uint } // 5.1.7
21
+ }
22
+ },
23
+ // Matroska segments
24
+ 0x18538067: {
25
+ name: 'segment',
26
+ container: {
27
+ // Meta Seek Information (also known as MetaSeek)
28
+ 0x114d9b74: {
29
+ name: 'seekHead',
30
+ container: {
31
+ 0x4dbb: {
32
+ name: 'seek',
33
+ multiple: true,
34
+ container: {
35
+ 0x53ab: { name: 'id', value: DataType.binary },
36
+ 0x53ac: { name: 'position', value: DataType.uint }
37
+ }
34
38
  }
35
39
  }
36
- }
37
- },
38
- // Segment Information
39
- 357149030: {
40
- name: 'info',
41
- container: {
42
- 29604: { name: 'uid', value: DataType.uid },
43
- 29572: { name: 'filename', value: DataType.string },
44
- 3979555: { name: 'prevUID', value: DataType.uid },
45
- 3965867: { name: 'prevFilename', value: DataType.string },
46
- 4110627: { name: 'nextUID', value: DataType.uid },
47
- 4096955: { name: 'nextFilename', value: DataType.string },
48
- 2807729: { name: 'timecodeScale', value: DataType.uint },
49
- 17545: { name: 'duration', value: DataType.float },
50
- 17505: { name: 'dateUTC', value: DataType.uint },
51
- 31657: { name: 'title', value: DataType.string },
52
- 19840: { name: 'muxingApp', value: DataType.string },
53
- 22337: { name: 'writingApp', value: DataType.string }
54
- }
55
- },
56
- // Cluster
57
- 524531317: {
58
- name: 'cluster',
59
- multiple: true,
60
- container: {
61
- 231: { name: 'timecode', value: DataType.uid },
62
- 163: { name: 'unknown', value: DataType.binary },
63
- 167: { name: 'position', value: DataType.uid },
64
- 171: { name: 'prevSize', value: DataType.uid }
65
- }
66
- },
67
- // Track
68
- 374648427: {
69
- name: 'tracks',
70
- container: {
71
- 174: {
72
- name: 'entries',
73
- multiple: true,
74
- container: {
75
- 215: { name: 'trackNumber', value: DataType.uint },
76
- 29637: { name: 'uid', value: DataType.uid },
77
- 131: { name: 'trackType', value: DataType.uint },
78
- 185: { name: 'flagEnabled', value: DataType.bool },
79
- 136: { name: 'flagDefault', value: DataType.bool },
80
- 21930: { name: 'flagForced', value: DataType.bool }, // extended
81
- 156: { name: 'flagLacing', value: DataType.bool },
82
- 28135: { name: 'minCache', value: DataType.uint },
83
- 28136: { name: 'maxCache', value: DataType.uint },
84
- 2352003: { name: 'defaultDuration', value: DataType.uint },
85
- 2306383: { name: 'timecodeScale', value: DataType.float },
86
- 21358: { name: 'name', value: DataType.string },
87
- 2274716: { name: 'language', value: DataType.string },
88
- 134: { name: 'codecID', value: DataType.string },
89
- 25506: { name: 'codecPrivate', value: DataType.binary },
90
- 2459272: { name: 'codecName', value: DataType.string },
91
- 3839639: { name: 'codecSettings', value: DataType.string },
92
- 3883072: { name: 'codecInfoUrl', value: DataType.string },
93
- 2536000: { name: 'codecDownloadUrl', value: DataType.string },
94
- 170: { name: 'codecDecodeAll', value: DataType.bool },
95
- 28587: { name: 'trackOverlay', value: DataType.uint },
96
- // Video
97
- 224: {
98
- name: 'video',
99
- container: {
100
- 154: { name: 'flagInterlaced', value: DataType.bool },
101
- 21432: { name: 'stereoMode', value: DataType.uint },
102
- 176: { name: 'pixelWidth', value: DataType.uint },
103
- 186: { name: 'pixelHeight', value: DataType.uint },
104
- 21680: { name: 'displayWidth', value: DataType.uint },
105
- 21690: { name: 'displayHeight', value: DataType.uint },
106
- 21683: { name: 'aspectRatioType', value: DataType.uint },
107
- 3061028: { name: 'colourSpace', value: DataType.uint },
108
- 3126563: { name: 'gammaValue', value: DataType.float }
109
- }
110
- },
111
- // Audio
112
- 225: {
113
- name: 'audio',
114
- container: {
115
- 181: { name: 'samplingFrequency', value: DataType.float },
116
- 30901: { name: 'outputSamplingFrequency', value: DataType.float },
117
- 159: { name: 'channels', value: DataType.uint }, // https://www.matroska.org/technical/specs/index.html
118
- 148: { name: 'channels', value: DataType.uint },
119
- 32123: { name: 'channelPositions', value: DataType.binary },
120
- 25188: { name: 'bitDepth', value: DataType.uint }
121
- }
122
- },
123
- // Content Encoding
124
- 28032: {
125
- name: 'contentEncodings',
126
- container: {
127
- 25152: {
128
- name: 'contentEncoding',
129
- container: {
130
- 20529: { name: 'order', value: DataType.uint },
131
- 20530: { name: 'scope', value: DataType.bool },
132
- 20531: { name: 'type', value: DataType.uint },
133
- 20532: {
134
- name: 'contentEncoding',
135
- container: {
136
- 16980: { name: 'contentCompAlgo', value: DataType.uint },
137
- 16981: { name: 'contentCompSettings', value: DataType.binary }
138
- }
139
- },
140
- 20533: {
141
- name: 'contentEncoding',
142
- container: {
143
- 18401: { name: 'contentEncAlgo', value: DataType.uint },
144
- 18402: { name: 'contentEncKeyID', value: DataType.binary },
145
- 18403: { name: 'contentSignature ', value: DataType.binary },
146
- 18404: { name: 'ContentSigKeyID ', value: DataType.binary },
147
- 18405: { name: 'contentSigAlgo ', value: DataType.uint },
148
- 18406: { name: 'contentSigHashAlgo ', value: DataType.uint }
149
- }
150
- },
151
- 25188: { name: 'bitDepth', value: DataType.uint }
40
+ },
41
+ // Segment Information
42
+ 0x1549a966: {
43
+ name: 'info',
44
+ container: {
45
+ 0x73a4: { name: 'uid', value: DataType.uid },
46
+ 0x7384: { name: 'filename', value: DataType.string },
47
+ 0x3cb923: { name: 'prevUID', value: DataType.uid },
48
+ 0x3c83ab: { name: 'prevFilename', value: DataType.string },
49
+ 0x3eb923: { name: 'nextUID', value: DataType.uid },
50
+ 0x3e83bb: { name: 'nextFilename', value: DataType.string },
51
+ 0x2ad7b1: { name: 'timecodeScale', value: DataType.uint },
52
+ 0x4489: { name: 'duration', value: DataType.float },
53
+ 0x4461: { name: 'dateUTC', value: DataType.uint },
54
+ 0x7ba9: { name: 'title', value: DataType.string },
55
+ 0x4d80: { name: 'muxingApp', value: DataType.string },
56
+ 0x5741: { name: 'writingApp', value: DataType.string }
57
+ }
58
+ },
59
+ // Cluster
60
+ 0x1f43b675: {
61
+ name: 'cluster',
62
+ multiple: true,
63
+ container: {
64
+ 0xe7: { name: 'timecode', value: DataType.uid },
65
+ 0x58d7: { name: 'silentTracks ', multiple: true },
66
+ 0xa7: { name: 'position', value: DataType.uid },
67
+ 0xab: { name: 'prevSize', value: DataType.uid },
68
+ 0xa0: { name: 'blockGroup' },
69
+ 0xa3: { name: 'simpleBlock' }
70
+ }
71
+ },
72
+ // Track
73
+ 0x1654ae6b: {
74
+ name: 'tracks',
75
+ container: {
76
+ 0xae: {
77
+ name: 'entries',
78
+ multiple: true,
79
+ container: {
80
+ 0xd7: { name: 'trackNumber', value: DataType.uint },
81
+ 0x73c5: { name: 'uid', value: DataType.uid },
82
+ 0x83: { name: 'trackType', value: DataType.uint },
83
+ 0xb9: { name: 'flagEnabled', value: DataType.bool },
84
+ 0x88: { name: 'flagDefault', value: DataType.bool },
85
+ 0x55aa: { name: 'flagForced', value: DataType.bool }, // extended
86
+ 0x9c: { name: 'flagLacing', value: DataType.bool },
87
+ 0x6de7: { name: 'minCache', value: DataType.uint },
88
+ 0x6de8: { name: 'maxCache', value: DataType.uint },
89
+ 0x23e383: { name: 'defaultDuration', value: DataType.uint },
90
+ 0x23314f: { name: 'timecodeScale', value: DataType.float },
91
+ 0x536e: { name: 'name', value: DataType.string },
92
+ 0x22b59c: { name: 'language', value: DataType.string },
93
+ 0x86: { name: 'codecID', value: DataType.string },
94
+ 0x63a2: { name: 'codecPrivate', value: DataType.binary },
95
+ 0x258688: { name: 'codecName', value: DataType.string },
96
+ 0x3a9697: { name: 'codecSettings', value: DataType.string },
97
+ 0x3b4040: { name: 'codecInfoUrl', value: DataType.string },
98
+ 0x26b240: { name: 'codecDownloadUrl', value: DataType.string },
99
+ 0xaa: { name: 'codecDecodeAll', value: DataType.bool },
100
+ 0x6fab: { name: 'trackOverlay', value: DataType.uint },
101
+ // Video
102
+ 0xe0: {
103
+ name: 'video',
104
+ container: {
105
+ 0x9a: { name: 'flagInterlaced', value: DataType.bool },
106
+ 0x53b8: { name: 'stereoMode', value: DataType.uint },
107
+ 0xb0: { name: 'pixelWidth', value: DataType.uint },
108
+ 0xba: { name: 'pixelHeight', value: DataType.uint },
109
+ 0x54b0: { name: 'displayWidth', value: DataType.uint },
110
+ 0x54ba: { name: 'displayHeight', value: DataType.uint },
111
+ 0x54b3: { name: 'aspectRatioType', value: DataType.uint },
112
+ 0x2eb524: { name: 'colourSpace', value: DataType.uint },
113
+ 0x2fb523: { name: 'gammaValue', value: DataType.float }
114
+ }
115
+ },
116
+ // Audio
117
+ 0xe1: {
118
+ name: 'audio',
119
+ container: {
120
+ 0xb5: { name: 'samplingFrequency', value: DataType.float },
121
+ 0x78b5: { name: 'outputSamplingFrequency', value: DataType.float },
122
+ 0x9f: { name: 'channels', value: DataType.uint }, // https://www.matroska.org/technical/specs/index.html
123
+ 0x94: { name: 'channels', value: DataType.uint },
124
+ 0x7d7b: { name: 'channelPositions', value: DataType.binary },
125
+ 0x6264: { name: 'bitDepth', value: DataType.uint }
126
+ }
127
+ },
128
+ // Content Encoding
129
+ 0x6d80: {
130
+ name: 'contentEncodings',
131
+ container: {
132
+ 0x6240: {
133
+ name: 'contentEncoding',
134
+ container: {
135
+ 0x5031: { name: 'order', value: DataType.uint },
136
+ 0x5032: { name: 'scope', value: DataType.bool },
137
+ 0x5033: { name: 'type', value: DataType.uint },
138
+ 0x5034: {
139
+ name: 'contentEncoding',
140
+ container: {
141
+ 0x4254: { name: 'contentCompAlgo', value: DataType.uint },
142
+ 0x4255: { name: 'contentCompSettings', value: DataType.binary }
143
+ }
144
+ },
145
+ 0x5035: {
146
+ name: 'contentEncoding',
147
+ container: {
148
+ 0x47e1: { name: 'contentEncAlgo', value: DataType.uint },
149
+ 0x47e2: { name: 'contentEncKeyID', value: DataType.binary },
150
+ 0x47e3: { name: 'contentSignature ', value: DataType.binary },
151
+ 0x47e4: { name: 'ContentSigKeyID ', value: DataType.binary },
152
+ 0x47e5: { name: 'contentSigAlgo ', value: DataType.uint },
153
+ 0x47e6: { name: 'contentSigHashAlgo ', value: DataType.uint }
154
+ }
155
+ },
156
+ 0x6264: { name: 'bitDepth', value: DataType.uint }
157
+ }
152
158
  }
153
159
  }
154
160
  }
155
161
  }
156
162
  }
157
163
  }
158
- }
159
- },
160
- // Cueing Data
161
- 475249515: {
162
- name: 'cues',
163
- container: {
164
- 187: {
165
- name: 'cuePoint',
166
- container: {
167
- 179: { name: 'cueTime', value: DataType.uid },
168
- 183: {
169
- name: 'positions',
170
- container: {
171
- 247: { name: 'track', value: DataType.uint },
172
- 241: { name: 'clusterPosition', value: DataType.uint },
173
- 21368: { name: 'blockNumber', value: DataType.uint },
174
- 234: { name: 'codecState', value: DataType.uint },
175
- 219: {
176
- name: 'reference', container: {
177
- 150: { name: 'time', value: DataType.uint },
178
- 151: { name: 'cluster', value: DataType.uint },
179
- 21343: { name: 'number', value: DataType.uint },
180
- 235: { name: 'codecState', value: DataType.uint }
181
- }
182
- },
183
- 240: { name: 'relativePosition', value: DataType.uint } // extended
164
+ },
165
+ // Cueing Data
166
+ 0x1c53bb6b: {
167
+ name: 'cues',
168
+ container: {
169
+ 0xbb: {
170
+ name: 'cuePoint',
171
+ container: {
172
+ 0xb3: { name: 'cueTime', value: DataType.uid },
173
+ 0xb7: {
174
+ name: 'positions',
175
+ container: {
176
+ 0xf7: { name: 'track', value: DataType.uint },
177
+ 0xf1: { name: 'clusterPosition', value: DataType.uint },
178
+ 0x5378: { name: 'blockNumber', value: DataType.uint },
179
+ 0xea: { name: 'codecState', value: DataType.uint },
180
+ 0xdb: {
181
+ name: 'reference', container: {
182
+ 0x96: { name: 'time', value: DataType.uint },
183
+ 0x97: { name: 'cluster', value: DataType.uint },
184
+ 0x535f: { name: 'number', value: DataType.uint },
185
+ 0xeb: { name: 'codecState', value: DataType.uint }
186
+ }
187
+ },
188
+ 0xf0: { name: 'relativePosition', value: DataType.uint } // extended
189
+ }
184
190
  }
185
191
  }
186
192
  }
187
193
  }
188
- }
189
- },
190
- // Attachment
191
- 423732329: {
192
- name: 'attachments',
193
- container: {
194
- 24999: {
195
- name: 'attachedFiles',
196
- multiple: true,
197
- container: {
198
- 18046: { name: 'description', value: DataType.string },
199
- 18030: { name: 'name', value: DataType.string },
200
- 18016: { name: 'mimeType', value: DataType.string },
201
- 18012: { name: 'data', value: DataType.binary },
202
- 18094: { name: 'uid', value: DataType.uid }
194
+ },
195
+ // Attachment
196
+ 0x1941a469: {
197
+ name: 'attachments',
198
+ container: {
199
+ 0x61a7: {
200
+ name: 'attachedFiles',
201
+ multiple: true,
202
+ container: {
203
+ 0x467e: { name: 'description', value: DataType.string },
204
+ 0x466e: { name: 'name', value: DataType.string },
205
+ 0x4660: { name: 'mimeType', value: DataType.string },
206
+ 0x465c: { name: 'data', value: DataType.binary },
207
+ 0x46ae: { name: 'uid', value: DataType.uid }
208
+ }
203
209
  }
204
210
  }
205
- }
206
- },
207
- // Chapters
208
- 272869232: {
209
- name: 'chapters',
210
- container: {
211
- 17849: {
212
- name: 'editionEntry',
213
- container: {
214
- 182: {
215
- name: 'chapterAtom',
216
- container: {
217
- 29636: { name: 'uid', value: DataType.uid },
218
- 145: { name: 'timeStart', value: DataType.uint },
219
- 146: { name: 'timeEnd', value: DataType.uid },
220
- 152: { name: 'hidden', value: DataType.bool },
221
- 17816: { name: 'enabled', value: DataType.uid },
222
- 143: { name: 'track', container: {
223
- 137: { name: 'trackNumber', value: DataType.uid },
224
- 128: {
225
- name: 'display', container: {
226
- 133: { name: 'string', value: DataType.string },
227
- 17276: { name: 'language ', value: DataType.string },
228
- 17278: { name: 'country ', value: DataType.string }
211
+ },
212
+ // Chapters
213
+ 0x1043a770: {
214
+ name: 'chapters',
215
+ container: {
216
+ 0x45b9: {
217
+ name: 'editionEntry',
218
+ container: {
219
+ 0xb6: {
220
+ name: 'chapterAtom',
221
+ container: {
222
+ 0x73c4: { name: 'uid', value: DataType.uid },
223
+ 0x91: { name: 'timeStart', value: DataType.uint },
224
+ 0x92: { name: 'timeEnd', value: DataType.uid },
225
+ 0x98: { name: 'hidden', value: DataType.bool },
226
+ 0x4598: { name: 'enabled', value: DataType.uid },
227
+ 0x8f: {
228
+ name: 'track', container: {
229
+ 0x89: { name: 'trackNumber', value: DataType.uid },
230
+ 0x80: {
231
+ name: 'display', container: {
232
+ 0x85: { name: 'string', value: DataType.string },
233
+ 0x437c: { name: 'language ', value: DataType.string },
234
+ 0x437e: { name: 'country ', value: DataType.string }
235
+ }
229
236
  }
230
237
  }
231
238
  }
@@ -234,37 +241,37 @@ export const elements = {
234
241
  }
235
242
  }
236
243
  }
237
- }
238
- },
239
- // Tagging
240
- 307544935: {
241
- name: 'tags',
242
- container: {
243
- 29555: {
244
- name: 'tag',
245
- multiple: true,
246
- container: {
247
- 25536: {
248
- name: 'target',
249
- container: {
250
- 25541: { name: 'tagTrackUID', value: DataType.uid },
251
- 25540: { name: 'tagChapterUID', value: DataType.uint },
252
- 25542: { name: 'tagAttachmentUID', value: DataType.uid },
253
- 25546: { name: 'targetType', value: DataType.string }, // extended
254
- 26826: { name: 'targetTypeValue', value: DataType.uint }, // extended
255
- 25545: { name: 'tagEditionUID', value: DataType.uid } // extended
256
- }
257
- },
258
- 26568: {
259
- name: 'simpleTags',
260
- multiple: true,
261
- container: {
262
- 17827: { name: 'name', value: DataType.string },
263
- 17543: { name: 'string', value: DataType.string },
264
- 17541: { name: 'binary', value: DataType.binary },
265
- 17530: { name: 'language', value: DataType.string }, // extended
266
- 17531: { name: 'languageIETF', value: DataType.string }, // extended
267
- 17540: { name: 'default', value: DataType.bool } // extended
244
+ },
245
+ // Tagging
246
+ 0x1254c367: {
247
+ name: 'tags',
248
+ container: {
249
+ 0x7373: {
250
+ name: 'tag',
251
+ multiple: true,
252
+ container: {
253
+ 0x63c0: {
254
+ name: 'target',
255
+ container: {
256
+ 0x63c5: { name: 'tagTrackUID', value: DataType.uid },
257
+ 0x63c4: { name: 'tagChapterUID', value: DataType.uint },
258
+ 0x63c6: { name: 'tagAttachmentUID', value: DataType.uid },
259
+ 0x63ca: { name: 'targetType', value: DataType.string }, // extended
260
+ 0x68ca: { name: 'targetTypeValue', value: DataType.uint }, // extended
261
+ 0x63c9: { name: 'tagEditionUID', value: DataType.uid } // extended
262
+ }
263
+ },
264
+ 0x67c8: {
265
+ name: 'simpleTags',
266
+ multiple: true,
267
+ container: {
268
+ 0x45a3: { name: 'name', value: DataType.string },
269
+ 0x4487: { name: 'string', value: DataType.string },
270
+ 0x4485: { name: 'binary', value: DataType.binary },
271
+ 0x447a: { name: 'language', value: DataType.string }, // extended
272
+ 0x447b: { name: 'languageIETF', value: DataType.string }, // extended
273
+ 0x4484: { name: 'default', value: DataType.bool } // extended
274
+ }
268
275
  }
269
276
  }
270
277
  }
@@ -1,4 +1,4 @@
1
- import { type ITokenizer } from 'strtok3';
1
+ import type { ITokenizer } from 'strtok3';
2
2
  import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3
3
  import { BasicParser } from '../common/BasicParser.js';
4
4
  import type { IOptions } from '../type.js';
@@ -11,11 +11,13 @@ import type { ITokenParser } from '../ParserFactory.js';
11
11
  * WEBM VP8 AUDIO FILE
12
12
  */
13
13
  export declare class MatroskaParser extends BasicParser {
14
- private padding;
15
- private parserMap;
16
- private ebmlMaxIDLength;
17
- private ebmlMaxSizeLength;
18
- constructor();
14
+ private seekHead;
15
+ private seekHeadOffset;
16
+ /**
17
+ * Use index to skip multiple segment/cluster elements at once.
18
+ * Significant performance impact
19
+ */
20
+ private flagUseIndexToSkipClusters;
19
21
  /**
20
22
  * Initialize parser with output (metadata), input (tokenizer) & parsing options (options).
21
23
  * @param {INativeMetadataCollector} metadata Output
@@ -24,21 +26,5 @@ export declare class MatroskaParser extends BasicParser {
24
26
  */
25
27
  init(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): ITokenParser;
26
28
  parse(): Promise<void>;
27
- private parseContainer;
28
- private readVintData;
29
- private readElement;
30
- private readFloat;
31
- private readFlag;
32
- private readUint;
33
- private readString;
34
- private readBuffer;
35
29
  private addTag;
36
- private static readUIntBE;
37
- /**
38
- * Reeds an unsigned integer from a big endian buffer of length `len`
39
- * @param buf Buffer to decode from
40
- * @param len Number of bytes
41
- * @private
42
- */
43
- private static readUIntBeAsBigInt;
44
30
  }