aboutsummaryrefslogtreecommitdiffstats
path: root/alc/mixer/mixer_c.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alc/mixer/mixer_c.cpp')
-rw-r--r--alc/mixer/mixer_c.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/alc/mixer/mixer_c.cpp b/alc/mixer/mixer_c.cpp
index 4985933c..dd094040 100644
--- a/alc/mixer/mixer_c.cpp
+++ b/alc/mixer/mixer_c.cpp
@@ -189,20 +189,18 @@ void Mix_<CTag>(const ALfloat *data, const al::span<FloatBufferLine> OutBuffer,
* stepping is necessary.
*/
template<>
-void MixRow_<CTag>(ALfloat *OutBuffer, const al::span<const ALfloat> Gains,
- const ALfloat *InSamples, const ALsizei InStride, const ALsizei BufferSize)
+void MixRow_<CTag>(const al::span<float> OutBuffer, const al::span<const float> Gains,
+ const float *InSamples, const size_t InStride)
{
- ASSUME(BufferSize > 0);
-
- for(const ALfloat gain : Gains)
+ for(const float gain : Gains)
{
- const ALfloat *RESTRICT src{InSamples};
+ const float *RESTRICT src{InSamples};
InSamples += InStride;
if(!(std::fabs(gain) > GAIN_SILENCE_THRESHOLD))
continue;
- for(ALsizei i{0};i < BufferSize;i++)
- OutBuffer[i] += src[i] * gain;
+ std::transform(OutBuffer.begin(), OutBuffer.end(), src, OutBuffer.begin(),
+ [gain](const ALfloat cur, const ALfloat src) -> ALfloat { return cur + src*gain; });
}
}