From ac7e1a052ce96b03bb5f745e92ae45a1e04a8f0e Mon Sep 17 00:00:00 2001 From: abal Date: Sun, 28 Aug 2016 09:35:59 -0700 Subject: [PATCH] Add opusscript as a possible opus encoder (#558) * Add opusscript as a possible opus encoder * Make weird eslint rule happy --- package.json | 3 ++- src/client/voice/opus/NodeOpusEngine.js | 2 +- src/client/voice/opus/OpusEngineList.js | 1 + src/client/voice/opus/OpusScriptEngine.js | 28 +++++++++++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/client/voice/opus/OpusScriptEngine.js 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;