summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2005-09-08 00:19:49 +0000
committermattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2005-09-08 00:19:49 +0000
commiteacd4af0a4ff2a7163a07f428037044007c6ab7a (patch)
tree3bb78938db20b34fef905435334fcfd454bacfea
parent0f9a1d5d56ecdce6c0a79c09fb3290040fe9a488 (diff)
Add aggressive suppressor timelimit (Bug #4823)
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@757 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rwxr-xr-xmec2.h17
-rwxr-xr-xmec2_const.h3
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 */