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