Improved firFilterApply efficiency

This commit is contained in:
Martin Budden 2016-10-12 15:16:11 +01:00
parent 6f3abcb27d
commit 64e1a3a723
1 changed files with 6 additions and 6 deletions

View File

@ -156,12 +156,12 @@ void firFilterUpdate(firFilter_t *filter, float input)
float firFilterApply(const firFilter_t *filter) float firFilterApply(const firFilter_t *filter)
{ {
float ret = 0.0f; float ret = 0.0f;
int index = filter->index; int ii = 0;
for (int ii = 0; ii < filter->coeffsLength; ++ii) { int index;
--index; for (index = filter->index - 1; index >= 0; ++ii, --index) {
if (index < 0) { ret += filter->coeffs[ii] * filter->buf[index];
index = filter->bufLength - 1;
} }
for (index = filter->bufLength - 1; ii < filter->coeffsLength; ++ii, --index) {
ret += filter->coeffs[ii] * filter->buf[index]; ret += filter->coeffs[ii] * filter->buf[index];
} }
return ret; return ret;