36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.SpeexParser = void 0;
|
|
const debug_1 = require("debug");
|
|
const VorbisParser_1 = require("../vorbis/VorbisParser");
|
|
const Speex = require("./Speex");
|
|
const debug = (0, debug_1.default)('music-metadata:parser:ogg:speex');
|
|
/**
|
|
* Speex, RFC 5574
|
|
* Ref:
|
|
* - https://www.speex.org/docs/manual/speex-manual/
|
|
* - https://tools.ietf.org/html/rfc5574
|
|
*/
|
|
class SpeexParser extends VorbisParser_1.VorbisParser {
|
|
constructor(metadata, options, tokenizer) {
|
|
super(metadata, options);
|
|
this.tokenizer = tokenizer;
|
|
}
|
|
/**
|
|
* Parse first Speex Ogg page
|
|
* @param {IPageHeader} header
|
|
* @param {Buffer} pageData
|
|
*/
|
|
parseFirstPage(header, pageData) {
|
|
debug('First Ogg/Speex page');
|
|
const speexHeader = Speex.Header.get(pageData, 0);
|
|
this.metadata.setFormat('codec', `Speex ${speexHeader.version}`);
|
|
this.metadata.setFormat('numberOfChannels', speexHeader.nb_channels);
|
|
this.metadata.setFormat('sampleRate', speexHeader.rate);
|
|
if (speexHeader.bitrate !== -1) {
|
|
this.metadata.setFormat('bitrate', speexHeader.bitrate);
|
|
}
|
|
}
|
|
}
|
|
exports.SpeexParser = SpeexParser;
|