From 68466f05b6491a7c5e2e3401940b7f00b71423fd Mon Sep 17 00:00:00 2001 From: Megamouse Date: Wed, 1 Dec 2021 22:36:01 +0100 Subject: [PATCH] cellAudio: move some stuff to cpp --- rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp | 10 ++++++++++ rpcs3/Emu/Audio/Cubeb/CubebBackend.h | 4 ++-- rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp | 10 ++++++++++ rpcs3/Emu/Audio/FAudio/FAudioBackend.h | 4 ++-- rpcs3/Emu/Audio/XAudio2/XAudio2Backend.cpp | 10 +++++++++- rpcs3/Emu/Audio/XAudio2/XAudio2Backend.h | 2 +- rpcs3/Emu/Cell/Modules/cellAudio.cpp | 16 +++++++++++++++- rpcs3/Emu/Cell/Modules/cellAudio.h | 13 +------------ 8 files changed, 50 insertions(+), 19 deletions(-) diff --git a/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp b/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp index c6e90ae417..f9b27e1be9 100644 --- a/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp +++ b/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp @@ -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; diff --git a/rpcs3/Emu/Audio/Cubeb/CubebBackend.h b/rpcs3/Emu/Audio/Cubeb/CubebBackend.h index 5b657d987d..794f8d720f 100644 --- a/rpcs3/Emu/Audio/Cubeb/CubebBackend.h +++ b/rpcs3/Emu/Audio/Cubeb/CubebBackend.h @@ -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; diff --git a/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp b/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp index 9d529990a2..5cf611436c 100644 --- a/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp +++ b/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp @@ -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; diff --git a/rpcs3/Emu/Audio/FAudio/FAudioBackend.h b/rpcs3/Emu/Audio/FAudio/FAudioBackend.h index 7490b22f19..f867e17961 100644 --- a/rpcs3/Emu/Audio/FAudio/FAudioBackend.h +++ b/rpcs3/Emu/Audio/FAudio/FAudioBackend.h @@ -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; diff --git a/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.cpp b/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.cpp index d604ed11ac..de5d0f9395 100644 --- a/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.cpp +++ b/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.cpp @@ -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(); } diff --git a/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.h b/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.h index f3c4d91171..f847c7692e 100644 --- a/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.h +++ b/rpcs3/Emu/Audio/XAudio2/XAudio2Backend.h @@ -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; diff --git a/rpcs3/Emu/Cell/Modules/cellAudio.cpp b/rpcs3/Emu/Cell/Modules/cellAudio.cpp index 24f14a037f..3e9da1661c 100644 --- a/rpcs3/Emu/Cell/Modules/cellAudio.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAudio.cpp @@ -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 void cell_audio_thread::mix(float *out_buffer, s32 offset) { diff --git a/rpcs3/Emu/Cell/Modules/cellAudio.h b/rpcs3/Emu/Cell/Modules/cellAudio.h index 8c62867783..82606d20d2 100644 --- a/rpcs3/Emu/Cell/Modules/cellAudio.h +++ b/rpcs3/Emu/Cell/Modules/cellAudio.h @@ -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 {