ADEC Data Structure and Enum definitions¶
-
enum adec_mode_t¶
Values:
-
enumerator ADEC_NORMAL_AEC_MODE¶
ADEC processing mode where it monitors AEC performance and requests small delay correction.
-
enumerator ADEC_DELAY_ESTIMATOR_MODE¶
ADEC processing mode for bulk delay correction in which it measures for a new delay offset.
-
enumerator ADEC_NORMAL_AEC_MODE¶
-
struct adec_config_t¶
- #include <adec_state.h>
ADEC configuration structure.
This is used to provide configuration when initialising ADEC at startup. A copy of this structure is present in the ADEC state structure and available to be modified by the application for run time control of ADEC configuration.
Public Members
-
int32_t bypass¶
Bypass ADEC decision making process. When set to 1, ADEC evaluates the current input frame metrics but doesn’t make any delay correction or aec reset and reconfiguration requests
-
int32_t force_de_cycle_trigger¶
Force trigger a delay estimation cycle. When set to 1, ADEC bypasses the ADEC monitoring process and transitions to delay estimation mode for measuring delay offset.
-
int32_t bypass¶
-
struct de_output_t¶
- #include <adec_state.h>
Delay estimator output structure.
Public Members
-
int32_t measured_delay_samples¶
Estimated microphone delay in time domain samples.
-
int32_t peak_power_phase_index¶
Phase index of peak energy AEC filter phase.
-
float_s32_t peak_phase_power¶
Maximum per phase energy across all AEC filter phases.
-
float_s32_t sum_phase_powers¶
Sum of filter energy across all filter phases.
-
float_s32_t peak_to_average_ratio¶
Ratio of peak filter phase energy to average filter phase energy. Used to evaluate how well the filter has converged.
-
float_s32_t phase_power[AEC_LIB_MAX_PHASES]¶
Phase energy of all AEC filter phases.
-
int32_t measured_delay_samples¶
-
struct adec_output_t¶
- #include <adec_state.h>
ADEC output structure.
Public Members
-
int32_t delay_change_request_flag¶
Flag indicating if ADEC is requesting an input delay correction
-
int32_t requested_mic_delay_samples¶
Mic delay in samples requested by ADEC. Relevant when delay_change_request_flag is 1. Note that this value is a signed integer. A positive
requested_mic_delay_samples
requires the microphone to be delayed so the application needs to delay the input mic signal byrequested_mic_delay_samples
samples. A negativerequested_mic_delay_samples
means ADEC is requesting the input mic signal to be moved earlier in time. This, the application should do my delaying the input reference signal byabs(requested_mic_delay_samples)
samples.
-
int32_t reset_aec_flag¶
flag indicating ADEC’s request for a reset of part of the AEC state to get AEC filter to start adapting from a 0 filter. ADEC requests this when a small delay correction needs to be applied that doesn’t require a full reset of the AEC.
-
int32_t delay_estimator_enabled_flag¶
Flag indicating if AEC needs to be run configured in delay estimation mode.
-
int32_t requested_delay_samples_debug¶
Requested delay samples without clamping to +- MAX_DELAY_SAMPLES. Used only for debugging.
-
int32_t delay_change_request_flag¶
-
struct aec_to_adec_t¶
- #include <adec_state.h>
Input structure containing current frame’s information from AEC.
Public Members
-
float_s32_t y_ema_energy_ch0¶
EWMA energy of AEC input mic signal channel 0
-
float_s32_t error_ema_energy_ch0¶
EWMA energy of AEC filter error output signal channel 0
-
int32_t shadow_flag_ch0¶
shadow_flag value for the current frame computed within the AEC
-
float_s32_t y_ema_energy_ch0¶
-
struct adec_input_t¶
- #include <adec_state.h>
ADEC input structure.
Public Members
-
de_output_t from_de¶
ADEC input from the delay estimator
-
aec_to_adec_t from_aec¶
ADEC input from AEC
-
int32_t far_end_active_flag¶
Flag indicating if there is activity on reference input channels.
-
de_output_t from_de¶
-
struct adec_state_t¶
- #include <adec_state.h>
ADEC state structure.
This structure holds the current state of the ADEC instance and members are updated each time that
adec_process_frame()
runs. Many of these members are statistics from tracking the AEC performance. The user should not directly modify any of these members, except the config.Public Members
-
float_s32_t max_peak_to_average_ratio_since_reset¶
Maximum peak to average AEC filter phase energy ratio seen since a delay correction was last requested.
-
float_s32_t peak_to_average_ratio_history[ADEC_PEAK_TO_AVERAGE_HISTORY_DEPTH + 1]¶
Last ADEC_PEAK_TO_AVERAGE_HISTORY_DEPTH frames peak_to_average_ratio of phase energies.
-
float_s32_t peak_power_history[ADEC_PEAK_LINREG_HISTORY_SIZE]¶
Last ADEC_PEAK_LINREG_HISTORY_SIZE frames peak phase power.
-
float_s32_t aec_peak_to_average_good_aec_threshold¶
Threshold was considering peak to average ratio as good.
-
fixed_s32_t agm_q24¶
AEC goodness metric indicating a measure of how well AEC filter is performing.
-
fixed_s32_t erle_bad_bits_q24¶
log2 of threshold below which AEC output’s measured ERLE is considered bad
-
fixed_s32_t erle_good_bits_q24¶
log2 of threshold above which AEC output’s measured ERLE is considered good
-
fixed_s32_t peak_phase_energy_trend_gain_q24¶
Multiplier used for scaling agm’s sensitivity to peak phase energy trend.
-
fixed_s32_t erle_bad_gain_q24¶
Multiplier determining how steeply we reduce aec’s goodness when measured erle falls below the bad erle threshold.
-
adec_mode_t mode¶
ADEC’s mode of operation. Can be operating in normal AEC or delay estimation mode.
-
int32_t gated_milliseconds_since_mode_change¶
milliseconds elapsed since a delay change was last requested. Used to ensure that delay corrections are not requested too early without allowing enough time for aec filter to converge.
-
int32_t last_measured_delay¶
Last measured delay.
-
int32_t peak_power_history_idx¶
index storing the head of the peak_power_history circular buffer
-
int32_t peak_power_history_valid¶
Flag indicating whether the peak_power_history buffer has been filled atleast once.
-
int32_t sf_copy_flag¶
Flag indicating if shadow to main filter copy has happened atleast once in the AEC.
-
int32_t convergence_counter¶
Counter indicating number of frames the AEC shadow filter has been attempting to converge.
-
int32_t shadow_flag_counter¶
Counter indicating number of frame the AEC shadow filter has been better than the main filter.
-
adec_config_t adec_config¶
ADEC configuration parameters structure. Can be modified by application at run-time to reconfigure ADEC.
-
float_s32_t max_peak_to_average_ratio_since_reset¶