summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/OpenALStream.cpp
diff options
context:
space:
mode:
authorMichael Maltese <mchtly@gmail.com>2017-06-06 15:21:22 -0700
committerMichael Maltese <mchtly@gmail.com>2017-06-06 15:23:55 -0700
commit60f4f499e8587514409b6de91013e725adce3ce4 (patch)
treea699db63d266bbade450fa275ef54c922380e917 /Source/Core/AudioCommon/OpenALStream.cpp
parent3bfebf396a040ebec81d87fb15fa6ab27cc9241b (diff)
OpenAL: hardcode that X-Fi supports surround
Diffstat (limited to 'Source/Core/AudioCommon/OpenALStream.cpp')
-rw-r--r--Source/Core/AudioCommon/OpenALStream.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/Source/Core/AudioCommon/OpenALStream.cpp b/Source/Core/AudioCommon/OpenALStream.cpp
index b923522799..25dd14e7b2 100644
--- a/Source/Core/AudioCommon/OpenALStream.cpp
+++ b/Source/Core/AudioCommon/OpenALStream.cpp
@@ -155,18 +155,23 @@ static ALenum CheckALError(const char* desc)
return err;
}
+static bool IsCreativeXFi()
+{
+ return strstr(alGetString(AL_RENDERER), "X-Fi") != nullptr;
+}
+
void OpenALStream::SoundLoop()
{
Common::SetCurrentThreadName("Audio thread - openal");
bool float32_capable = alIsExtensionPresent("AL_EXT_float32") != 0;
- bool surround_capable =
- SConfig::GetInstance().bDPL2Decoder && alIsExtensionPresent("AL_EXT_MCFORMATS");
+ bool surround_capable = alIsExtensionPresent("AL_EXT_MCFORMATS") || IsCreativeXFi();
+ bool use_surround = SConfig::GetInstance().bDPL2Decoder && surround_capable;
// As there is no extension to check for 32-bit fixed point support
// and we know that only a X-Fi with hardware OpenAL supports it,
// we just check if one is being used.
- bool fixed32_capable = strstr(alGetString(AL_RENDERER), "X-Fi") != nullptr;
+ bool fixed32_capable = IsCreativeXFi();
u32 ulFrequency = m_mixer->GetSampleRate();
numBuffers = SConfig::GetInstance().iLatency + 2; // OpenAL requires a minimum of two buffers
@@ -218,7 +223,7 @@ void OpenALStream::SoundLoop()
unsigned int numSamples = OAL_MAX_SAMPLES;
- if (surround_capable)
+ if (use_surround)
{
// DPL2 accepts 240 samples minimum (FWRDURATION)
unsigned int minSamples = 240;
@@ -289,7 +294,7 @@ void OpenALStream::SoundLoop()
// 5.1 is not supported by the host, fallback to stereo
WARN_LOG(AUDIO,
"Unable to set 5.1 surround mode. Updating OpenAL Soft might fix this issue.");
- surround_capable = false;
+ use_surround = false;
}
}
else