diff options
| author | Michael Maltese <michaeljosephmaltese@gmail.com> | 2017-04-23 18:05:21 -0700 |
|---|---|---|
| committer | Michael Maltese <michaeljosephmaltese@gmail.com> | 2017-06-03 16:53:59 -0700 |
| commit | a4508e85e8b63e085eac9dca877fae9f7d65e09a (patch) | |
| tree | 24dc9c24b1ba4aaf85d0d0ae31fe8b8c05ee6922 /Source/Core/AudioCommon/Mixer.cpp | |
| parent | 0e6bd74ed626dd25a85682b90426c26cb10d6a16 (diff) | |
AudioCommon: move DPL2 decoding into Mixer
Diffstat (limited to 'Source/Core/AudioCommon/Mixer.cpp')
| -rw-r--r-- | Source/Core/AudioCommon/Mixer.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp index 8149da088c..2454042fe2 100644 --- a/Source/Core/AudioCommon/Mixer.cpp +++ b/Source/Core/AudioCommon/Mixer.cpp @@ -7,6 +7,7 @@ #include <cmath> #include <cstring> +#include "AudioCommon/DPL2Decoder.h" #include "Common/CommonTypes.h" #include "Common/Logging/Log.h" #include "Common/MathUtil.h" @@ -25,6 +26,8 @@ CMixer::CMixer(unsigned int BackendSampleRate) : m_sampleRate(BackendSampleRate) m_sound_touch.setSetting(SETTING_SEQUENCE_MS, 62); m_sound_touch.setSetting(SETTING_SEEKWINDOW_MS, 28); m_sound_touch.setSetting(SETTING_OVERLAP_MS, 8); + + DPL2Reset(); } CMixer::~CMixer() @@ -159,6 +162,25 @@ unsigned int CMixer::Mix(short* samples, unsigned int num_samples) return num_samples; } +unsigned int CMixer::MixSurround(float* samples, unsigned int num_samples) +{ + if (!num_samples) + return 0; + + memset(samples, 0, num_samples * 6 * sizeof(float)); + + unsigned int available_samples = Mix(m_stretch_buffer.data(), num_samples); + for (size_t i = 0; i < static_cast<size_t>(available_samples) * 2; ++i) + { + m_float_conversion_buffer[i] = + m_stretch_buffer[i] / static_cast<float>(std::numeric_limits<short>::max()); + } + + DPL2Decode(m_float_conversion_buffer.data(), available_samples, samples); + + return available_samples; +} + void CMixer::StretchAudio(const short* in, unsigned int num_in, short* out, unsigned int num_out) { const double time_delta = static_cast<double>(num_out) / m_sampleRate; // seconds |
