Difference between revisions of "G723/G729 Codec installation"

From Kolmisoft Wiki
Jump to navigationJump to search
Line 113: Line 113:


If you experiencing bad quality - try to downgrade your codec. As explained in previous problem.
If you experiencing bad quality - try to downgrade your codec. As explained in previous problem.
<br>
=== Does Asterisk supports G729 Annex B? ===
No, Asterisk does not support Annex B because Asterisk does not support silence suppression/detection:
http://en.wikipedia.org/wiki/G.729#G.729_Annex_B
* See also:
** [[Dropping extra frame of G.729 since we already have a VAD frame at the end]]
** [[Comfort noise support incomplete in Asterisk (RFC 3389)]]

Revision as of 11:08, 16 November 2009



NOTE: Remember that these codecs can be used for testing or educational purposes only.

For G729 license fee applies (10USD/channel). See: http://www.voip-info.org/wiki-Asterisk+G.729+Licensing

G723 is not available for Asterisk in any legal form except you buy the TC400P transcoder card from Digium.




CPU Type

First of all you need to know your CPU type. Do:

cat /proc/cpuinfo

It will show CPU info and you will see a lot of info. Most crucial is:

model name      : Intel(R) Core(TM)2 Duo CPU     E4500  @ 2.20GHz

NOTE: this will vary on different servers, but from this line you can see what kind of CPU is on this particular machine.

Here as example we see that we have Intel(R) Core(TM)2 Duo CPU.


x86_64?

Then we need to know if our server is x86_64. For that we do:

uname -a

And we see that it is:

Linux xxxx #1 SMP Fri Nov 30 00:45:55 EST 2007 x86_64 x86_64 x86_64 GNU/Linux


Codec installation

From scripts

Install scripts for P4 and P4_64 are added into newest MOR PRO installation tar. You can use them for fast installation.

Manual

Now go to: http://kvin.lv/pub/Linux/Asterisk/ and from the section: Asterisk 1.4 (if you use Asterisk 1.4) select the most appropriate codec.

For our example CPU we will choose:

codec_g723-ast14-gcc4-glibc-x86_64-pentium4.so
codec_g729-ast14-gcc4-glibc-x86_64-pentium4.so

Now download these files to your server:

cd /usr/src/
wget http://asterisk.hosting.lv/bin/codec_g723-ast14-gcc4-glibc-x86_64-pentium4.so
wget http://asterisk.hosting.lv/bin/codec_g729-ast14-gcc4-glibc-x86_64-pentium4.so

Rename them to:

mv /usr/src/codec_g723-ast14-gcc4-glibc-x86_64-pentium4.so /usr/src/codec_g723.so
mv /usr/src/codec_g729-ast14-gcc4-glibc-x86_64-pentium4.so /usr/src/codec_g729.so

CHMOD both of them to 777:

chmod 777 codec_g72*.so

And copy to Asterisk modules:

cp codec_g72*.so /usr/lib/asterisk/modules


Testing

Restart Asterisk and execute in CLI:

show translation

It should show something like this:

CLI> show translation
        Translation times between formats (in milliseconds) for one second of data
         Source Format (Rows) Destination Format (Columns)
         g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722
    g723    -   2    2    2        2     2    1     2    8     -    9    2    -
     gsm    6   -    2    2        2     2    1     2    8     -    9    2    -
    ulaw    6   2    -    1        2     2    1     2    8     -    9    2    -
    alaw    6   2    1    -        2     2    1     2    8     -    9    2    -
g726aal2    6   2    2    2        -     2    1     2    8     -    9    1    -
   adpcm    6   2    2    2        2     -    1     2    8     -    9    2    -
    slin    5   1    1    1        1     1    -     1    7     -    8    1    -
   lpc10    6   2    2    2        2     2    1     -    8     -    9    2    -
    g729    7   3    3    3        3     3    2     3    -     -   10    3    -
   speex    -   -    -    -        -     -    -     -    -     -    -    -    -
    ilbc    6   2    2    2        2     2    1     2    8     -    -    2    -
    g726    6   2    2    2        1     2    1     2    8     -    9    -    -
    g722    -   -    -    -        -     -    -     -    -     -    -    -    -


Problems


Asterisk crash

When restarting Asterisk it crashes - that means wrong version of codec is installed. Remove codecs from /usr/lib/asterisk/modules and repeat all procedure again with different - more appropriate versions of codecs. You can 'downgrade' codec version, starting from: codec_g723-ast14-gcc4-glibc-pentium4-sse3.so and going down till codec_g723-ast14-gcc4-glibc-pentium4.so until it works. (This is just an example - for your server codec versions can vary).


Bad audio quality

If you experiencing bad quality - try to downgrade your codec. As explained in previous problem.



Does Asterisk supports G729 Annex B?

No, Asterisk does not support Annex B because Asterisk does not support silence suppression/detection:

http://en.wikipedia.org/wiki/G.729#G.729_Annex_B