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
}
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)
{
if (m_ctx == nullptr) return;

View File

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

View File

@ -120,6 +120,16 @@ void FAudioBackend::Close()
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)
{
if (m_instance == nullptr) return;

View File

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

View File

@ -74,9 +74,17 @@ XAudio2Backend::~XAudio2Backend()
}
}
bool XAudio2Backend::Initialized()
{
return m_xaudio2_instance != nullptr;
}
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();
}

View File

@ -26,7 +26,7 @@ public:
static const u32 capabilities = SET_FREQUENCY_RATIO;
u32 GetCapabilities() const override { return capabilities; }
bool Initialized() override { return m_xaudio2_instance != nullptr; }
bool Initialized() override;
bool Operational() 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;
continue;
}
else if (m_backend_failed)
if (m_backend_failed)
{
cellAudio.warning("Backend recovered");
m_backend_failed = false;
@ -904,6 +905,19 @@ void cell_audio_thread::operator()()
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>
void cell_audio_thread::mix(float *out_buffer, s32 offset)
{

View File

@ -419,18 +419,7 @@ public:
void operator()();
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;
}
audio_port* open_port();
bool has_capability(u32 cap) const
{