Use arrays instead of pointer-to-arrays for the low-pass filter

This commit is contained in:
Chris Robinson 2008-07-26 17:13:50 -07:00
parent d3e5fcd13e
commit 597e01153e
4 changed files with 7 additions and 28 deletions

View File

@ -87,24 +87,9 @@ int InitLowPassFilter(ALCcontext *Context, FILTER *iir)
ProtoCoef[1].b1 = 1.847759;
ProtoCoef[1].b2 = 1.0;
/*
* Allocate array of z-domain coefficients for each filter section
* plus filter gain variable
*/
iir->coef = (float*)calloc(4*FILTER_SECTIONS + 1, sizeof(float));
if(!iir->coef)
{
AL_PRINT("Unable to allocate coef array\n");
return 1;
}
/* allocate history array */
iir->history = (float*)calloc(2*FILTER_SECTIONS, sizeof(float));
if(!iir->history) {
AL_PRINT("\nUnable to allocate history array\n");
return 1;
}
/* Clear the coefficient and history arrays */
memset(iir->coef, 0, sizeof(iir->coef));
memset(iir->history, 0, sizeof(iir->history));
k = 1.0; /* Set overall filter gain */
coef = iir->coef + 1; /* Skip k, or gain */

View File

@ -7,9 +7,11 @@
extern "C" {
#endif
#define FILTER_SECTIONS 2 /* 2 filter sections for 24 db/oct filter */
typedef struct {
float *history; /* pointer to history in filter */
float *coef; /* pointer to coefficients of filter */
float history[2*FILTER_SECTIONS]; /* history in filter */
float coef[4*FILTER_SECTIONS + 1]; /* coefficients of filter */
} FILTER;
#define AL_FILTER_TYPE 0x8001
@ -53,8 +55,6 @@ AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pf
ALvoid ReleaseALFilters(ALvoid);
#define FILTER_SECTIONS 2 /* 2 filter sections for 24 db/oct filter */
int InitLowPassFilter(ALCcontext *Context, FILTER *iir);
#ifdef __cplusplus

View File

@ -141,9 +141,6 @@ AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, ALuint *effect
ALAuxiliaryEffectSlot = ((ALeffectslot*)ALTHUNK_LOOKUPENTRY(effectslots[i]));
free(ALAuxiliaryEffectSlot->iirFilter.coef);
free(ALAuxiliaryEffectSlot->iirFilter.history);
// Remove Source from list of Sources
list = &Context->AuxiliaryEffectSlot;
while(*list && *list != ALAuxiliaryEffectSlot)

View File

@ -181,9 +181,6 @@ ALAPI ALvoid ALAPIENTRY alDeleteSources(ALsizei n, const ALuint *sources)
ALSource->Send[j].Slot = NULL;
}
free(ALSource->iirFilter.coef);
free(ALSource->iirFilter.history);
// Decrement Source count
Context->SourceCount--;