5#ifndef YAZE_APP_EMU_AUDIO_AUDIO_BACKEND_H
6#define YAZE_APP_EMU_AUDIO_AUDIO_BACKEND_H
62 virtual bool QueueSamples(
const int16_t* samples,
int num_samples) = 0;
63 virtual bool QueueSamples(
const float* samples,
int num_samples) = 0;
65 int frames_per_channel,
int channels,
103 void Play()
override;
104 void Pause()
override;
105 void Stop()
override;
106 void Clear()
override;
108 bool QueueSamples(
const int16_t* samples,
int num_samples)
override;
109 bool QueueSamples(
const float* samples,
int num_samples)
override;
111 int channels,
int native_rate)
override;
121 int channels)
override;
160 void Play()
override;
161 void Pause()
override;
162 void Stop()
override;
163 void Clear()
override;
165 bool QueueSamples(
const int16_t* samples,
int num_samples)
override;
166 bool QueueSamples(
const float* samples,
int num_samples)
override;
168 int channels,
int native_rate)
override;
178 int channels)
override;
Factory for creating audio backends.
static std::unique_ptr< IAudioBackend > Create(BackendType type)
Abstract audio backend interface.
virtual std::string GetBackendName() const =0
virtual bool QueueSamples(const float *samples, int num_samples)=0
virtual void SetVolume(float volume)=0
virtual bool Initialize(const AudioConfig &config)=0
virtual bool QueueSamplesNative(const int16_t *samples, int frames_per_channel, int channels, int native_rate)
virtual void SetAudioStreamResampling(bool enable, int native_rate, int channels)
virtual AudioStatus GetStatus() const =0
virtual bool SupportsAudioStream() const
virtual bool IsInitialized() const =0
virtual void Shutdown()=0
virtual ~IAudioBackend()=default
virtual AudioConfig GetConfig() const =0
virtual float GetVolume() const =0
virtual bool IsAudioStreamEnabled() const
virtual bool QueueSamples(const int16_t *samples, int num_samples)=0
Null audio backend for testing/headless operation.
bool QueueSamplesNative(const int16_t *samples, int frames_per_channel, int channels, int native_rate) override
uint64_t total_queued_frames_
float GetVolume() const override
AudioStatus GetStatus() const override
void SetAudioStreamResampling(bool enable, int native_rate, int channels) override
bool audio_stream_enabled_
NullAudioBackend()=default
bool IsAudioStreamEnabled() const override
AudioConfig GetConfig() const override
std::string GetBackendName() const override
bool IsInitialized() const override
bool SupportsAudioStream() const override
uint64_t total_queued_samples_
uint64_t GetTotalQueuedSamples() const
~NullAudioBackend() override=default
bool QueueSamples(const int16_t *samples, int num_samples) override
uint64_t GetTotalQueuedFrames() const
bool Initialize(const AudioConfig &config) override
void SetVolume(float volume) override
uint64_t current_queued_bytes_
SDL2 audio backend implementation.
AudioConfig GetConfig() const override
SDL_AudioFormat device_format_
bool SupportsAudioStream() const override
bool IsAudioStreamEnabled() const override
void SetVolume(float volume) override
bool Initialize(const AudioConfig &config) override
~SDL2AudioBackend() override
bool IsInitialized() const override
std::vector< int16_t > stream_buffer_
bool audio_stream_enabled_
std::string GetBackendName() const override
SDL2AudioBackend()=default
SDL_AudioStream * audio_stream_
AudioStatus GetStatus() const override
float GetVolume() const override
bool QueueSamplesNative(const int16_t *samples, int frames_per_channel, int channels, int native_rate) override
bool QueueSamples(const int16_t *samples, int num_samples) override
void SetAudioStreamResampling(bool enable, int native_rate, int channels) override
SDL2/SDL3 compatibility layer.