Sound delay in i4b

Hans Petter Selasky hselasky at
Sun May 14 13:18:39 UTC 2006


On Sunday 14 May 2006 14:28, Dirk Thannhäuser wrote:
> Hello Folks,
> i compiled successfully the new isdn4bsd and chan_capi on FreeBSD 6.
> chan_capi also works fine with asterisk. As already mentiones
> somebody before there is a huge delay on the channel when
> transferring sound. (256ms?)
> I experienced this using the echo test application in Asterisk.
> As a result I began diving into the i4b source to check out the
> problem. Soon I got stuck as I couldn't find any source for the delay
> in the driver itself. (it was the first look into the source, and i
> am currently learing how things work an fit together) Maybe that the
> delay is _only_ an issue while processing sound an that i am seeking
> for the problem at the wrong place.
> Is there anybody who has some advice?

It is due to a buffering bug in I4B, which I discovered not so long ago. When 
"chan_capi" registers its CAPI application, it sets the buffer to 7 frames of 
160/8ms = 20ms. The bug is that my I4B implementation did not check that 
value and instead, by default, buffered up to 50 frames, which is equal to 
near one second of data. Due to packet loss on IP connections, this value is 
always kept low. But if you run the echo test, the buffer can grow.

I have fixed this in the SVN version of "i4b + "chan_capi". Upgrading 
"chan_capi" should do the trick. Maybe you want to try out that first.

Do you have SVN installed? 

The round trip delay for I4B + HFC-S PCI A, should be close to 5*160/8ms = 
100ms. It is possible to get the delay down, and the HFC-E1/HFC-4S/8S driver 
has a round trip delay of 50ms.

For IP-telephony the extra buffering is ideal to handle jitter and other 
problems. From my experience, if the buffer delay is less than 25ms, the 
transmission will get prone to clicks due to buffer underruns, when the CPU 
load is high or when you loose IP-packets. For ISDN to ISDN bridging it is 
not so good, and I would recommend that you buy a HFC-4S/8S card, that will 
have a buffer delay of around 1ms, when line interconnect is used.


More information about the freebsd-isdn mailing list