From 21574f7e16d8ff2826b32cf11086e5c7dbac7c30 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 5 Jul 2011 14:00:11 -0700 Subject: [PATCH] Scale the WetGain parameter directly instead of on each application --- Alc/ALu.c | 3 ++- Alc/mixer.c | 14 ++++++-------- 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; \ } \