aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-07-26 04:09:01 -0700
committerChris Robinson <[email protected]>2016-07-26 04:09:01 -0700
commita6f41e4cb085c12d7adca291624ac3c33bebd3cc (patch)
tree7c9bb603c0c9b10a0c874bb57ae21db0d2f58808
parent25d1b7bdba7b0c68e9e8e6f727c991cb69f24f4a (diff)
Remove the last use of ALfilterState_processSingle
-rw-r--r--Alc/effects/echo.c20
-rw-r--r--OpenAL32/Include/alFilter.h17
-rw-r--r--OpenAL32/alFilter.c1
3 files changed, 17 insertions, 21 deletions
diff --git a/Alc/effects/echo.c b/Alc/effects/echo.c
index 163b6ecb..4d2fd6f4 100644
--- a/Alc/effects/echo.c
+++ b/Alc/effects/echo.c
@@ -124,10 +124,14 @@ static ALvoid ALechoState_process(ALechoState *state, ALuint SamplesToDo, const
const ALuint tap1 = state->Tap[0].delay;
const ALuint tap2 = state->Tap[1].delay;
ALuint offset = state->Offset;
- ALfloat smp;
+ ALfloat x[2], y[2], in, out;
ALuint base;
ALuint i, k;
+ x[0] = state->Filter.x[0];
+ x[1] = state->Filter.x[1];
+ y[0] = state->Filter.y[0];
+ y[1] = state->Filter.y[1];
for(base = 0;base < SamplesToDo;)
{
ALfloat temps[128][2];
@@ -142,8 +146,14 @@ static ALvoid ALechoState_process(ALechoState *state, ALuint SamplesToDo, const
// Apply damping and feedback gain to the second tap, and mix in the
// new sample
- smp = ALfilterState_processSingle(&state->Filter, temps[i][1]+SamplesIn[0][i+base]);
- state->SampleBuffer[offset&mask] = smp * state->FeedGain;
+ in = temps[i][1] + SamplesIn[0][i+base];
+ out = in*state->Filter.b0 +
+ x[0]*state->Filter.b1 + x[1]*state->Filter.b2 -
+ y[0]*state->Filter.a1 - y[1]*state->Filter.a2;
+ x[1] = x[0]; x[0] = in;
+ y[1] = y[0]; y[0] = out;
+
+ state->SampleBuffer[offset&mask] = out * state->FeedGain;
offset++;
}
@@ -166,6 +176,10 @@ static ALvoid ALechoState_process(ALechoState *state, ALuint SamplesToDo, const
base += td;
}
+ state->Filter.x[0] = x[0];
+ state->Filter.x[1] = x[1];
+ state->Filter.y[0] = y[0];
+ state->Filter.y[1] = y[1];
state->Offset = offset;
}
diff --git a/OpenAL32/Include/alFilter.h b/OpenAL32/Include/alFilter.h
index 5d5c2136..a682d3ba 100644
--- a/OpenAL32/Include/alFilter.h
+++ b/OpenAL32/Include/alFilter.h
@@ -78,23 +78,6 @@ inline void ALfilterState_clear(ALfilterState *filter)
void ALfilterState_setParams(ALfilterState *filter, ALfilterType type, ALfloat gain, ALfloat freq_mult, ALfloat rcpQ);
-inline ALfloat ALfilterState_processSingle(ALfilterState *filter, ALfloat sample)
-{
- ALfloat outsmp;
-
- outsmp = filter->b0 * sample +
- filter->b1 * filter->x[0] +
- filter->b2 * filter->x[1] -
- filter->a1 * filter->y[0] -
- filter->a2 * filter->y[1];
- filter->x[1] = filter->x[0];
- filter->x[0] = sample;
- filter->y[1] = filter->y[0];
- filter->y[0] = outsmp;
-
- return outsmp;
-}
-
void ALfilterState_processC(ALfilterState *filter, ALfloat *restrict dst, const ALfloat *restrict src, ALuint numsamples);
inline void ALfilterState_processPassthru(ALfilterState *filter, const ALfloat *src, ALuint numsamples)
diff --git a/OpenAL32/alFilter.c b/OpenAL32/alFilter.c
index da447c27..e7382919 100644
--- a/OpenAL32/alFilter.c
+++ b/OpenAL32/alFilter.c
@@ -37,7 +37,6 @@ extern inline struct ALfilter *LookupFilter(ALCdevice *device, ALuint id);
extern inline struct ALfilter *RemoveFilter(ALCdevice *device, ALuint id);
extern inline void ALfilterState_clear(ALfilterState *filter);
extern inline void ALfilterState_processPassthru(ALfilterState *filter, const ALfloat *src, ALuint numsamples);
-extern inline ALfloat ALfilterState_processSingle(ALfilterState *filter, ALfloat sample);
extern inline ALfloat calc_rcpQ_from_slope(ALfloat gain, ALfloat slope);
extern inline ALfloat calc_rcpQ_from_bandwidth(ALfloat freq_mult, ALfloat bandwidth);