> Hi,
>
> I have a scenario in a mobile VoIP app that requires echo cancellation but
> is somewhat different from what's described in the docs.
>
> Audio is received from and sent to the network at 8000Hz. Each packet
> contains 160 samples worth a playback of 20ms.
>
> 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.
> On the send side, I read a large buffer (worth 4 packets) and send them out
> over time 20ms apart.
>
> 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't seem to work properly
(doesn't
> cancel any echo).
The most likely reason is that you didn't align the far-end and near-end
samples.
So the filter can not converge.
> 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 "frame
size" of
> 160 samples x 4?
Of course you can set frame size to 160*4. Otherwise you can feed samples 4
times
to the AEC if you don't want to modify the frame size.
>
> Thanks in advance,
> Daniel.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.xiph.org/pipermail/speex-dev/attachments/20110418/33d46b00/attachment.htm