diff --git a/src/client/voice/VoiceBroadcast.js b/src/client/voice/VoiceBroadcast.js index dadbbc5ef..41aa1a082 100644 --- a/src/client/voice/VoiceBroadcast.js +++ b/src/client/voice/VoiceBroadcast.js @@ -23,7 +23,7 @@ class VoiceBroadcast extends EventEmitter { * @type {Client} */ this.client = client; - this.dispatchers = []; + this.dispatchers = new Set(); this.player = new BroadcastAudioPlayer(this); } diff --git a/src/client/voice/dispatcher/StreamDispatcher.js b/src/client/voice/dispatcher/StreamDispatcher.js index 8a6cb75df..eae032c40 100644 --- a/src/client/voice/dispatcher/StreamDispatcher.js +++ b/src/client/voice/dispatcher/StreamDispatcher.js @@ -29,8 +29,8 @@ nonce.fill(0); * @extends {stream.Writable} */ class StreamDispatcher extends Writable { - constructor(player, { seek = 0, volume = 1, passes = 1, fec, plp, bitrate = 96 } = {}, streams) { - const streamOptions = { seek, volume, passes, fec, plp, bitrate }; + constructor(player, { seek = 0, volume = 1, passes = 1, fec, plp, bitrate = 96, highWaterMark = 4096 } = {}, streams) { + const streamOptions = { seek, volume, passes, fec, plp, bitrate, highWaterMark }; super(streamOptions); /** * The Audio Player that controls this dispatcher @@ -82,6 +82,7 @@ class StreamDispatcher extends Writable { _destroy(err, cb) { if (this.player.dispatcher === this) this.player.dispatcher = null; const { streams } = this; + if (streams.broadcast) streams.broadcast.dispatchers.delete(this); if (streams.opus) streams.opus.unpipe(this); if (streams.ffmpeg) streams.ffmpeg.destroy(); super._destroy(err, cb); diff --git a/src/client/voice/player/AudioPlayer.js b/src/client/voice/player/AudioPlayer.js index 954b0b914..93394b1c8 100644 --- a/src/client/voice/player/AudioPlayer.js +++ b/src/client/voice/player/AudioPlayer.js @@ -1,5 +1,3 @@ -const prism = require('prism-media'); -const StreamDispatcher = require('../dispatcher/StreamDispatcher'); const BasePlayer = require('./BasePlayer'); /** @@ -19,7 +17,7 @@ class AudioPlayer extends BasePlayer { playBroadcast(broadcast, options) { const dispatcher = this.createDispatcher(options, { broadcast }); - broadcast.dispatchers.push(dispatcher); + broadcast.dispatchers.add(dispatcher); return dispatcher; } }