diff options
author | Chris Robinson <[email protected]> | 2008-07-26 17:13:50 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2008-07-26 17:13:50 -0700 |
commit | 597e01153ebae150f734bcd640fb692bb69bdc05 (patch) | |
tree | 911dd8dc8d7d210615c71d041967597fc3db90f3 | |
parent | d3e5fcd13e6fa597a74d93ef87738b5491cc4bdf (diff) |
Use arrays instead of pointer-to-arrays for the low-pass filter
-rw-r--r-- | Alc/lpfilter.c | 21 | ||||
-rw-r--r-- | OpenAL32/Include/alFilter.h | 8 | ||||
-rw-r--r-- | OpenAL32/alAuxEffectSlot.c | 3 | ||||
-rw-r--r-- | OpenAL32/alSource.c | 3 |
4 files changed, 7 insertions, 28 deletions
diff --git a/Alc/lpfilter.c b/Alc/lpfilter.c index e10b15d7..2496f007 100644 --- a/Alc/lpfilter.c +++ b/Alc/lpfilter.c @@ -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 */ diff --git a/OpenAL32/Include/alFilter.h b/OpenAL32/Include/alFilter.h index c57dabb0..afda32c3 100644 --- a/OpenAL32/Include/alFilter.h +++ b/OpenAL32/Include/alFilter.h @@ -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 diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c index e05448cd..f9667ddb 100644 --- a/OpenAL32/alAuxEffectSlot.c +++ b/OpenAL32/alAuxEffectSlot.c @@ -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) diff --git a/OpenAL32/alSource.c b/OpenAL32/alSource.c index 1960b676..d7095f0f 100644 --- a/OpenAL32/alSource.c +++ b/OpenAL32/alSource.c @@ -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--; |