Calculate gain steps once during a source mix

This commit is contained in:
Chris Robinson
2010-08-06 07:55:00 -07:00
parent d9d8319c22
commit 044662e4b7
+11 -11
View File
@@ -119,9 +119,6 @@ static void MixSource(ALsource *ALSource, ALCcontext *ALContext,
DeviceFreq = ALContext->Device->Frequency;
rampLength = DeviceFreq * MIN_RAMP_LENGTH / 1000;
rampLength = max(rampLength, SamplesToDo);
/* Find buffer format */
Frequency = 0;
Channels = 0;
@@ -175,6 +172,17 @@ static void MixSource(ALsource *ALSource, ALCcontext *ALContext,
WetSend[i] = ALSource->WetGains[i];
}
/* Compute the gain steps for each output channel */
rampLength = DeviceFreq * MIN_RAMP_LENGTH / 1000;
rampLength = max(rampLength, SamplesToDo);
for(i = 0;i < OUTPUTCHANNELS;i++)
dryGainStep[i] = (ALSource->Params.DryGains[i]-DrySend[i]) /
rampLength;
for(i = 0;i < MAX_SENDS;i++)
wetGainStep[i] = (ALSource->Params.WetGains[i]-WetSend[i]) /
rampLength;
DryFilter = &ALSource->Params.iirFilter;
for(i = 0;i < MAX_SENDS;i++)
{
@@ -247,14 +255,6 @@ static void MixSource(ALsource *ALSource, ALCcontext *ALContext,
else
memset(&Data[DataSize*Channels], 0, (BUFFER_PADDING*Channels*Bytes));
/* Compute the gain steps for each output channel */
for(i = 0;i < OUTPUTCHANNELS;i++)
dryGainStep[i] = (ALSource->Params.DryGains[i]-DrySend[i]) /
rampLength;
for(i = 0;i < MAX_SENDS;i++)
wetGainStep[i] = (ALSource->Params.WetGains[i]-WetSend[i]) /
rampLength;
/* Figure out how many samples we can mix. */
DataSize64 = LoopEnd;
DataSize64 <<= FRACTIONBITS;