From 436e753065f3186d3bee62a1b73fb079857a3292 Mon Sep 17 00:00:00 2001 From: mattf Date: Thu, 27 Oct 2005 16:45:49 +0000 Subject: silly me, forgot to cvs add the new echo can :-) (Bug #5520) git-svn-id: http://svn.digium.com/svn/zaptel/trunk@799 5390a7c7-147a-4af0-8ec9-7488f05a26cb --- mg2ec_const.h | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100755 mg2ec_const.h (limited to 'mg2ec_const.h') diff --git a/mg2ec_const.h b/mg2ec_const.h new file mode 100755 index 0000000..c4e6a67 --- /dev/null +++ b/mg2ec_const.h @@ -0,0 +1,81 @@ +/* + Important constants for tuning mg2 echo can + */ +#ifndef _MG2_CONST_H +#define _MG2_CONST_H + + +/* Convergence (aka. adaptation) speed -- higher means slower */ +#define DEFAULT_BETA1_I 2048 + +/* Constants for various power computations */ +#define DEFAULT_SIGMA_LY_I 7 +#define DEFAULT_SIGMA_LU_I 7 +#define DEFAULT_ALPHA_ST_I 5 /* near-end speech detection sensitivity factor */ +#define DEFAULT_ALPHA_YT_I 5 + +#define DEFAULT_CUTOFF_I 128 + +/* Define the near-end speech hangover counter: if near-end speech + * is declared, hcntr is set equal to hangt (see pg. 432) + */ +#define DEFAULT_HANGT 600 /* in samples, so 600 samples = 75ms */ + +/* define the residual error suppression threshold */ +#define DEFAULT_SUPPR_I 16 /* 16 = -24db */ + +/* This is the minimum reference signal power estimate level + * that will result in filter adaptation. + * If this is too low then background noise will cause the filter + * coefficients to constantly be updated. + */ +#define MIN_UPDATE_THRESH_I 4096 + +/* The number of samples used to update coefficients using the + * the block update method (M). It should be related back to the + * length of the echo can. + * ie. it only updates coefficients when (sample number MOD default_m) = 0 + * + * Getting this wrong may cause an oops. Consider yourself warned! + */ +#define DEFAULT_M 16 /* every 16th sample */ + +/* If AGGRESSIVE supression is enabled, then we start cancelling residual + * echos again even while there is potentially the very end of a near-side + * signal present. + * This defines how many samples of DEFAULT_HANGT can remain before we + * kick back in + */ +#define AGGRESSIVE_HCNTR 160 /* in samples, so 160 samples = 20ms */ + +/* This knob controls the number of passes the residual echo supression + * algorithm makes. + */ +#ifdef AGGRESSIVE_SUPPRESSOR + #define RESIDUAL_SUPRESSION_PASSES 2 +#else + #define RESIDUAL_SUPRESSION_PASSES 1 +#endif + + +/***************************************************************/ +/* The following knobs are not implemented in the current code */ + +/* we need a dynamic level of suppression varying with the ratio of the + power of the echo to the power of the reference signal this is + done so that we have a smoother background. + we have a higher suppression when the power ratio is closer to + suppr_ceil and reduces logarithmically as we approach suppr_floor. + */ +#define SUPPR_FLOOR -64 +#define SUPPR_CEIL -24 + +/* in a second departure, we calculate the residual error suppression + * as a percentage of the reference signal energy level. The threshold + * is defined in terms of dB below the reference signal. + */ +#define RES_SUPR_FACTOR -20 + + +#endif /* _MG2_CONST_H */ + -- cgit v1.2.3