From 64e1a3a723cc3eed7bd598ca8e39d37a55148860 Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Wed, 12 Oct 2016 15:16:11 +0100 Subject: [PATCH] Improved firFilterApply efficiency --- src/main/common/filter.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/common/filter.c b/src/main/common/filter.c index b9606795e1..dde44ca9aa 100644 --- a/src/main/common/filter.c +++ b/src/main/common/filter.c @@ -156,12 +156,12 @@ void firFilterUpdate(firFilter_t *filter, float input) float firFilterApply(const firFilter_t *filter) { float ret = 0.0f; - int index = filter->index; - for (int ii = 0; ii < filter->coeffsLength; ++ii) { - --index; - if (index < 0) { - index = filter->bufLength - 1; - } + int ii = 0; + int index; + for (index = filter->index - 1; index >= 0; ++ii, --index) { + ret += filter->coeffs[ii] * filter->buf[index]; + } + for (index = filter->bufLength - 1; ii < filter->coeffsLength; ++ii, --index) { ret += filter->coeffs[ii] * filter->buf[index]; } return ret;