diff --git a/package.json b/package.json index dee11b31c..a0b19e1a1 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,8 @@ "fs-extra": "^0.30.0" }, "optionalDependencies": { - "node-opus": "^0.1.13" + "node-opus": "^0.1.13", + "opusscript": "^0.0.1" }, "engines": { "node": ">=0.12.7" diff --git a/src/client/voice/opus/NodeOpusEngine.js b/src/client/voice/opus/NodeOpusEngine.js index 8f8ba7ca0..52d1d7b0e 100644 --- a/src/client/voice/opus/NodeOpusEngine.js +++ b/src/client/voice/opus/NodeOpusEngine.js @@ -20,7 +20,7 @@ class NodeOpusEngine extends OpusEngine { } decode(buffer) { - super.encode(buffer); + super.decode(buffer); return this.encoder.decode(buffer, 1920); } } diff --git a/src/client/voice/opus/OpusEngineList.js b/src/client/voice/opus/OpusEngineList.js index b30a7c860..fb4b9855b 100644 --- a/src/client/voice/opus/OpusEngineList.js +++ b/src/client/voice/opus/OpusEngineList.js @@ -1,5 +1,6 @@ const list = [ require('./NodeOpusEngine'), + require('./OpusScriptEngine'), ]; exports.add = encoder => { diff --git a/src/client/voice/opus/OpusScriptEngine.js b/src/client/voice/opus/OpusScriptEngine.js new file mode 100644 index 000000000..79df01163 --- /dev/null +++ b/src/client/voice/opus/OpusScriptEngine.js @@ -0,0 +1,28 @@ +const OpusEngine = require('./BaseOpusEngine'); + +let Opusscript; + +class NodeOpusEngine extends OpusEngine { + constructor(player) { + super(player); + try { + // eslint-disable-next-line import/no-unresolved + Opusscript = require('opusscript'); + } catch (err) { + throw err; + } + this.encoder = new Opusscript(48000, 2); + } + + encode(buffer) { + super.encode(buffer); + return this.encoder.encode(buffer, 960); + } + + decode(buffer) { + super.decode(buffer); + return this.encoder.decode(buffer); + } +} + +module.exports = NodeOpusEngine;