Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AEC ( Echo Cancellation Support ) in OSX Using AudioQueue

I am developing VOIP Application on OSX and iOS and will be using AudioQueue for Audio flow, what want to Know is, by default does AudioQueue support acoustic echo cancellation or do we need to add support for it,
If we need to implement, i believe some open source library has to be implemented like Speex are there any Example available shows integration of AudioQueue with Speex or any other library

like image 999
Amitg2k12 Avatar asked Mar 18 '13 06:03

Amitg2k12


People also ask

What is AEC echo cancellation?

The Acoustic Echo Cancellation (AEC) block is designed to remove echoes, reverberation, and unwanted added sounds from a signal that passes through an acoustic space.

How do you implement echo cancellation?

The common and most straightforward solution for cancelling the echo signal in the presence of noise is to first independently apply an AEC between the loudspeaker and each of the microphones and then to apply a beamformer.

Does echo cancellation work?

When it determines that the signal being sent out is the same signal that came in, it electronically cancels it so that the signal does not transmit back to the talker's loudspeakers, thus canceling the echo.


1 Answers

As far as I can find, you have to use Audio Units to access the system's echo cancellation. You do that by using kAudioUnitSubType_VoiceProcessingIO instead of kAudioUnitSubType_RemoteIO.

You probably want to use Audio Units anyway, in order to control your latency.

You can use a render callback function to get data from an Audio Queue and pass it to your I/O unit. For outgoing, use AudioUnitRender.

like image 175
David M. Avatar answered Oct 20 '22 07:10

David M.