]> code.delx.au - pulseaudio/blobdiff - src/modules/echo-cancel/adrian-aec.c
echo-cancel: orc-ify some bits for optimisation
[pulseaudio] / src / modules / echo-cancel / adrian-aec.c
index 39c2d638660a830e7daf0d1ad7fed14cb837d29b..269bd616f1dd6f79ab316b23a87ef3aaa0d90cd6 100644 (file)
 
 #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) {