LibAudio/AudioServer: Add support for playing real time audio
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user