aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/ALu.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2014-11-05 02:54:11 -0800
committerChris Robinson <[email protected]>2014-11-05 02:54:11 -0800
commitc834c3fae59327a69914b22e8b7b357282963d3e (patch)
tree95587e365aef205eb70aedaddcdca765b9287910 /Alc/ALu.c
parente5016f814a265ed592a88acea95cf912c4bfdf12 (diff)
Set gains using the device channel index
Diffstat (limited to 'Alc/ALu.c')
-rw-r--r--Alc/ALu.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index 6d95a99c..8c491cd0 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -481,11 +481,12 @@ ALvoid CalcNonAttnSourceParams(ALvoice *voice, const ALsource *ALSource, const A
for(c = 0;c < num_channels;c++)
{
MixGains *gains = voice->Direct.Mix.Gains[c];
+ int idx;
for(j = 0;j < MaxChannels;j++)
gains[j].Target = 0.0f;
- if(GetChannelIdxByName(Device, chans[c].channel) != -1)
- gains[chans[c].channel].Target = DryGain;
+ if((idx=GetChannelIdxByName(Device, chans[c].channel)) != -1)
+ gains[idx].Target = DryGain;
}
UpdateDryStepping(&voice->Direct, num_channels);
@@ -532,10 +533,11 @@ ALvoid CalcNonAttnSourceParams(ALvoice *voice, const ALsource *ALSource, const A
/* Special-case LFE */
if(chans[c].channel == LFE)
{
+ int idx;
for(i = 0;i < MaxChannels;i++)
gains[i].Target = 0.0f;
- if(GetChannelIdxByName(Device, chans[c].channel) != -1)
- gains[chans[c].channel].Target = DryGain;
+ if((idx=GetChannelIdxByName(Device, chans[c].channel)) != -1)
+ gains[idx].Target = DryGain;
continue;
}
@@ -1089,21 +1091,13 @@ static inline ALubyte aluF2UB(ALfloat val)
static void Write_##T(ALCdevice *device, ALvoid **buffer, ALuint SamplesToDo) \
{ \
ALfloat (*restrict DryBuffer)[BUFFERSIZE] = device->DryBuffer; \
- const ALuint numchans = ChannelsFromDevFmt(device->FmtChans); \
- const enum Channel *chans = device->ChannelName; \
+ const ALuint numchans = device->NumSpeakers; \
ALuint i, j; \
\
- for(j = 0;j < MaxChannels;j++) \
+ for(j = 0;j < numchans;j++) \
{ \
- const enum Channel c = chans[j]; \
- const ALfloat *in; \
- T *restrict out; \
- \
- if(c == InvalidChannel) \
- continue; \
- \
- in = DryBuffer[c]; \
- out = (T*)(*buffer) + j; \
+ const ALfloat *in = DryBuffer[j]; \
+ T *restrict out = (T*)(*buffer) + j; \
for(i = 0;i < SamplesToDo;i++) \
out[i*numchans] = func(in[i]); \
} \