ADEC Data Structure and Enum definitions#
- group adec_types
Enums
-
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.
-
q8_24 erle_good_bits_q24#
log2 of threshold above which AEC output’s measured ERLE is considered good
-
q8_24 peak_phase_energy_trend_gain_q24#
Multiplier used for scaling agm’s sensitivity to peak phase energy trend.
-
q8_24 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 at least once.
-
int32_t sf_copy_flag#
Flag indicating if shadow to main filter copy has happened at least 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#
-
struct adec_config_t#