mirror of
https://github.com/danbulant/discord.js
synced 2026-05-27 22:11:53 +00:00
* Audio bitrate support Note: not implemented for VoiceBroadcasts * Fix default args, auto bitrate * Late night typos are the best * Changes bitrate to kbps for VoiceChannel stuff * Add methods to manipulate bitrate while encoding
45 lines
946 B
JavaScript
45 lines
946 B
JavaScript
const OpusEngine = require('./BaseOpusEngine');
|
|
|
|
let OpusScript;
|
|
|
|
class OpusScriptEngine extends OpusEngine {
|
|
constructor(player) {
|
|
super(player);
|
|
try {
|
|
OpusScript = require('opusscript');
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
this.encoder = new OpusScript(this.samplingRate, this.channels);
|
|
super.init();
|
|
}
|
|
|
|
setBitrate(bitrate) {
|
|
this.encoder.encoderCTL(this.ctl.BITRATE, Math.min(128, Math.max(16, bitrate)) * 1000);
|
|
}
|
|
|
|
setFEC(enabled) {
|
|
this.encoder.encoderCTL(this.ctl.FEC, enabled ? 1 : 0);
|
|
}
|
|
|
|
setPLP(percent) {
|
|
this.encoder.encoderCTL(this.ctl.PLP, Math.min(100, Math.max(0, percent * 100)));
|
|
}
|
|
|
|
encode(buffer) {
|
|
super.encode(buffer);
|
|
return this.encoder.encode(buffer, 960);
|
|
}
|
|
|
|
decode(buffer) {
|
|
super.decode(buffer);
|
|
return this.encoder.decode(buffer);
|
|
}
|
|
|
|
destroy() {
|
|
super.destroy();
|
|
this.encoder.delete();
|
|
}
|
|
}
|
|
|
|
module.exports = OpusScriptEngine;
|