1 /* 2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited 3 * 4 */ 5 6 #ifndef __AUDIO_AEC_H__ 7 #define __AUDIO_AEC_H__ 8 9 10 struct aec_handler { 11 void *aec_inst; 12 uint8_t bypass:1; 13 uint8_t start:1; 14 uint8_t rd_waiting:1; 15 uint8_t wr_waiting:1; 16 uint8_t *refer_pool; 17 uint8_t *echo_buffer; 18 int refer_pool_size; 19 int echo_buffer_size; 20 int wr_len; 21 int rd_len; 22 os_mutex_t lock; 23 os_sem_t wr_sem; 24 os_sem_t rd_sem; 25 uvoice_ringbuff_t rb; 26 }; 27 28 29 int audio_aec_refer_conserve(struct aec_handler *aec, uint8_t *buffer, int nbytes); 30 int audio_aec_process(struct aec_handler *aec, uint8_t *buffer, int nbytes); 31 int audio_aec_init(struct in_stream *in); 32 int audio_aec_deinit(struct in_stream *in); 33 34 35 #endif /* __AUDIO_AEC_H__ */ 36