agdi 3.3.6 → 3.3.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 +13 -0
- package/dist/APEv2Parser-EU45AV6X.js +14 -0
- package/dist/AiffParser-FOX7GQ42.js +189 -0
- package/dist/AsfParser-HD5CSGIO.js +610 -0
- package/dist/DsdiffParser-OJREDMBI.js +188 -0
- package/dist/DsfParser-2YL4ARJ7.js +110 -0
- package/dist/FlacParser-IVV4RYF6.js +15 -0
- package/dist/MP4Parser-NLX4A2YN.js +1140 -0
- package/dist/MatroskaParser-4OEK43GF.js +654 -0
- package/dist/MpegParser-PXKEUF2B.js +642 -0
- package/dist/MusepackParser-54QGYRLY.js +322 -0
- package/dist/OggParser-KRV5QCGZ.js +435 -0
- package/dist/WavPackParser-XPZSQFVS.js +203 -0
- package/dist/WaveParser-27IS2RAI.js +294 -0
- package/dist/chunk-2B4QMSZW.js +311 -0
- package/dist/chunk-3JKZUGPJ.js +70 -0
- package/dist/chunk-4VNS5WPM.js +42 -0
- package/dist/chunk-65JVFJ3X.js +729 -0
- package/dist/chunk-6OKLAJRQ.js +0 -0
- package/dist/chunk-AGSFUVRG.js +439 -0
- package/dist/chunk-GD35BJSH.js +177 -0
- package/dist/chunk-HNLU36CC.js +702 -0
- package/dist/{chunk-M2FF7ETI.js → chunk-J6OLLWVT.js} +1 -1
- package/dist/chunk-LREP5CZP.js +146 -0
- package/dist/chunk-M54HVABG.js +34 -0
- package/dist/{chunk-S45VXJEO.js → chunk-OPFFFAQC.js} +19 -1
- package/dist/chunk-VGOIHW7D.js +1529 -0
- package/dist/chunk-YIHDW7JC.js +314 -0
- package/dist/config-D3QBUN2Y.js +13 -0
- package/dist/{config-ZFU7TSU2.js → config-K2XM6D4Z.js} +3 -2
- package/dist/{event-bus-Q3WCETQQ.js → event-bus-MO5SFUME.js} +1 -0
- package/dist/index.js +3251 -1199
- package/dist/lib-2XISBYT3.js +144950 -0
- package/dist/lib-HCGLI2GJ.js +4161 -0
- package/dist/{telemetry-service-OHU5NKON.js → telemetry-service-76YPOPDM.js} +8 -4
- package/package.json +5 -2
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractID3Parser
|
|
3
|
+
} from "./chunk-3JKZUGPJ.js";
|
|
4
|
+
import "./chunk-65JVFJ3X.js";
|
|
5
|
+
import "./chunk-2B4QMSZW.js";
|
|
6
|
+
import {
|
|
7
|
+
FourCcToken,
|
|
8
|
+
tryParseApeHeader
|
|
9
|
+
} from "./chunk-YIHDW7JC.js";
|
|
10
|
+
import "./chunk-HNLU36CC.js";
|
|
11
|
+
import "./chunk-LREP5CZP.js";
|
|
12
|
+
import {
|
|
13
|
+
getBitAllignedNumber,
|
|
14
|
+
isBitSet
|
|
15
|
+
} from "./chunk-GD35BJSH.js";
|
|
16
|
+
import {
|
|
17
|
+
BasicParser,
|
|
18
|
+
StringType,
|
|
19
|
+
UINT16_LE,
|
|
20
|
+
UINT32_LE,
|
|
21
|
+
UINT8,
|
|
22
|
+
makeUnexpectedFileContentError,
|
|
23
|
+
require_src,
|
|
24
|
+
textDecode
|
|
25
|
+
} from "./chunk-VGOIHW7D.js";
|
|
26
|
+
import {
|
|
27
|
+
__toESM
|
|
28
|
+
} from "./chunk-4VNS5WPM.js";
|
|
29
|
+
|
|
30
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/MusepackParser.js
|
|
31
|
+
var import_debug4 = __toESM(require_src(), 1);
|
|
32
|
+
|
|
33
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js
|
|
34
|
+
var import_debug2 = __toESM(require_src(), 1);
|
|
35
|
+
|
|
36
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js
|
|
37
|
+
var import_debug = __toESM(require_src(), 1);
|
|
38
|
+
var debug = (0, import_debug.default)("music-metadata:parser:musepack:sv8");
|
|
39
|
+
var PacketKey = new StringType(2, "latin1");
|
|
40
|
+
var SH_part1 = {
|
|
41
|
+
len: 5,
|
|
42
|
+
get: (buf, off) => {
|
|
43
|
+
return {
|
|
44
|
+
crc: UINT32_LE.get(buf, off),
|
|
45
|
+
streamVersion: UINT8.get(buf, off + 4)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var SH_part3 = {
|
|
50
|
+
len: 2,
|
|
51
|
+
get: (buf, off) => {
|
|
52
|
+
return {
|
|
53
|
+
sampleFrequency: [44100, 48e3, 37800, 32e3][getBitAllignedNumber(buf, off, 0, 3)],
|
|
54
|
+
maxUsedBands: getBitAllignedNumber(buf, off, 3, 5),
|
|
55
|
+
channelCount: getBitAllignedNumber(buf, off + 1, 0, 4) + 1,
|
|
56
|
+
msUsed: isBitSet(buf, off + 1, 4),
|
|
57
|
+
audioBlockFrames: getBitAllignedNumber(buf, off + 1, 5, 3)
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var StreamReader = class {
|
|
62
|
+
get tokenizer() {
|
|
63
|
+
return this._tokenizer;
|
|
64
|
+
}
|
|
65
|
+
set tokenizer(value) {
|
|
66
|
+
this._tokenizer = value;
|
|
67
|
+
}
|
|
68
|
+
constructor(_tokenizer) {
|
|
69
|
+
this._tokenizer = _tokenizer;
|
|
70
|
+
}
|
|
71
|
+
async readPacketHeader() {
|
|
72
|
+
const key = await this.tokenizer.readToken(PacketKey);
|
|
73
|
+
const size = await this.readVariableSizeField();
|
|
74
|
+
return {
|
|
75
|
+
key,
|
|
76
|
+
payloadLength: size.value - 2 - size.len
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async readStreamHeader(size) {
|
|
80
|
+
const streamHeader = {};
|
|
81
|
+
debug(`Reading SH at offset=${this.tokenizer.position}`);
|
|
82
|
+
const part1 = await this.tokenizer.readToken(SH_part1);
|
|
83
|
+
size -= SH_part1.len;
|
|
84
|
+
Object.assign(streamHeader, part1);
|
|
85
|
+
debug(`SH.streamVersion = ${part1.streamVersion}`);
|
|
86
|
+
const sampleCount = await this.readVariableSizeField();
|
|
87
|
+
size -= sampleCount.len;
|
|
88
|
+
streamHeader.sampleCount = sampleCount.value;
|
|
89
|
+
const bs = await this.readVariableSizeField();
|
|
90
|
+
size -= bs.len;
|
|
91
|
+
streamHeader.beginningOfSilence = bs.value;
|
|
92
|
+
const part3 = await this.tokenizer.readToken(SH_part3);
|
|
93
|
+
size -= SH_part3.len;
|
|
94
|
+
Object.assign(streamHeader, part3);
|
|
95
|
+
await this.tokenizer.ignore(size);
|
|
96
|
+
return streamHeader;
|
|
97
|
+
}
|
|
98
|
+
async readVariableSizeField(len = 1, hb = 0) {
|
|
99
|
+
let n = await this.tokenizer.readNumber(UINT8);
|
|
100
|
+
if ((n & 128) === 0) {
|
|
101
|
+
return { len, value: hb + n };
|
|
102
|
+
}
|
|
103
|
+
n &= 127;
|
|
104
|
+
n += hb;
|
|
105
|
+
return this.readVariableSizeField(len + 1, n << 7);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/MusepackConentError.js
|
|
110
|
+
var MusepackContentError = class extends makeUnexpectedFileContentError("Musepack") {
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js
|
|
114
|
+
var debug2 = (0, import_debug2.default)("music-metadata:parser:musepack");
|
|
115
|
+
var MpcSv8Parser = class extends BasicParser {
|
|
116
|
+
constructor() {
|
|
117
|
+
super(...arguments);
|
|
118
|
+
this.audioLength = 0;
|
|
119
|
+
}
|
|
120
|
+
async parse() {
|
|
121
|
+
const signature = await this.tokenizer.readToken(FourCcToken);
|
|
122
|
+
if (signature !== "MPCK")
|
|
123
|
+
throw new MusepackContentError("Invalid Magic number");
|
|
124
|
+
this.metadata.setFormat("container", "Musepack, SV8");
|
|
125
|
+
return this.parsePacket();
|
|
126
|
+
}
|
|
127
|
+
async parsePacket() {
|
|
128
|
+
const sv8reader = new StreamReader(this.tokenizer);
|
|
129
|
+
do {
|
|
130
|
+
const header = await sv8reader.readPacketHeader();
|
|
131
|
+
debug2(`packet-header key=${header.key}, payloadLength=${header.payloadLength}`);
|
|
132
|
+
switch (header.key) {
|
|
133
|
+
case "SH": {
|
|
134
|
+
const sh = await sv8reader.readStreamHeader(header.payloadLength);
|
|
135
|
+
this.metadata.setFormat("numberOfSamples", sh.sampleCount);
|
|
136
|
+
this.metadata.setFormat("sampleRate", sh.sampleFrequency);
|
|
137
|
+
this.metadata.setFormat("duration", sh.sampleCount / sh.sampleFrequency);
|
|
138
|
+
this.metadata.setFormat("numberOfChannels", sh.channelCount);
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
case "AP":
|
|
142
|
+
this.audioLength += header.payloadLength;
|
|
143
|
+
await this.tokenizer.ignore(header.payloadLength);
|
|
144
|
+
break;
|
|
145
|
+
case "RG":
|
|
146
|
+
// Replaygain
|
|
147
|
+
case "EI":
|
|
148
|
+
// Encoder Info
|
|
149
|
+
case "SO":
|
|
150
|
+
// Seek Table Offset
|
|
151
|
+
case "ST":
|
|
152
|
+
// Seek Table
|
|
153
|
+
case "CT":
|
|
154
|
+
await this.tokenizer.ignore(header.payloadLength);
|
|
155
|
+
break;
|
|
156
|
+
case "SE":
|
|
157
|
+
if (this.metadata.format.duration) {
|
|
158
|
+
this.metadata.setFormat("bitrate", this.audioLength * 8 / this.metadata.format.duration);
|
|
159
|
+
}
|
|
160
|
+
return tryParseApeHeader(this.metadata, this.tokenizer, this.options);
|
|
161
|
+
default:
|
|
162
|
+
throw new MusepackContentError(`Unexpected header: ${header.key}`);
|
|
163
|
+
}
|
|
164
|
+
} while (true);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js
|
|
169
|
+
var import_debug3 = __toESM(require_src(), 1);
|
|
170
|
+
|
|
171
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/sv7/BitReader.js
|
|
172
|
+
var BitReader = class {
|
|
173
|
+
constructor(tokenizer) {
|
|
174
|
+
this.pos = 0;
|
|
175
|
+
this.dword = null;
|
|
176
|
+
this.tokenizer = tokenizer;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
*
|
|
180
|
+
* @param bits 1..30 bits
|
|
181
|
+
*/
|
|
182
|
+
async read(bits) {
|
|
183
|
+
while (this.dword === null) {
|
|
184
|
+
this.dword = await this.tokenizer.readToken(UINT32_LE);
|
|
185
|
+
}
|
|
186
|
+
let out = this.dword;
|
|
187
|
+
this.pos += bits;
|
|
188
|
+
if (this.pos < 32) {
|
|
189
|
+
out >>>= 32 - this.pos;
|
|
190
|
+
return out & (1 << bits) - 1;
|
|
191
|
+
}
|
|
192
|
+
this.pos -= 32;
|
|
193
|
+
if (this.pos === 0) {
|
|
194
|
+
this.dword = null;
|
|
195
|
+
return out & (1 << bits) - 1;
|
|
196
|
+
}
|
|
197
|
+
this.dword = await this.tokenizer.readToken(UINT32_LE);
|
|
198
|
+
if (this.pos) {
|
|
199
|
+
out <<= this.pos;
|
|
200
|
+
out |= this.dword >>> 32 - this.pos;
|
|
201
|
+
}
|
|
202
|
+
return out & (1 << bits) - 1;
|
|
203
|
+
}
|
|
204
|
+
async ignore(bits) {
|
|
205
|
+
if (this.pos > 0) {
|
|
206
|
+
const remaining = 32 - this.pos;
|
|
207
|
+
this.dword = null;
|
|
208
|
+
bits -= remaining;
|
|
209
|
+
this.pos = 0;
|
|
210
|
+
}
|
|
211
|
+
const remainder = bits % 32;
|
|
212
|
+
const numOfWords = (bits - remainder) / 32;
|
|
213
|
+
await this.tokenizer.ignore(numOfWords * 4);
|
|
214
|
+
return this.read(remainder);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js
|
|
219
|
+
var Header = {
|
|
220
|
+
len: 6 * 4,
|
|
221
|
+
get: (buf, off) => {
|
|
222
|
+
const header = {
|
|
223
|
+
// word 0
|
|
224
|
+
signature: textDecode(buf.subarray(off, off + 3), "latin1"),
|
|
225
|
+
// versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)
|
|
226
|
+
streamMinorVersion: getBitAllignedNumber(buf, off + 3, 0, 4),
|
|
227
|
+
streamMajorVersion: getBitAllignedNumber(buf, off + 3, 4, 4),
|
|
228
|
+
// word 1
|
|
229
|
+
frameCount: UINT32_LE.get(buf, off + 4),
|
|
230
|
+
// word 2
|
|
231
|
+
maxLevel: UINT16_LE.get(buf, off + 8),
|
|
232
|
+
sampleFrequency: [44100, 48e3, 37800, 32e3][getBitAllignedNumber(buf, off + 10, 0, 2)],
|
|
233
|
+
link: getBitAllignedNumber(buf, off + 10, 2, 2),
|
|
234
|
+
profile: getBitAllignedNumber(buf, off + 10, 4, 4),
|
|
235
|
+
maxBand: getBitAllignedNumber(buf, off + 11, 0, 6),
|
|
236
|
+
intensityStereo: isBitSet(buf, off + 11, 6),
|
|
237
|
+
midSideStereo: isBitSet(buf, off + 11, 7),
|
|
238
|
+
// word 3
|
|
239
|
+
titlePeak: UINT16_LE.get(buf, off + 12),
|
|
240
|
+
titleGain: UINT16_LE.get(buf, off + 14),
|
|
241
|
+
// word 4
|
|
242
|
+
albumPeak: UINT16_LE.get(buf, off + 16),
|
|
243
|
+
albumGain: UINT16_LE.get(buf, off + 18),
|
|
244
|
+
// word
|
|
245
|
+
lastFrameLength: UINT32_LE.get(buf, off + 20) >>> 20 & 2047,
|
|
246
|
+
trueGapless: isBitSet(buf, off + 23, 0)
|
|
247
|
+
};
|
|
248
|
+
header.lastFrameLength = header.trueGapless ? UINT32_LE.get(buf, 20) >>> 20 & 2047 : 0;
|
|
249
|
+
return header;
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js
|
|
254
|
+
var debug3 = (0, import_debug3.default)("music-metadata:parser:musepack");
|
|
255
|
+
var MpcSv7Parser = class extends BasicParser {
|
|
256
|
+
constructor() {
|
|
257
|
+
super(...arguments);
|
|
258
|
+
this.bitreader = null;
|
|
259
|
+
this.audioLength = 0;
|
|
260
|
+
this.duration = null;
|
|
261
|
+
}
|
|
262
|
+
async parse() {
|
|
263
|
+
const header = await this.tokenizer.readToken(Header);
|
|
264
|
+
if (header.signature !== "MP+")
|
|
265
|
+
throw new MusepackContentError("Unexpected magic number");
|
|
266
|
+
debug3(`stream-version=${header.streamMajorVersion}.${header.streamMinorVersion}`);
|
|
267
|
+
this.metadata.setFormat("container", "Musepack, SV7");
|
|
268
|
+
this.metadata.setFormat("sampleRate", header.sampleFrequency);
|
|
269
|
+
const numberOfSamples = 1152 * (header.frameCount - 1) + header.lastFrameLength;
|
|
270
|
+
this.metadata.setFormat("numberOfSamples", numberOfSamples);
|
|
271
|
+
this.duration = numberOfSamples / header.sampleFrequency;
|
|
272
|
+
this.metadata.setFormat("duration", this.duration);
|
|
273
|
+
this.bitreader = new BitReader(this.tokenizer);
|
|
274
|
+
this.metadata.setFormat("numberOfChannels", header.midSideStereo || header.intensityStereo ? 2 : 1);
|
|
275
|
+
const version = await this.bitreader.read(8);
|
|
276
|
+
this.metadata.setFormat("codec", (version / 100).toFixed(2));
|
|
277
|
+
await this.skipAudioData(header.frameCount);
|
|
278
|
+
debug3(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`);
|
|
279
|
+
return tryParseApeHeader(this.metadata, this.tokenizer, this.options);
|
|
280
|
+
}
|
|
281
|
+
async skipAudioData(frameCount) {
|
|
282
|
+
while (frameCount-- > 0) {
|
|
283
|
+
const frameLength = await this.bitreader.read(20);
|
|
284
|
+
this.audioLength += 20 + frameLength;
|
|
285
|
+
await this.bitreader.ignore(frameLength);
|
|
286
|
+
}
|
|
287
|
+
const lastFrameLength = await this.bitreader.read(11);
|
|
288
|
+
this.audioLength += lastFrameLength;
|
|
289
|
+
if (this.duration !== null) {
|
|
290
|
+
this.metadata.setFormat("bitrate", this.audioLength / this.duration);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
// ../../node_modules/.pnpm/music-metadata@11.12.0/node_modules/music-metadata/lib/musepack/MusepackParser.js
|
|
296
|
+
var debug4 = (0, import_debug4.default)("music-metadata:parser:musepack");
|
|
297
|
+
var MusepackParser = class extends AbstractID3Parser {
|
|
298
|
+
async postId3v2Parse() {
|
|
299
|
+
const signature = await this.tokenizer.peekToken(new StringType(3, "latin1"));
|
|
300
|
+
let mpcParser;
|
|
301
|
+
switch (signature) {
|
|
302
|
+
case "MP+": {
|
|
303
|
+
debug4("Stream-version 7");
|
|
304
|
+
mpcParser = new MpcSv7Parser(this.metadata, this.tokenizer, this.options);
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
case "MPC": {
|
|
308
|
+
debug4("Stream-version 8");
|
|
309
|
+
mpcParser = new MpcSv8Parser(this.metadata, this.tokenizer, this.options);
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
default: {
|
|
313
|
+
throw new MusepackContentError("Invalid signature prefix");
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
this.metadata.setAudioOnly();
|
|
317
|
+
return mpcParser.parse();
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
export {
|
|
321
|
+
MusepackParser
|
|
322
|
+
};
|