AudioServer: Fix resampling math

This caused resampled audio to freeze the whole audio system after few
minutes of playing (like doom)
This commit is contained in:
2025-12-18 14:59:55 +02:00
parent e2ccc3026f
commit c64159d5c3
2 changed files with 40 additions and 31 deletions

View File

@@ -25,7 +25,17 @@ private:
struct ClientInfo
{
LibAudio::AudioBuffer* buffer;
size_t sample_frames_queued { 0 };
size_t queued_head { 0 };
size_t sample_frames_queued() const
{
return ((buffer->capacity + queued_head - buffer->tail) % buffer->capacity) / buffer->channels;
}
size_t sample_frames_available() const
{
return ((buffer->capacity + buffer->head - queued_head) % buffer->capacity) / buffer->channels;
}
};
using sample_t = LibAudio::AudioBuffer::sample_t;