diff --git a/src/main/java/com/bbn/hadder/audio/AudioPlayerSendHandler.java b/src/main/java/com/bbn/hadder/audio/AudioPlayerSendHandler.java new file mode 100644 index 0000000..1863de2 --- /dev/null +++ b/src/main/java/com/bbn/hadder/audio/AudioPlayerSendHandler.java @@ -0,0 +1,49 @@ +package com.bbn.hadder.audio; + +import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; +import com.sedmelluq.discord.lavaplayer.track.playback.AudioFrame; +import net.dv8tion.jda.api.audio.AudioSendHandler; + +import javax.annotation.Nullable; +import java.nio.ByteBuffer; + +/** + * @author Skidder / GregTCLTK + */ + +public class AudioPlayerSendHandler implements AudioSendHandler { + + private final AudioPlayer audioPlayer; + private AudioFrame lastFrame; + + public AudioPlayerSendHandler(AudioPlayer audioPlayer) { + this.audioPlayer = audioPlayer; + } + + @Override + public boolean canProvide() { + if (lastFrame == null) { + lastFrame = audioPlayer.provide(); + } + + return lastFrame != null; + } + + @Nullable + @Override + public ByteBuffer provide20MsAudio() { + if (lastFrame == null) { + lastFrame = audioPlayer.provide(); + } + + byte[] data = lastFrame != null ? lastFrame.getData() : null; + lastFrame = null; + + return ByteBuffer.wrap(data); + } + + @Override + public boolean isOpus() { + return true; + } +}