ant-phone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Ant-phone-devel] Latency, drift, echo update.


From: Bruno Hertz
Subject: [Ant-phone-devel] Latency, drift, echo update.
Date: 25 Feb 2004 13:00:44 +0100

Hi all

fyi, brief update about recent experiences.

(1) Latency and drift

Well, I've been stupid. Last time I talked about shrinking Capi buffers
etc. to minimize latency and drift while using an USB Fritz Card at the
same time. Of course, with USB drivers and bus sitting beneath the whole
ISDN driver stack there's little chance for real improvement. I replaced
the USB Card with a PCI model, and things got much better right away.

To restate this in a search engine friendly way: if you want to do
software telephony via a AVM Fritz ISDN card, forget about the USB
model which will give you huge latency. Grab the PCI card.

I played around with buffer sizes, too, e.g. by setting
DEFAULT_ISDNBUF_SIZE and DEFAULT_FRAGMENT_SIZE to 128 and trying
different sizes for datablklen in capidrv, but I'm still not sure
wether it has a noticable impact. This needs more testing, so more about
it maybe later.

Another reason for latency or sound degradation of course is CPU time.
For example dragging around xawtv on my desktop consumes 100% CPU,
and trying this while using ant-phone finally thrashed my sound.
To recover without hanging up, a kind of isdn/sound buffer flush and
reset would be nice, so I tried this by activating the pickup button
during conversation and performing a dsp close/open plus isdn tcflush
on button click. For me, this does the job of on the fly recovery.

Regarding active drift compensation, I'm still not sure what to do
but thinking. Maybe someone else has an idea?

(2) Echo cancellation

OK, I've done extensive web search regarding this and it's obviously
a common problem, especially in ISDN<->analog calls, but also eg with
VoIP. Cancellation algorithms seem to be nontrivial and are usually done
in hardware, it seems, mainly for performance reasons.

General (very) novice intros I found are
http://www.embeddedstar.com/articles/2003/7/article20030720-1.html
and more VoIP related but still interesting
http://www.cisco.com/en/US/tech/tk652/tk701/technologies_white_paper09186a00800d6b68.shtml

In view of performing cancellation in software, especially code examples
for corresponding algorithms like LMS, there seems to be little floating
around. There was an example on Intel's site employing MMX, but the
original link is broken:
http://developer.intel.com/drg/mmx/AppNotes/ap573.htm

I could find (some kind of) a mirror
http://www.ee.und.ac.za/DataCDs/Intel/DRG/MMX/APPNOTES/AP573.HTM
http://www.ee.und.ac.za/DataCDs/Intel/DRG/MMX/APPNOTES/AP572.HTM
but, as you'll see yourself, this is serious assembler stuff. I
didn't yet have a chance to check it out, or even confirm wether
it could help us. Maybe somebody else knows more about these issues?

Regards, Bruno.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]