Hold some immediate values on the stack

This commit is contained in:
Chris Robinson
2018-03-22 08:30:09 -07:00
parent 23fd7451d0
commit eeff730034
+13 -11
View File
@@ -58,7 +58,7 @@ typedef struct ALpshifterState {
/* Effect parameters */
ALsizei count;
ALfloat PitchShift;
ALfloat Frequency;
ALfloat FreqBin;
/*Effects buffers*/
ALfloat InFIFO[STFT_SIZE];
@@ -226,7 +226,7 @@ static ALboolean ALpshifterState_deviceUpdate(ALpshifterState *state, ALCdevice
/* (Re-)initializing parameters and clear the buffers. */
state->count = FIFO_LATENCY;
state->PitchShift = 1.0f;
state->Frequency = (ALfloat)device->Frequency;
state->FreqBin = device->Frequency / (ALfloat)STFT_SIZE;
memset(state->InFIFO, 0, sizeof(state->InFIFO));
memset(state->OutFIFO, 0, sizeof(state->OutFIFO));
@@ -263,24 +263,24 @@ static ALvoid ALpshifterState_process(ALpshifterState *state, ALsizei SamplesToD
*/
static const ALfloat expected = F_TAU / (ALfloat)OVERSAMP;
const ALfloat freq_bin = state->Frequency / (ALfloat)STFT_SIZE;
const ALfloat freq_bin = state->FreqBin;
ALfloat *restrict bufferOut = state->BufferOut;
ALsizei count = state->count;
ALsizei i, j, k;
for(i = 0;i < SamplesToDo;)
{
do {
/* Fill FIFO buffer with samples data */
state->InFIFO[state->count] = SamplesIn[0][i];
bufferOut[i] = state->OutFIFO[state->count - FIFO_LATENCY];
state->InFIFO[count] = SamplesIn[0][i];
bufferOut[i] = state->OutFIFO[count - FIFO_LATENCY];
state->count++;
} while(++i < SamplesToDo && state->count < STFT_SIZE);
count++;
} while(++i < SamplesToDo && count < STFT_SIZE);
/* Check whether FIFO buffer is filled */
if(state->count < STFT_SIZE) break;
state->count = FIFO_LATENCY;
if(count < STFT_SIZE) break;
count = FIFO_LATENCY;
/* Real signal windowing and store in FFTbuffer */
for(k = 0;k < STFT_SIZE;k++)
@@ -308,7 +308,8 @@ static ALvoid ALpshifterState_process(ALpshifterState *state, ALsizei SamplesToD
tmp = (component.Phase - state->LastPhase[k]) - (ALfloat)k*expected;
/* Map delta phase into +/- Pi interval */
tmp -= F_PI * (ALfloat)(fastf2i(tmp/F_PI) + (fastf2i(tmp/F_PI)&1));
j = fastf2i(tmp / F_PI);
tmp -= F_PI * (ALfloat)(j + (j&1));
/* Get deviation from bin frequency from the +/- Pi interval */
tmp /= expected;
@@ -383,6 +384,7 @@ static ALvoid ALpshifterState_process(ALpshifterState *state, ALsizei SamplesToD
for(k = 0;k < FIFO_LATENCY;k++)
state->InFIFO[k] = state->InFIFO[k+STFT_STEP];
}
state->count = count;
/* Now, mix the processed sound data to the output. */
MixSamples(bufferOut, NumChannels, SamplesOut, state->CurrentGains, state->TargetGains,