[asterisk-dev] $1000USD for fix of Asterisk g726-32 codec

Steve Underwood steveu at coppice.org
Sun May 21 00:02:22 MST 2006


Daniel Silaro wrote:

> Steve,
>
> The current Asterisk g726-32 codec is functional and works ok for the
> most part however it does give a distorted sound if you raise your
> voice while speaking or if volume levels increase above "normal".
> Switching over to g711 does not have this problem. Something is
> clearly not right there with the codec implementation. If you have a
> better g726 codec and you or someone else (I am not a programmer) is
> willing to adapt/hook it into Asterisk I am willing to honor my offer
> of $1000 USD.

If it is only at high volume you might be hitting errors in the current 
G.726 code for Asterisk, or you might have a big DC offset in your 
signals. There shouldn't be any significant DC in a telephony signal, 
but there often is, and sometimes it is huge. A really big DC component 
upsets most simple lossy codecs, like G.711 or G.726. More complex lossy 
codecs tend to have their own internal way of coping with DC.

Lets start with a correct implementation of G.726.

Install a recent version of spandsp, such as 
http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.2pre25/spandsp-0.0.2pre25.tar.gz

Now replace the codecs/codec_g726.c file in your Asterisk source code 
with 
http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.2pre25/codec_g726.c

Rebuild Asterisk and see what happens. I haven't had time to test my 
version of codec_g726.c, but it compiles OK and it is very simple - 
there isn't a lot to go wrong. spandsp contains a test suite for the 
actual codec, which fully exercises it against the ITU test vectors, so 
the code that does the real work is well proven.

If DC is the problem, I can add DC blocking to remove it.

I thought Asterisk could use the 40k, 32k and 24k bps bit rates for 
G.726 these days, but having checked it seems it cannot. Only the G.726 
file format code allows for the various bit rates. My G.726 codec 
supports all the rates - 40k, 32k, 24k, and 16k - so adding support for 
all of them in Asterisk is pretty simple. It also supports compliant 
transcoding between G.711 and G.726, but I'm not sure how much work is 
needed to make Asterisk take advantage of that. Compliant transcoding 
significantly improves quality when you go G.711->G.726->G.711.

Regards,
Steve


Regards,
Steve




More information about the asterisk-dev mailing list