summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/Src/AudioCommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/AudioCommon/Src/AudioCommon.cpp')
-rw-r--r--Source/Core/AudioCommon/Src/AudioCommon.cpp51
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