33 lines
953 B
JavaScript
33 lines
953 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.VorbisDecoder = void 0;
|
|
const Token = require("token-types");
|
|
class VorbisDecoder {
|
|
constructor(data, offset) {
|
|
this.data = data;
|
|
this.offset = offset;
|
|
}
|
|
readInt32() {
|
|
const value = Token.UINT32_LE.get(this.data, this.offset);
|
|
this.offset += 4;
|
|
return value;
|
|
}
|
|
readStringUtf8() {
|
|
const len = this.readInt32();
|
|
const value = Buffer.from(this.data).toString('utf-8', this.offset, this.offset + len);
|
|
this.offset += len;
|
|
return value;
|
|
}
|
|
parseUserComment() {
|
|
const offset0 = this.offset;
|
|
const v = this.readStringUtf8();
|
|
const idx = v.indexOf('=');
|
|
return {
|
|
key: v.slice(0, idx).toUpperCase(),
|
|
value: v.slice(idx + 1),
|
|
len: this.offset - offset0
|
|
};
|
|
}
|
|
}
|
|
exports.VorbisDecoder = VorbisDecoder;
|