XCORE SDK
XCORE Software Development Kit
agc_api.h
1 // Copyright 2022 XMOS LIMITED.
2 // This Software is subject to the terms of the XMOS Public Licence: Version 1.
3 #ifndef AGC_API_H
4 #define AGC_API_H
5 
6 #include <xs3_math.h>
7 #include <agc_profiles.h>
8 
26 #define AGC_FRAME_ADVANCE 240u
27 
38 typedef struct {
41  int adapt;
91 } agc_config_t;
92 
103 typedef struct {
115  int lc_t_far;
130 } agc_state_t;
131 
158 void agc_init(agc_state_t *agc, agc_config_t *config);
159 
168 typedef struct {
170  int vad_flag;
177 
185 #define AGC_META_DATA_NO_VAD 0u
186 
192 #define AGC_VAD_THRESHOLD 205
193 
201 #define AGC_META_DATA_NO_AEC (float_s32_t){0, 0}
202 
230  int32_t output[AGC_FRAME_ADVANCE],
231  const int32_t input[AGC_FRAME_ADVANCE],
232  agc_meta_data_t *meta_data);
233 
234 #endif
#define AGC_FRAME_ADVANCE
Length of the frame of data on which the AGC will operate.
Definition: agc_api.h:26
void agc_init(agc_state_t *agc, agc_config_t *config)
Initialise the AGC.
void agc_process_frame(agc_state_t *agc, int32_t output[AGC_FRAME_ADVANCE], const int32_t input[AGC_FRAME_ADVANCE], agc_meta_data_t *meta_data)
Perform AGC processing on a frame of input data.
AGC configuration structure.
Definition: agc_api.h:38
float_s32_t lc_gamma_dec
Definition: agc_api.h:76
int lc_n_frame_far
Definition: agc_api.h:66
float_s32_t gain_dec
Definition: agc_api.h:61
float_s32_t lc_gamma_inc
Definition: agc_api.h:74
int adapt
Definition: agc_api.h:41
int lc_enabled
Definition: agc_api.h:64
float_s32_t lc_near_delta
Definition: agc_api.h:80
float_s32_t gain
Definition: agc_api.h:49
float_s32_t lc_far_delta
Definition: agc_api.h:78
float_s32_t max_gain
Definition: agc_api.h:51
float_s32_t lc_gain_silence
Definition: agc_api.h:88
float_s32_t upper_threshold
Definition: agc_api.h:55
int soft_clipping
Definition: agc_api.h:47
float_s32_t lc_corr_threshold
Definition: agc_api.h:70
int adapt_on_vad
Definition: agc_api.h:45
float_s32_t lower_threshold
Definition: agc_api.h:57
int lc_n_frame_near
Definition: agc_api.h:68
float_s32_t lc_bg_power_gamma
Definition: agc_api.h:72
float_s32_t lc_near_delta_far_active
Definition: agc_api.h:82
float_s32_t lc_gain_min
Definition: agc_api.h:90
float_s32_t lc_gain_max
Definition: agc_api.h:84
float_s32_t gain_inc
Definition: agc_api.h:59
float_s32_t min_gain
Definition: agc_api.h:53
float_s32_t lc_gain_double_talk
Definition: agc_api.h:86
AGC meta data structure.
Definition: agc_api.h:168
float_s32_t aec_corr_factor
Definition: agc_api.h:175
int vad_flag
Definition: agc_api.h:170
float_s32_t aec_ref_power
Definition: agc_api.h:172
AGC state structure.
Definition: agc_api.h:103
int lc_t_far
Definition: agc_api.h:115
float_s32_t x_peak
Definition: agc_api.h:113
float_s32_t lc_gain
Definition: agc_api.h:125
float_s32_t lc_far_bg_power_est
Definition: agc_api.h:127
float_s32_t lc_far_power_est
Definition: agc_api.h:121
int lc_t_near
Definition: agc_api.h:117
agc_config_t config
Definition: agc_api.h:106
float_s32_t x_slow
Definition: agc_api.h:109
float_s32_t lc_corr_val
Definition: agc_api.h:129
float_s32_t lc_near_bg_power_est
Definition: agc_api.h:123
float_s32_t x_fast
Definition: agc_api.h:111
float_s32_t lc_near_power_est
Definition: agc_api.h:119
A floating-point scalar with a 32-bit mantissa.
Definition: xs3_math_types.h:167