Hi,<div><br></div><div>I have a scenario in a mobile VoIP app that requires echo cancellation but is somewhat different from what&#39;s described in the docs.</div><div><br></div><div>Audio is received from and sent to the network at 8000Hz. Each packet contains 160 samples worth a playback of 20ms.</div>
<div><br></div><div>But the hardware requires aggregation for both playback and capture. So for playback, I coalesce 4 packets in a buffer and queue them as a larger buffer for playback.</div><div>On the send side, I read a large buffer (worth 4 packets) and send them out over time 20ms apart.</div>
<div><br></div><div>I tried using speex_echo_playback just when a 160-sample packet arrives from the network, before coalescing and speex_echo_capture just before a packet is sent out to the network but that doesn&#39;t seem to work properly (doesn&#39;t cancel any echo).</div>
<div><br></div><div>So, in this scenario above, please recommend a good place to insert speex_echo_playback and speex_echo_capture. Should I be just before the read and write to hardware? In that case, should I use a larger &quot;frame size&quot; of 160 samples x 4?</div>
<div><br></div><div>Thanks in advance,</div><div>Daniel.</div>