Merge pull request #109 from meew0/master

Add opus sanity check
This commit is contained in:
Amish Shah
2015-12-29 11:08:32 +00:00
2 changed files with 24 additions and 0 deletions

View File

@@ -15,6 +15,22 @@ export default class AudioEncoder {
this.opus = new opus.OpusEncoder(48000, 2);
}
this.choice = false;
this.sanityCheckPassed = undefined;
}
sanityCheck() {
var _opus = this.opus;
var encodeZeroes = function() {
try {
var zeroes = new Buffer(1920);
zeroes.fill(0);
return _opus.encode(zeroes, 1920).readUIntBE(0, 3);
} catch(err) {
return false;
}
};
if(this.sanityCheckPassed === undefined) this.sanityCheckPassed = (encodeZeroes() === 16056318);
return this.sanityCheckPassed;
}
opusBuffer(buffer) {

View File

@@ -189,6 +189,14 @@ export default class VoiceConnection extends EventEmitter {
self.client.emit("debug", "Tried to use node-opus, but opus not available - install it!");
return;
}
if (!self.encoder.sanityCheck()) {
self.playing = false;
self.emit("error", "Opus sanity check failed!");
self.client.emit("debug", "Opus sanity check failed - opus is installed but not correctly! Please reinstall opus and make sure it's installed correctly.");
return;
}
var buffer = self.encoder.opusBuffer(rawbuffer);
var packet = new VoicePacket(buffer, sequence, timestamp, self.vWSData.ssrc);
return self.sendPacket(packet, callback);