From a4508e85e8b63e085eac9dca877fae9f7d65e09a Mon Sep 17 00:00:00 2001 From: Michael Maltese Date: Sun, 23 Apr 2017 18:05:21 -0700 Subject: AudioCommon: move DPL2 decoding into Mixer --- Source/Core/AudioCommon/OpenALStream.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'Source/Core/AudioCommon/OpenALStream.cpp') diff --git a/Source/Core/AudioCommon/OpenALStream.cpp b/Source/Core/AudioCommon/OpenALStream.cpp index 3d4bc90e1d..ca343be005 100644 --- a/Source/Core/AudioCommon/OpenALStream.cpp +++ b/Source/Core/AudioCommon/OpenALStream.cpp @@ -6,7 +6,6 @@ #include #include -#include "AudioCommon/DPL2Decoder.h" #include "AudioCommon/OpenALStream.h" #include "AudioCommon/aldlist.h" #include "Common/Logging/Log.h" @@ -66,9 +65,6 @@ bool OpenALStream::Start() PanicAlertT("OpenAL: can't find sound devices"); } - // Initialize DPL2 parameters - DPL2Reset(); - return bReturn; } @@ -228,23 +224,18 @@ void OpenALStream::SoundLoop() numBuffersQueued -= numBuffersProcessed; } - // DPL2 accepts 240 samples minimum (FWRDURATION) - unsigned int minSamples = surround_capable ? 240 : 0; - unsigned int numSamples = OAL_MAX_SAMPLES; - numSamples = m_mixer->Mix(realtimeBuffer, numSamples); - - // Convert the samples from short to float - for (u32 i = 0; i < numSamples * STEREO_CHANNELS; ++i) - sampleBuffer[i] = static_cast(realtimeBuffer[i]) / (1 << 15); - - if (numSamples <= minSamples) - continue; if (surround_capable) { + // DPL2 accepts 240 samples minimum (FWRDURATION) + unsigned int minSamples = 240; + float dpl2[OAL_MAX_SAMPLES * OAL_MAX_BUFFERS * SURROUND_CHANNELS]; - DPL2Decode(sampleBuffer, numSamples, dpl2); + numSamples = m_mixer->MixSurround(dpl2, numSamples); + + if (numSamples < minSamples) + continue; // zero-out the subwoofer channel - DPL2Decode generates a pretty // good 5.0 but not a good 5.1 output. Sadly there is not a 5.0 @@ -311,6 +302,15 @@ void OpenALStream::SoundLoop() } else { + numSamples = m_mixer->Mix(realtimeBuffer, numSamples); + + // Convert the samples from short to float + for (u32 i = 0; i < numSamples * STEREO_CHANNELS; ++i) + sampleBuffer[i] = static_cast(realtimeBuffer[i]) / (1 << 15); + + if (!numSamples) + continue; + if (float32_capable) { alBufferData(uiBuffers[nextBuffer], AL_FORMAT_STEREO_FLOAT32, sampleBuffer, -- cgit v1.2.3