From c9076e4ef937867893d4e246f6b73ce69a65f00c Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Tue, 19 Mar 2024 19:01:22 +0200 Subject: [PATCH] improvements in audio --- src/audio_core/sdl_audio.cpp | 5 ++++- src/audio_core/sdl_audio.h | 6 +++++- src/core/libraries/libsceaudioout.cpp | 7 +++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/audio_core/sdl_audio.cpp b/src/audio_core/sdl_audio.cpp index 2e0d37457..99977ca2f 100644 --- a/src/audio_core/sdl_audio.cpp +++ b/src/audio_core/sdl_audio.cpp @@ -3,13 +3,14 @@ #include #include "sdl_audio.h" +namespace Audio { int SDLAudio::AudioInit() { return SDL_InitSubSystem(SDL_INIT_AUDIO); } int SDLAudio::AudioOutOpen(int type, u32 samples_num, u32 freq, u32 format) { - std::scoped_lock{m_mutex}; + std::scoped_lock lock{m_mutex}; for (int id = 0; id < portsOut.size(); id++) { auto& port = portsOut[id]; if (!port.isOpen) { @@ -24,3 +25,5 @@ int SDLAudio::AudioOutOpen(int type, u32 samples_num, u32 freq, u32 format) { return -1; // all ports are used } + +} // namespace Audio diff --git a/src/audio_core/sdl_audio.h b/src/audio_core/sdl_audio.h index 6d06cf6e9..0e3a7217b 100644 --- a/src/audio_core/sdl_audio.h +++ b/src/audio_core/sdl_audio.h @@ -7,6 +7,8 @@ #include "src/common/types.h" +namespace Audio { + class SDLAudio { public: SDLAudio() = default; @@ -27,4 +29,6 @@ private: }; std::mutex m_mutex; std::array portsOut; // main support up to 8 ports -}; \ No newline at end of file +}; + +} // namespace Audio \ No newline at end of file diff --git a/src/core/libraries/libsceaudioout.cpp b/src/core/libraries/libsceaudioout.cpp index b8ea19f02..429c28daf 100644 --- a/src/core/libraries/libsceaudioout.cpp +++ b/src/core/libraries/libsceaudioout.cpp @@ -11,6 +11,8 @@ namespace Libraries::AudioOut { +static std::unique_ptr audio; + static std::string_view GetAudioOutPort(u32 port) { switch (port) { case ORBIS_AUDIO_OUT_PORT_TYPE_MAIN: @@ -189,7 +191,7 @@ int PS4_SYSV_ABI sceAudioOutGetSystemState() { } int PS4_SYSV_ABI sceAudioOutInit() { - auto* audio = Common::Singleton::Instance(); + audio = std::make_unique(); u32 result = audio->AudioInit() == 0 ? ORBIS_OK : ORBIS_AUDIO_OUT_ERROR_NOT_INIT; LOG_INFO(Lib_AudioOut, "AudioInit returned {}", result); return result; @@ -231,7 +233,8 @@ s32 PS4_SYSV_ABI sceAudioOutOpen(UserService::OrbisUserServiceUserId user_id, LOG_INFO( Lib_AudioOut, "AudioOutOpen id = {} port_type = {} index= {} lenght= {} sample_rate= {} param_type= {}", - user_id, GetAudioOutPort(port_type), index, length, sample_rate, GetAudioOutParam(param_type)); + user_id, GetAudioOutPort(port_type), index, length, sample_rate, + GetAudioOutParam(param_type)); return ORBIS_OK; }