I'm using Speex in Windows VoIP application and trying to implement echo cancellation<div>I'm using waveInXXXX and waveOutXXXX API. I'm doing quite simple thing:</div><div><br></div><div>After buffer is played (I get MM_WOM_DONE message) I'm just copying it's content to temporary playback buffer </div>
<div>After buffer is recorded (I get MM_WIM_DONE message) I call speex_echo_cancellation(state, recorded_buf, playback_buf, out);</div><div><br></div><div>Access to playback buffer is synchronized, so it is not being read and filled at the same time.</div>
<div>I'm using the same soundcard for both recording and playback</div><div><br></div><div>Speex doesn't seem to cancel any echo at all. My frame size is 20 msec long (640 samples, ultra-wideband), Filter length is</div>
<div>10 frames (6400 samples). I beleive that I correctly initialize the speex echo state (sample rate value is being set in speex_echo_ctl, also speex echo state is registered withing preprocessor state).</div><div><br></div>
<div>Please help someone, or at least send a piece of code which works.</div><div>Any help would be appreciated.</div><div><br></div><div><br></div>