summaryrefslogtreecommitdiffstats
path: root/src/modules/echo-cancel/adrian-aec.c
diff options
context:
space:
mode:
authorArun Raghavan <arun.raghavan@collabora.co.uk>2010-09-13 18:41:30 +0530
committerArun Raghavan <arun.raghavan@collabora.co.uk>2010-09-23 17:17:03 +0530
commit83d3c8f22bab997dde81074fd547aef6e56451d5 (patch)
treebf378a032142ff0cde7fc402fd0a4bdf1ff49bc8 /src/modules/echo-cancel/adrian-aec.c
parent963250abb99ab43b209281c2aa5398205492e555 (diff)
echo-cancel: orc-ify some bits for optimisation
This uses Orc to optimise an inner loop in the core NLMS function of the Adrian echo canceller.
Diffstat (limited to 'src/modules/echo-cancel/adrian-aec.c')
-rw-r--r--src/modules/echo-cancel/adrian-aec.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/modules/echo-cancel/adrian-aec.c b/src/modules/echo-cancel/adrian-aec.c
index 39c2d638..269bd616 100644
--- a/src/modules/echo-cancel/adrian-aec.c
+++ b/src/modules/echo-cancel/adrian-aec.c
@@ -17,6 +17,10 @@
#include "adrian-aec.h"
+#ifndef DISABLE_ORC
+#include "adrian-aec-orc.h"
+#endif
+
#ifdef __SSE__
#include <xmmintrin.h>
#endif
@@ -190,6 +194,7 @@ static REAL AEC_nlms_pw(AEC *a, REAL d, REAL x_, float stepsize)
// calculate variable step size
REAL mikro_ef = stepsize * ef / a->dotp_xf_xf;
+#ifdef DISABLE_ORC
// update tap weights (filter learning)
int i;
for (i = 0; i < NLMS_LEN; i += 2) {
@@ -197,6 +202,9 @@ static REAL AEC_nlms_pw(AEC *a, REAL d, REAL x_, float stepsize)
a->w[i] += mikro_ef * a->xf[i + a->j];
a->w[i + 1] += mikro_ef * a->xf[i + a->j + 1];
}
+#else
+ update_tap_weights(a->w, &a->xf[a->j], mikro_ef, NLMS_LEN);
+#endif
}
if (--(a->j) < 0) {