#include <speex/speex_echo.h>
#include <speex/speex_preprocess.h>
static SpeexEchoState *echo_state = NULL;
static SpeexPreprocessState *denoise_state;
static pthread_mutex_t mutex_aec;
static char* rec_buffer = NULL;
static char* play_buffer = NULL;
static int sampleRate = 8000;
void aec_init(int frame_size)
{
if(echo_state || denoise_state)
return;
rec_buffer = (char*)malloc(frame_size*2);
play_buffer = (char*)malloc(frame_size*2);
echo_state = speex_echo_state_init(frame_size, frame_size*10);
denoise_state = speex_preprocess_state_init(frame_size, sampleRate);
speex_echo_ctl(echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &sampleRate);
speex_preprocess_ctl(denoise_state, SPEEX_PREPROCESS_SET_ECHO_STATE, echo_state);
pthread_mutex_init(&mutex_aec, NULL);
}