Lines Matching refs:aec
27 int audio_aec_refer_conserve(struct aec_handler *aec, uint8_t *buffer, int nbytes) in audio_aec_refer_conserve() argument
29 if (!aec) { in audio_aec_refer_conserve()
34 os_mutex_lock(aec->lock, OS_WAIT_FOREVER); in audio_aec_refer_conserve()
36 if (uvoice_ringbuff_freesize(&aec->rb) >= nbytes) in audio_aec_refer_conserve()
37 uvoice_ringbuff_fill(&aec->rb, buffer, nbytes); in audio_aec_refer_conserve()
39 os_mutex_unlock(aec->lock); in audio_aec_refer_conserve()
45 int audio_aec_process(struct aec_handler *aec, uint8_t *buffer, int nbytes) in audio_aec_process() argument
47 if (!aec) { in audio_aec_process()
52 os_mutex_lock(aec->lock, OS_WAIT_FOREVER); in audio_aec_process()
53 if (!aec->start) in audio_aec_process()
56 if (uvoice_ringbuff_dirtysize(&aec->rb) >= nbytes) { in audio_aec_process()
57 uvoice_ringbuff_read(&aec->rb, aec->echo_buffer, nbytes); in audio_aec_process()
59 if (echo_cancellation_process(aec, buffer, aec->echo_buffer, nbytes)) { in audio_aec_process()
61 os_mutex_unlock(aec->lock); in audio_aec_process()
67 os_mutex_unlock(aec->lock); in audio_aec_process()
73 struct aec_handler *aec; in audio_aec_init() local
85 aec = snd_zalloc(sizeof(struct aec_handler), AFM_EXTN); in audio_aec_init()
86 if (!aec) { in audio_aec_init()
91 aec->echo_buffer_size = period_samples_to_bytes(&in->pcm.config); in audio_aec_init()
92 aec->echo_buffer = snd_zalloc(aec->echo_buffer_size, AFM_MAIN); in audio_aec_init()
93 if (!aec->echo_buffer) { in audio_aec_init()
95 snd_free(aec); in audio_aec_init()
99 aec->refer_pool_size = aec->echo_buffer_size; in audio_aec_init()
100 aec->refer_pool = snd_zalloc(aec->refer_pool_size, AFM_EXTN); in audio_aec_init()
101 if (!aec->refer_pool) { in audio_aec_init()
103 snd_free(aec->echo_buffer); in audio_aec_init()
104 snd_free(aec); in audio_aec_init()
108 if (echo_cancellation_create(aec, in audio_aec_init()
111 snd_free(aec->refer_pool); in audio_aec_init()
112 snd_free(aec->echo_buffer); in audio_aec_init()
113 snd_free(aec); in audio_aec_init()
117 uvoice_ringbuff_init(&aec->rb, aec->refer_pool, aec->refer_pool_size); in audio_aec_init()
118 aec->lock = os_mutex_new(); in audio_aec_init()
119 aec->rd_sem = os_sem_new(0); in audio_aec_init()
120 aec->wr_sem = os_sem_new(0); in audio_aec_init()
122 in->aec = aec; in audio_aec_init()
129 struct aec_handler *aec; in audio_aec_deinit() local
131 aec = in->aec; in audio_aec_deinit()
132 if (!aec) { in audio_aec_deinit()
137 echo_cancellation_release(aec); in audio_aec_deinit()
138 os_sem_free(aec->wr_sem); in audio_aec_deinit()
139 os_sem_free(aec->rd_sem); in audio_aec_deinit()
140 os_mutex_free(aec->lock); in audio_aec_deinit()
141 snd_free(aec->refer_pool); in audio_aec_deinit()
142 snd_free(aec->echo_buffer); in audio_aec_deinit()
143 snd_free(aec); in audio_aec_deinit()
144 in->aec = NULL; in audio_aec_deinit()