diff options
Diffstat (limited to 'Source/Core/AudioCommon/Src/AudioCommon.cpp')
| -rw-r--r-- | Source/Core/AudioCommon/Src/AudioCommon.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Source/Core/AudioCommon/Src/AudioCommon.cpp b/Source/Core/AudioCommon/Src/AudioCommon.cpp new file mode 100644 index 0000000000..e8f60bc175 --- /dev/null +++ b/Source/Core/AudioCommon/Src/AudioCommon.cpp @@ -0,0 +1,51 @@ +#include "AudioCommon.h" +#include "Mixer.h" +#include "AOSoundStream.h" +#include "DSoundStream.h" +#include "NullSoundStream.h" + + +namespace AudioCommon { + +SoundStream *InitSoundStream(std::string backend, CMixer *mixer) { + + if (!mixer) { + mixer = new CMixer(); + } + + if (backend == "DSound") { + if (DSound::isValid()) + soundStream = new DSound(mixer, g_dspInitialize.hWnd); + } + else if (backend == "AOSound") { + if (AOSound::isValid()) + soundStream = new AOSound(mixer); + } + else if (backend == "NullSound") { + soundStream = new NullSound(mixer); + } + else { + PanicAlert("Cannot recognize backend %s", backend.c_str()); + return NULL; + } + + if (soundStream) { + if (!soundStream->Start()) { + PanicAlert("Could not initialize backend %s, falling back to NULL", + backend.c_str()); + delete soundStream; + soundStream = new NullSound(mixer); + soundStream->Start(); + } + } + else { + PanicAlert("Sound backend %s is not valid, falling back to NULL", + backend.c_str()); + delete soundStream; + soundStream = new NullSound(mixer); + soundStream->Start(); + } + return soundStream; +} + +} // Namespace |
