LibAudio/AudioServer: Add support for playing real time audio

This commit is contained in:
2025-08-06 01:50:41 +03:00
parent 7ad3f967db
commit 7a5cfe1728
5 changed files with 123 additions and 28 deletions

View File

@@ -18,6 +18,8 @@ namespace LibAudio
uint32_t sample_rate;
uint32_t channels;
BAN::Atomic<bool> paused { false };
uint32_t capacity;
BAN::Atomic<uint32_t> tail { 0 };
BAN::Atomic<uint32_t> head { 0 };
@@ -29,6 +31,7 @@ namespace LibAudio
BAN_NON_COPYABLE(Audio);
public:
static BAN::ErrorOr<Audio> create(uint32_t channels, uint32_t sample_rate, uint32_t sample_frames);
static BAN::ErrorOr<Audio> load(BAN::StringView path);
static BAN::ErrorOr<Audio> random(uint32_t samples);
~Audio() { clear(); }
@@ -37,9 +40,13 @@ namespace LibAudio
Audio& operator=(Audio&& other);
BAN::ErrorOr<void> start();
void update();
void set_paused(bool paused);
bool is_playing() const { return m_audio_buffer->tail != m_audio_buffer->head; }
void update();
size_t queue_samples(BAN::Span<const AudioBuffer::sample_t> samples);
private:
Audio() = default;