sink fix buffer size for i24

Signed-off-by: Miguel Álvarez Díez <miguelwork92@gmail.com>
pull/4032/head
Miguel Álvarez Díez 2025-01-10 00:34:07 +01:00
parent 779f5c84cc
commit 631153e352
1 changed files with 6 additions and 6 deletions

View File

@ -56,7 +56,6 @@ public class PCMWebSocketAudioSink implements AudioSink {
* Should try to be sent event on and error as the client should be aware that data transmission has ended. * Should try to be sent event on and error as the client should be aware that data transmission has ended.
*/ */
private static final byte STREAM_TERMINATION_BYTE = (byte) 254; private static final byte STREAM_TERMINATION_BYTE = (byte) 254;
private static final int DEFAULT_BUFFER_SIZE = 8192;
private final Set<AudioFormat> supportedFormats = Set.of(AudioFormat.WAV, AudioFormat.PCM_SIGNED); private final Set<AudioFormat> supportedFormats = Set.of(AudioFormat.WAV, AudioFormat.PCM_SIGNED);
private final Set<Class<? extends AudioStream>> supportedStreams = Set.of(FixedLengthAudioStream.class, private final Set<Class<? extends AudioStream>> supportedStreams = Set.of(FixedLengthAudioStream.class,
PipedAudioStream.class); PipedAudioStream.class);
@ -145,7 +144,8 @@ public class PCMWebSocketAudioSink implements AudioSink {
} else { } else {
finalAudioStream = audioStream; finalAudioStream = audioStream;
} }
transferAudio(finalAudioStream, outputStream, duration, transferenceAborted); int bytesPer500ms = (targetSampleRate * (targetBitDepth / 8) * channels) / 2;
transferAudio(finalAudioStream, outputStream, bytesPer500ms, duration, transferenceAborted);
} catch (InterruptedIOException ignored) { } catch (InterruptedIOException ignored) {
} catch (IOException e) { } catch (IOException e) {
logger.warn("IOException: {}", e.getMessage()); logger.warn("IOException: {}", e.getMessage());
@ -167,14 +167,14 @@ public class PCMWebSocketAudioSink implements AudioSink {
} }
} }
private void transferAudio(InputStream inputStream, OutputStream outputStream, long duration, AtomicBoolean aborted) private void transferAudio(InputStream inputStream, OutputStream outputStream, int chunkSize, long duration,
throws IOException, InterruptedException { AtomicBoolean aborted) throws IOException, InterruptedException {
Instant start = Instant.now(); Instant start = Instant.now();
long transferred = 0; long transferred = 0;
try { try {
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; byte[] buffer = new byte[chunkSize];
int read; int read;
while (!aborted.get() && (read = inputStream.read(buffer, 0, DEFAULT_BUFFER_SIZE)) >= 0) { while (!aborted.get() && (read = inputStream.read(buffer, 0, chunkSize)) >= 0) {
outputStream.write(buffer, 0, read); outputStream.write(buffer, 0, read);
transferred += read; transferred += read;
} }