An echo cancellation component based on the Speex echo cancellation routines. More...
|bool||init (int sampRate, MIPTime interval=MIPTime(0.020), MIPTime bufferLength=MIPTime(0.100))|
|Initialize the echo cancellation component. |
|Destroys the component. |
|MIPComponent *||getOutputAnalyzer ()|
|Returns the analyzing sub-component (see class description). |
An echo cancellation component based on the Speex echo cancellation routines. After you've created this component, you should insert it into the recording part of the chain, so that it can inspect incoming messages and remove the echo from them. An extra component is automatically created and can be obtained using the MIPSpeexEchoCanceller::getOutputAnalyzer method. This component has to be inserted into the playback part of your chain. Both components only accept raw 16 bit native endian encoded audio messages. The base component produces a similar message, the analyzer component doens't produce any messages itself.
Depending on the type of input and output component you use for your soundcard, the amount of internal buffering of sound blocks can vary. In general, it's probably safe to assume that due to this buffering, the delay from the analyzer to the echo cancelling component will be at least twice the sampling interval. Because of this, it may be helpful to introduce some extra delay before sending an audio message to the analyzer component. You can do this using a MIPAudioMixer component, initialized with
useTimeInfo set to
false, and by using the MIPAudioMixer::setExtraDelay function.
Initialize the echo cancellation component.
|sampRate||The sampling rate of the audio messages.|
|interval||The amount of time in each audio message.|
|bufferLength||The length of the filter used by the Speex routines.|