From eacd4af0a4ff2a7163a07f428037044007c6ab7a Mon Sep 17 00:00:00 2001 From: mattf Date: Thu, 8 Sep 2005 00:19:49 +0000 Subject: Add aggressive suppressor timelimit (Bug #4823) git-svn-id: http://svn.digium.com/svn/zaptel/trunk@757 5390a7c7-147a-4af0-8ec9-7488f05a26cb --- mec2.h | 17 ++++++++++++++--- mec2_const.h | 3 +++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/mec2.h b/mec2.h index b340622..c539cfd 100755 --- a/mec2.h +++ b/mec2.h @@ -334,10 +334,21 @@ static inline short echo_can_update(echo_can_state_t *ec, short iref, short isig */ #ifndef NO_ECHO_SUPPRESSOR #ifdef AGGRESSIVE_SUPPRESSOR - if ((ec->HCNTR_d < AGGRESSIVE_HCNTR) && (ec->Ly_i > (ec->Lu_i << 1))) { - u = u * (ec->Lu_i >> DEFAULT_SIGMA_LU_I) / ((ec->Ly_i >> (DEFAULT_SIGMA_LY_I)) + 1); - u = u * (ec->Lu_i >> DEFAULT_SIGMA_LU_I) / ((ec->Ly_i >> (DEFAULT_SIGMA_LY_I)) + 1); +#ifdef AGGRESSIVE_TIMELIMIT /* This allows the aggressive suppressor to turn off after set amount of time */ + if (ec->i_d > AGGRESSIVE_TIMELIMIT ) { + if ((ec->HCNTR_d == 0) && ((ec->Ly_i/(ec->Lu_i + 1)) > DEFAULT_SUPPR_I)) { + u = u * (ec->Lu_i >> DEFAULT_SIGMA_LU_I) / ((ec->Ly_i >> (DEFAULT_SIGMA_LY_I + 2)) + 1); + } } + else { +#endif + if ((ec->HCNTR_d < AGGRESSIVE_HCNTR) && (ec->Ly_i > (ec->Lu_i << 1))) { + u = u * (ec->Lu_i >> DEFAULT_SIGMA_LU_I) / ((ec->Ly_i >> (DEFAULT_SIGMA_LY_I)) + 1); + u = u * (ec->Lu_i >> DEFAULT_SIGMA_LU_I) / ((ec->Ly_i >> (DEFAULT_SIGMA_LY_I)) + 1); + } +#ifdef AGGRESSIVE_TIMELIMIT + } +#endif #else if ((ec->HCNTR_d == 0) && ((ec->Ly_i/(ec->Lu_i + 1)) > DEFAULT_SUPPR_I)) { u = u * (ec->Lu_i >> DEFAULT_SIGMA_LU_I) / ((ec->Ly_i >> (DEFAULT_SIGMA_LY_I + 2)) + 1); diff --git a/mec2_const.h b/mec2_const.h index 9c897f4..4c7e8c9 100755 --- a/mec2_const.h +++ b/mec2_const.h @@ -21,5 +21,8 @@ #define RES_SUPR_FACTOR -20 #define AGGRESSIVE_HCNTR 160 /* 20ms */ +/* Only use agressive echo cancellation for this amount of time then go back to normal cancelation */ +/* #define AGGRESSIVE_TIMELIMIT 150000 */ /* 8 = 1ms */ + #endif /* _MEC2_CONST_H */ -- cgit v1.2.3