aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2011-07-05 14:00:11 -0700
committerChris Robinson <[email protected]>2011-07-05 14:00:11 -0700
commit21574f7e16d8ff2826b32cf11086e5c7dbac7c30 (patch)
tree02d7d6853b82857b83e6ebe51f65d1a76804904d
parent0903a7f1e056079541a40f5d6dfb27756b3e883b (diff)
Scale the WetGain parameter directly instead of on each application
-rw-r--r--Alc/ALu.c3
-rw-r--r--Alc/mixer.c14
2 files changed, 8 insertions, 9 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index adb1da67..83017cbc 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -323,7 +323,8 @@ ALvoid CalcNonAttnSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
}
}
for(i = 0;i < NumSends;i++)
- ALSource->Params.Send[i].WetGain = WetGain[i] * ListenerGain;
+ ALSource->Params.Send[i].WetGain = WetGain[i] * ListenerGain /
+ ALSource->NumChannels;
/* Update filter coefficients. Calculations based on the I3DL2
* spec. */
diff --git a/Alc/mixer.c b/Alc/mixer.c
index ab0cda7b..4caca6e2 100644
--- a/Alc/mixer.c
+++ b/Alc/mixer.c
@@ -75,7 +75,6 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize) \
{ \
const ALuint NumChannels = Source->NumChannels; \
- const ALfloat scaler = 1.0f/NumChannels; \
const T *RESTRICT data = srcdata; \
ALfloat (*RESTRICT DryBuffer)[MAXCHANNELS]; \
ALfloat *RESTRICT ClickRemoval, *RESTRICT PendingClicks; \
@@ -195,14 +194,14 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
value = sampler(data + pos*NumChannels + i, NumChannels,frac);\
value = lpFilter1PC(WetFilter, i, value); \
\
- WetClickRemoval[0] -= value*WetSend * scaler; \
+ WetClickRemoval[0] -= value * WetSend; \
} \
for(BufferIdx = 0;BufferIdx < BufferSize;BufferIdx++) \
{ \
value = sampler(data + pos*NumChannels + i, NumChannels,frac);\
value = lpFilter1P(WetFilter, i, value); \
\
- WetBuffer[OutPos] += value*WetSend * scaler; \
+ WetBuffer[OutPos] += value * WetSend; \
\
frac += increment; \
pos += frac>>FRACTIONBITS; \
@@ -214,7 +213,7 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
value = sampler(data + pos*NumChannels + i, NumChannels,frac);\
value = lpFilter1PC(WetFilter, i, value); \
\
- WetPendingClicks[0] += value*WetSend * scaler; \
+ WetPendingClicks[0] += value * WetSend; \
} \
OutPos -= BufferSize; \
} \
@@ -244,7 +243,6 @@ static void Mix_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize) \
{ \
const ALuint NumChannels = Source->NumChannels; \
- const ALfloat scaler = 1.0f/NumChannels; \
const T *RESTRICT data = srcdata; \
ALfloat (*DryBuffer)[MAXCHANNELS]; \
ALfloat *ClickRemoval, *PendingClicks; \
@@ -336,14 +334,14 @@ static void Mix_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
value = sampler(data + pos*NumChannels + i, NumChannels,frac);\
\
value = lpFilter1PC(WetFilter, i, value); \
- WetClickRemoval[0] -= value*WetSend * scaler; \
+ WetClickRemoval[0] -= value * WetSend; \
} \
for(BufferIdx = 0;BufferIdx < BufferSize;BufferIdx++) \
{ \
value = sampler(data + pos*NumChannels + i, NumChannels,frac);\
\
value = lpFilter1P(WetFilter, i, value); \
- WetBuffer[OutPos] += value*WetSend * scaler; \
+ WetBuffer[OutPos] += value * WetSend; \
\
frac += increment; \
pos += frac>>FRACTIONBITS; \
@@ -355,7 +353,7 @@ static void Mix_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
value = sampler(data + pos*NumChannels + i, NumChannels,frac);\
\
value = lpFilter1PC(WetFilter, i, value); \
- WetPendingClicks[0] += value*WetSend * scaler; \
+ WetPendingClicks[0] += value * WetSend; \
} \
OutPos -= BufferSize; \
} \