cellAudio: move some stuff to cpp

This commit is contained in:
Megamouse 2021-12-01 22:36:01 +01:00
parent e6b4655142
commit 68466f05b6
8 changed files with 50 additions and 19 deletions

View file

@ -49,6 +49,16 @@ CubebBackend::~CubebBackend()
#endif #endif
} }
bool CubebBackend::Initialized()
{
return m_ctx != nullptr;
}
bool CubebBackend::Operational()
{
return m_ctx != nullptr && m_stream != nullptr && !m_reset_req.observe();
}
void CubebBackend::Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) void CubebBackend::Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt)
{ {
if (m_ctx == nullptr) return; if (m_ctx == nullptr) return;

View file

@ -21,8 +21,8 @@ public:
static const u32 capabilities = 0; static const u32 capabilities = 0;
u32 GetCapabilities() const override { return capabilities; } u32 GetCapabilities() const override { return capabilities; }
bool Initialized() override { return m_ctx != nullptr; } bool Initialized() override;
bool Operational() override { return m_ctx != nullptr && m_stream != nullptr && !m_reset_req.observe(); } bool Operational() override;
void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) override; void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) override;
void Close() override; void Close() override;

View file

@ -120,6 +120,16 @@ void FAudioBackend::Close()
CloseUnlocked(); CloseUnlocked();
} }
bool FAudioBackend::Initialized()
{
return m_instance != nullptr;
}
bool FAudioBackend::Operational()
{
return m_instance != nullptr && m_source_voice != nullptr && !m_reset_req.observe();
}
void FAudioBackend::Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) void FAudioBackend::Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt)
{ {
if (m_instance == nullptr) return; if (m_instance == nullptr) return;

View file

@ -24,8 +24,8 @@ public:
static const u32 capabilities = SET_FREQUENCY_RATIO; static const u32 capabilities = SET_FREQUENCY_RATIO;
u32 GetCapabilities() const override { return capabilities; } u32 GetCapabilities() const override { return capabilities; }
bool Initialized() override { return m_instance != nullptr; } bool Initialized() override;
bool Operational() override { return m_instance != nullptr && m_source_voice != nullptr && !m_reset_req.observe(); } bool Operational() override;
void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) override; void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) override;
void Close() override; void Close() override;

View file

@ -74,9 +74,17 @@ XAudio2Backend::~XAudio2Backend()
} }
} }
bool XAudio2Backend::Initialized()
{
return m_xaudio2_instance != nullptr;
}
bool XAudio2Backend::Operational() bool XAudio2Backend::Operational()
{ {
if (m_dev_listener.output_device_changed()) m_reset_req = true; if (m_dev_listener.output_device_changed())
{
m_reset_req = true;
}
return m_xaudio2_instance != nullptr && m_source_voice != nullptr && !m_reset_req.observe(); return m_xaudio2_instance != nullptr && m_source_voice != nullptr && !m_reset_req.observe();
} }

View file

@ -26,7 +26,7 @@ public:
static const u32 capabilities = SET_FREQUENCY_RATIO; static const u32 capabilities = SET_FREQUENCY_RATIO;
u32 GetCapabilities() const override { return capabilities; } u32 GetCapabilities() const override { return capabilities; }
bool Initialized() override { return m_xaudio2_instance != nullptr; } bool Initialized() override;
bool Operational() override; bool Operational() override;
void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) override; void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) override;

View file

@ -648,7 +648,8 @@ void cell_audio_thread::operator()()
m_backend_failed = true; m_backend_failed = true;
continue; continue;
} }
else if (m_backend_failed)
if (m_backend_failed)
{ {
cellAudio.warning("Backend recovered"); cellAudio.warning("Backend recovered");
m_backend_failed = false; m_backend_failed = false;
@ -904,6 +905,19 @@ void cell_audio_thread::operator()()
ringbuffer.reset(); ringbuffer.reset();
} }
audio_port* cell_audio_thread::open_port()
{
for (u32 i = 0; i < AUDIO_PORT_COUNT; i++)
{
if (ports[i].state.compare_and_swap_test(audio_port_state::closed, audio_port_state::opened))
{
return &ports[i];
}
}
return nullptr;
}
template <audio_downmix downmix> template <audio_downmix downmix>
void cell_audio_thread::mix(float *out_buffer, s32 offset) void cell_audio_thread::mix(float *out_buffer, s32 offset)
{ {

View file

@ -419,18 +419,7 @@ public:
void operator()(); void operator()();
audio_port* open_port() audio_port* open_port();
{
for (u32 i = 0; i < AUDIO_PORT_COUNT; i++)
{
if (ports[i].state.compare_and_swap_test(audio_port_state::closed, audio_port_state::opened))
{
return &ports[i];
}
}
return nullptr;
}
bool has_capability(u32 cap) const bool has_capability(u32 cap) const
{ {