kma@webrtc.org | f85b35a | 2012-06-07 16:17:17 +0000 | [diff] [blame] | 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 | |
kma@webrtc.org | f85b35a | 2012-06-07 16:17:17 +0000 | [diff] [blame] | 16 | /* Algorithm parameters */ |
| 17 | #define FRAME_LEN 80 /* Total frame length, 10 ms. */ |
| 18 | |
kma@webrtc.org | f85b35a | 2012-06-07 16:17:17 +0000 | [diff] [blame] | 19 | #define PART_LEN 64 /* Length of partition. */ |
| 20 | #define PART_LEN_SHIFT 7 /* Length of (PART_LEN * 2) in base 2. */ |
kma@webrtc.org | f85b35a | 2012-06-07 16:17:17 +0000 | [diff] [blame] | 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 */ |
kma@webrtc.org | f85b35a | 2012-06-07 16:17:17 +0000 | [diff] [blame] | 29 | #define CONV_LEN 512 /* Convergence length used at startup. */ |
kma@webrtc.org | f85b35a | 2012-06-07 16:17:17 +0000 | [diff] [blame] | 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 |