mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 03:23:29 +01:00
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
const StreamDispatcher = require('./StreamDispatcher');
|
|
|
|
/**
|
|
* The class that sends voice packet data to the voice connection.
|
|
* @implements {VolumeInterface}
|
|
* @extends {StreamDispatcher}
|
|
*/
|
|
class BroadcastDispatcher extends StreamDispatcher {
|
|
constructor(player, options, streams) {
|
|
super(player, options, streams);
|
|
this.broadcast = player.broadcast;
|
|
}
|
|
|
|
_write(chunk, enc, done) {
|
|
if (!this.startTime) this.startTime = Date.now();
|
|
for (const dispatcher of this.broadcast.dispatchers) {
|
|
dispatcher._write(chunk, enc);
|
|
}
|
|
this._step(done);
|
|
}
|
|
|
|
_destroy(err, cb) {
|
|
if (this.player.dispatcher === this) this.player.dispatcher = null;
|
|
const { streams } = this;
|
|
if (streams.opus) streams.opus.unpipe(this);
|
|
if (streams.ffmpeg) streams.ffmpeg.destroy();
|
|
super._destroy(err, cb);
|
|
}
|
|
|
|
setBitrate(value) {
|
|
if (!value || !this.streams.opus || !this.streams.opus.setBitrate) return false;
|
|
const bitrate = value === 'auto' ? 48 : value;
|
|
this.streams.opus.setBitrate(bitrate * 1000);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
module.exports = BroadcastDispatcher;
|