diff --git a/userspace/programs/AudioServer/AudioServer.cpp b/userspace/programs/AudioServer/AudioServer.cpp index 87483cef..4cc9aef0 100644 --- a/userspace/programs/AudioServer/AudioServer.cpp +++ b/userspace/programs/AudioServer/AudioServer.cpp @@ -1,5 +1,6 @@ #include "AudioServer.h" +#include #include #include #include @@ -306,9 +307,10 @@ void AudioServer::send_samples() while (m_samples_sent < m_samples.size()) { - const size_t samples_to_send = BAN::Math::min(m_send_buffer.size() / sizeof(kernel_sample_t), m_samples.size() - m_samples_sent); + const auto channels = device().channels; + const size_t samples_to_send = BAN::Math::min(device().sample_rate * channels, m_samples.size() - m_samples_sent) / channels * channels; - auto buffer = BAN::ByteSpan(m_send_buffer.data(), samples_to_send * sizeof(kernel_sample_t)); + auto buffer = BAN::ByteSpan(static_cast(alloca(samples_to_send * sizeof(kernel_sample_t))), samples_to_send * sizeof(kernel_sample_t)); { auto sample_buffer = buffer.as_span(); diff --git a/userspace/programs/AudioServer/AudioServer.h b/userspace/programs/AudioServer/AudioServer.h index c7ff9779..cf703f4b 100644 --- a/userspace/programs/AudioServer/AudioServer.h +++ b/userspace/programs/AudioServer/AudioServer.h @@ -68,7 +68,6 @@ private: size_t m_current_audio_device { 0 }; size_t m_samples_sent { 0 }; - BAN::Array m_send_buffer; BAN::CircularQueue m_samples; BAN::HashMap m_audio_buffers;