1 /* 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AECM_AECM_DEFINES_H_ 12 #define WEBRTC_MODULES_AUDIO_PROCESSING_AECM_AECM_DEFINES_H_ 13 14 #define AECM_DYNAMIC_Q /* Turn on/off dynamic Q-domain. */ 15 16 /* Algorithm parameters */ 17 #define FRAME_LEN 80 /* Total frame length, 10 ms. */ 18 19 #define PART_LEN 64 /* Length of partition. */ 20 #define PART_LEN_SHIFT 7 /* Length of (PART_LEN * 2) in base 2. */ 21 22 #define PART_LEN1 (PART_LEN + 1) /* Unique fft coefficients. */ 23 #define PART_LEN2 (PART_LEN << 1) /* Length of partition * 2. */ 24 #define PART_LEN4 (PART_LEN << 2) /* Length of partition * 4. */ 25 #define FAR_BUF_LEN PART_LEN4 /* Length of buffers. */ 26 #define MAX_DELAY 100 27 28 /* Counter parameters */ 29 #define CONV_LEN 512 /* Convergence length used at startup. */ 30 #define CONV_LEN2 (CONV_LEN << 1) /* Used at startup. */ 31 32 /* Energy parameters */ 33 #define MAX_BUF_LEN 64 /* History length of energy signals. */ 34 #define FAR_ENERGY_MIN 1025 /* Lowest Far energy level: At least 2 */ 35 /* in energy. */ 36 #define FAR_ENERGY_DIFF 929 /* Allowed difference between max */ 37 /* and min. */ 38 #define ENERGY_DEV_OFFSET 0 /* The energy error offset in Q8. */ 39 #define ENERGY_DEV_TOL 400 /* The energy estimation tolerance (Q8). */ 40 #define FAR_ENERGY_VAD_REGION 230 /* Far VAD tolerance region. */ 41 42 /* Stepsize parameters */ 43 #define MU_MIN 10 /* Min stepsize 2^-MU_MIN (far end energy */ 44 /* dependent). */ 45 #define MU_MAX 1 /* Max stepsize 2^-MU_MAX (far end energy */ 46 /* dependent). */ 47 #define MU_DIFF 9 /* MU_MIN - MU_MAX */ 48 49 /* Channel parameters */ 50 #define MIN_MSE_COUNT 20 /* Min number of consecutive blocks with enough */ 51 /* far end energy to compare channel estimates. */ 52 #define MIN_MSE_DIFF 29 /* The ratio between adapted and stored channel to */ 53 /* accept a new storage (0.8 in Q-MSE_RESOLUTION). */ 54 #define MSE_RESOLUTION 5 /* MSE parameter resolution. */ 55 #define RESOLUTION_CHANNEL16 12 /* W16 Channel in Q-RESOLUTION_CHANNEL16. */ 56 #define RESOLUTION_CHANNEL32 28 /* W32 Channel in Q-RESOLUTION_CHANNEL. */ 57 #define CHANNEL_VAD 16 /* Minimum energy in frequency band */ 58 /* to update channel. */ 59 60 /* Suppression gain parameters: SUPGAIN parameters in Q-(RESOLUTION_SUPGAIN). */ 61 #define RESOLUTION_SUPGAIN 8 /* Channel in Q-(RESOLUTION_SUPGAIN). */ 62 #define SUPGAIN_DEFAULT (1 << RESOLUTION_SUPGAIN) /* Default. */ 63 #define SUPGAIN_ERROR_PARAM_A 3072 /* Estimation error parameter */ 64 /* (Maximum gain) (8 in Q8). */ 65 #define SUPGAIN_ERROR_PARAM_B 1536 /* Estimation error parameter */ 66 /* (Gain before going down). */ 67 #define SUPGAIN_ERROR_PARAM_D SUPGAIN_DEFAULT /* Estimation error parameter */ 68 /* (Should be the same as Default) (1 in Q8). */ 69 #define SUPGAIN_EPC_DT 200 /* SUPGAIN_ERROR_PARAM_C * ENERGY_DEV_TOL */ 70 71 /* Defines for "check delay estimation" */ 72 #define CORR_WIDTH 31 /* Number of samples to correlate over. */ 73 #define CORR_MAX 16 /* Maximum correlation offset. */ 74 #define CORR_MAX_BUF 63 75 #define CORR_DEV 4 76 #define CORR_MAX_LEVEL 20 77 #define CORR_MAX_LOW 4 78 #define CORR_BUF_LEN (CORR_MAX << 1) + 1 79 /* Note that CORR_WIDTH + 2*CORR_MAX <= MAX_BUF_LEN. */ 80 81 #define ONE_Q14 (1 << 14) 82 83 /* NLP defines */ 84 #define NLP_COMP_LOW 3277 /* 0.2 in Q14 */ 85 #define NLP_COMP_HIGH ONE_Q14 /* 1 in Q14 */ 86 87 #endif 88