<meta charset="utf-8"><span class="Apple-style-span" style="font-family: Times; font-size: medium; "><pre>&gt;&gt;<i> Hi, 
</i>&gt;&gt;<i> 
</i><meta charset="utf-8">&gt;&gt;<i> I have a scenario in a mobile VoIP app that requires echo cancellation but 
</i><meta charset="utf-8">&gt;&gt;<i> is somewhat different from what&#39;s described in the docs. 
</i><meta charset="utf-8">&gt;&gt;<i> 
</i><meta charset="utf-8">&gt;&gt;<i> Audio is received from and sent to the network at 8000Hz. Each packet 
</i><meta charset="utf-8">&gt;&gt;<i> contains 160 samples worth a playback of 20ms. 
</i><meta charset="utf-8">&gt;&gt;<i> 
</i><meta charset="utf-8">&gt;&gt;<i> But the hardware requires aggregation for both playback and capture. So for 
</i><meta charset="utf-8">&gt;&gt;<i> playback, I coalesce 4 packets in a buffer and queue them as a larger buffer 
</i><meta charset="utf-8">&gt;&gt;<i> for playback. 
</i><meta charset="utf-8">&gt;&gt;<i> On the send side, I read a large buffer (worth 4 packets) and send them out 
</i><meta charset="utf-8">&gt;&gt;<i> over time 20ms apart. 
</i><meta charset="utf-8">&gt;&gt;<i> 
</i><meta charset="utf-8">&gt;&gt;<i> I tried using speex_echo_playback just when a 160-sample packet arrives from 
</i><meta charset="utf-8">&gt;&gt;<i> the network, before coalescing and speex_echo_capture just before a packet 
</i><meta charset="utf-8">&gt;&gt;<i> is sent out to the network but that doesn&#39;t seem to work properly (doesn&#39;t 
</i><meta charset="utf-8">&gt;&gt;<i> cancel any echo). 
</i>
<meta charset="utf-8">&gt; The most likely reason is that you didn&#39;t align the far-end and near-end samples.
<meta charset="utf-8">&gt; So the filter can not converge.
<br></pre><pre>Thanks for your response. Can you please explain what you mean by align samples from near-end and far-end? And how is that usually accomplished?</pre><pre><meta charset="utf-8">&gt;&gt;<i> So, in this scenario above, please recommend a good place to insert 
</i><meta charset="utf-8">&gt;&gt;<i> speex_echo_playback and speex_echo_capture. Should I be just before the read 
</i><meta charset="utf-8">&gt;&gt;<i> and write to hardware? In that case, should I use a larger &quot;frame size&quot; of 
</i><meta charset="utf-8">&gt;&gt;<i> 160 samples x 4? 
</i>
<meta charset="utf-8">&gt; Of course you can set frame size to 160*4. Otherwise you can feed samples 4 times
<meta charset="utf-8">&gt; to the AEC if you don&#39;t want to modify the frame size.

&gt;<i> 
</i>&gt;<i> Thanks in advance, 
</i>&gt;<i> Daniel.</i><i> </i></pre></span>