mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-09 16:31:28 +12:00
Audio: device switching and channel count detection (#12246)
This commit is contained in:
parent
4b787b22c8
commit
98b730c806
39 changed files with 1235 additions and 395 deletions
|
@ -18,12 +18,16 @@
|
|||
|
||||
#include "Emu/Audio/AudioBackend.h"
|
||||
#include "Emu/Audio/Null/NullAudioBackend.h"
|
||||
#include "Emu/Audio/Null/null_enumerator.h"
|
||||
#include "Emu/Audio/Cubeb/CubebBackend.h"
|
||||
#include "Emu/Audio/Cubeb/cubeb_enumerator.h"
|
||||
#ifdef _WIN32
|
||||
#include "Emu/Audio/XAudio2/XAudio2Backend.h"
|
||||
#include "Emu/Audio/XAudio2/xaudio2_enumerator.h"
|
||||
#endif
|
||||
#ifdef HAVE_FAUDIO
|
||||
#include "Emu/Audio/FAudio/FAudioBackend.h"
|
||||
#include "Emu/Audio/FAudio/faudio_enumerator.h"
|
||||
#endif
|
||||
|
||||
#include <QFileInfo> // This shouldn't be outside rpcs3qt...
|
||||
|
@ -127,6 +131,22 @@ EmuCallbacks main_application::CreateCallbacks()
|
|||
return result;
|
||||
};
|
||||
|
||||
callbacks.get_audio_enumerator = [](u64 renderer) -> std::shared_ptr<audio_device_enumerator>
|
||||
{
|
||||
switch (static_cast<audio_renderer>(renderer))
|
||||
{
|
||||
case audio_renderer::null: return std::make_shared<null_enumerator>();
|
||||
#ifdef _WIN32
|
||||
case audio_renderer::xaudio: return std::make_shared<xaudio2_enumerator>();
|
||||
#endif
|
||||
case audio_renderer::cubeb: return std::make_shared<cubeb_enumerator>();
|
||||
#ifdef HAVE_FAUDIO
|
||||
case audio_renderer::faudio: return std::make_shared<faudio_enumerator>();
|
||||
#endif
|
||||
default: fmt::throw_exception("Invalid renderer index %u", renderer);
|
||||
}
|
||||
};
|
||||
|
||||
callbacks.resolve_path = [](std::string_view sv)
|
||||
{
|
||||
return QFileInfo(QString::fromUtf8(sv.data(), static_cast<int>(sv.size()))).canonicalFilePath().toStdString();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue