aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/mixer
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/mixer')
-rw-r--r--Alc/mixer/mixer_c.c13
-rw-r--r--Alc/mixer/mixer_neon.c7
-rw-r--r--Alc/mixer/mixer_sse.c7
3 files changed, 15 insertions, 12 deletions
diff --git a/Alc/mixer/mixer_c.c b/Alc/mixer/mixer_c.c
index 2dcd6c6b..14d7c669 100644
--- a/Alc/mixer/mixer_c.c
+++ b/Alc/mixer/mixer_c.c
@@ -108,21 +108,22 @@ void Mix_C(const ALfloat *data, ALsizei OutChans, ALfloat (*restrict OutBuffer)[
ALfloat *CurrentGains, const ALfloat *TargetGains, ALsizei Counter, ALsizei OutPos,
ALsizei BufferSize)
{
- ALfloat gain, delta, step;
+ const ALfloat delta = (Counter > 0) ? 1.0f/(ALfloat)Counter : 0.0f;
ALsizei c;
ASSUME(OutChans > 0);
ASSUME(BufferSize > 0);
- delta = (Counter > 0) ? 1.0f/(ALfloat)Counter : 0.0f;
for(c = 0;c < OutChans;c++)
{
ALsizei pos = 0;
- gain = CurrentGains[c];
- step = (TargetGains[c] - gain) * delta;
- if(fabsf(step) > FLT_EPSILON)
+ ALfloat gain = CurrentGains[c];
+ const ALfloat diff = TargetGains[c] - gain;
+
+ if(fabsf(diff) > FLT_EPSILON)
{
ALsizei minsize = mini(BufferSize, Counter);
+ const ALfloat step = diff * delta;
ALfloat step_count = 0.0f;
for(;pos < minsize;pos++)
{
@@ -158,7 +159,7 @@ void MixRow_C(ALfloat *OutBuffer, const ALfloat *Gains, const ALfloat (*restrict
for(c = 0;c < InChans;c++)
{
- ALfloat gain = Gains[c];
+ const ALfloat gain = Gains[c];
if(!(fabsf(gain) > GAIN_SILENCE_THRESHOLD))
continue;
diff --git a/Alc/mixer/mixer_neon.c b/Alc/mixer/mixer_neon.c
index ca274b07..9bf5521a 100644
--- a/Alc/mixer/mixer_neon.c
+++ b/Alc/mixer/mixer_neon.c
@@ -179,11 +179,12 @@ void Mix_Neon(const ALfloat *data, ALsizei OutChans, ALfloat (*restrict OutBuffe
{
ALsizei pos = 0;
ALfloat gain = CurrentGains[c];
- const ALfloat step = (TargetGains[c] - gain) * delta;
+ const ALfloat diff = TargetGains[c] - gain;
- if(fabsf(step) > FLT_EPSILON)
+ if(fabsf(diff) > FLT_EPSILON)
{
ALsizei minsize = mini(BufferSize, Counter);
+ const ALfloat step = diff * delta;
ALfloat step_count = 0.0f;
/* Mix with applying gain steps in aligned multiples of 4. */
if(LIKELY(minsize > 3))
@@ -260,7 +261,7 @@ void MixRow_Neon(ALfloat *OutBuffer, const ALfloat *Gains, const ALfloat (*restr
for(c = 0;c < InChans;c++)
{
ALsizei pos = 0;
- ALfloat gain = Gains[c];
+ const ALfloat gain = Gains[c];
if(!(fabsf(gain) > GAIN_SILENCE_THRESHOLD))
continue;
diff --git a/Alc/mixer/mixer_sse.c b/Alc/mixer/mixer_sse.c
index 78cf26f1..725a5ebc 100644
--- a/Alc/mixer/mixer_sse.c
+++ b/Alc/mixer/mixer_sse.c
@@ -149,11 +149,12 @@ void Mix_SSE(const ALfloat *data, ALsizei OutChans, ALfloat (*restrict OutBuffer
{
ALsizei pos = 0;
ALfloat gain = CurrentGains[c];
- const ALfloat step = (TargetGains[c] - gain) * delta;
+ const ALfloat diff = TargetGains[c] - gain;
- if(fabsf(step) > FLT_EPSILON)
+ if(fabsf(diff) > FLT_EPSILON)
{
ALsizei minsize = mini(BufferSize, Counter);
+ const ALfloat step = diff * delta;
ALfloat step_count = 0.0f;
/* Mix with applying gain steps in aligned multiples of 4. */
if(LIKELY(minsize > 3))
@@ -227,7 +228,7 @@ void MixRow_SSE(ALfloat *OutBuffer, const ALfloat *Gains, const ALfloat (*restri
for(c = 0;c < InChans;c++)
{
ALsizei pos = 0;
- ALfloat gain = Gains[c];
+ const ALfloat gain = Gains[c];
if(!(fabsf(gain) > GAIN_SILENCE_THRESHOLD))
continue;