Skip to content

Commit

Permalink
feat(api): add AudioSourceWriteEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
Apehum committed Sep 11, 2024
1 parent 4f83aaa commit 13d4c3c
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package su.plo.voice.api.client.event.audio.source

import su.plo.voice.api.client.audio.device.source.DeviceSource
import su.plo.voice.api.client.audio.source.ClientAudioSource
import su.plo.voice.api.event.EventCancellableBase

/**
* This event is fired when the [ClientAudioSource] is about to write audio samples to [DeviceSource].
*/
data class AudioSourceWriteEvent(
val source: ClientAudioSource<*>,
val samples: ShortArray
) : EventCancellableBase()
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import su.plo.voice.api.client.event.audio.device.source.AlStreamSourceStoppedEv
import su.plo.voice.api.client.event.audio.source.AudioSourceClosedEvent
import su.plo.voice.api.client.event.audio.source.AudioSourceInitializedEvent
import su.plo.voice.api.client.event.audio.source.AudioSourceResetEvent
import su.plo.voice.api.client.event.audio.source.AudioSourceWriteEvent
import su.plo.voice.api.encryption.Encryption
import su.plo.voice.api.encryption.EncryptionException
import su.plo.voice.api.event.EventPriority
Expand Down Expand Up @@ -463,6 +464,8 @@ abstract class BaseClientAudioSource<T>(
}

private fun write(samples: ShortArray, sequenceNumber: Long) {
if (!voiceClient.eventBus.fire(AudioSourceWriteEvent(this, samples))) return

if (!activated.get()) {
source.write(AudioUtil.fadeIn(samples, source.channels))
} else if (sequenceNumber + 1 == endSequenceNumber) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ public final class SelfAudioInfoPacket implements Packet<ClientPacketUdpHandler>
@Getter
private short distance;

/**
* Returns data only if it has been changed on the server.
*/
public Optional<byte[]> getData() {
return Optional.ofNullable(data);
}
Expand Down

0 comments on commit 13d4c3c

Please sign in to comment.