Digium G.729 codec module updated and new performance testing tool released

By Kevin P. Fleming

We are pleased to announce a major new release of the Digium G.729 codec module for Asterisk. This release incorporates a number of changes, and in addition, includes a new performance testing tool which will make it easier for users to choose the best ‘flavor’ of the module for the particular system they are installing it on.

The changes are:

– Version Numbering

The module’s version numbering is now more in line with our other products; the numbers will be in the form ‘X.Y.Z_A.B.C’, with the ‘X.Y.Z’ component representing the version of Asterisk the module is intended to operate in, and the ‘A.B.C’ component representing the actual version of the codec module code itself. Please note that the 1.6.0 modules will work in any Asterisk 1.6 release from 1.6.0 onwards, until such time as a new version is needed; when that occurs, we will provide 1.6.0 modules *and* modules designed for the later releases.

– Optimization

The new modules were built using the latest (4.3) release of the GNU C compiler, and use a number of new optimization methods available in that release to significantly improve encoding/decoding performance. In addition, we now build the modules in both 32-bit and 64-bit varieties for each CPU flavor that support both modes, so that users with 64-bit CPUs running a 32-bit Linux installation can still have a version of the module optimized for their CPU type. GCC 4.3 also provides optimizations for some newer CPU families (Intel Core2, AMD Barcelona, and others), so we’ve made those flavors available with this release.

– Performance Testing

In the past, we’ve offered different CPU flavors of the module to hopefully provide the best encoding/decoding performance, but it was up to the user to install and test each flavor to determine which one provided the best performance. This process is difficult and time consuming, and did not always provide reliable results. To help with this situation, we’ve now released a tool called ‘benchg729’, which can be run on the target system and will execute encoding speed tests (using a real audio sample) for each CPU flavor that we offer for that platform, and then report the results and suggest the best performing module flavor for that system. Note that the use of this tool requires that the system have at least one valid channel license for the Digium
G.729 codec installed; it will not run without a license.

The new codec modules and benchg729 tool are now available at:


New codec modules are available for Asterisk 1.2, Asterisk 1.4 and Asterisk 1.6.x on both x86-32 and x86-64 Linux platforms, and the benchg729 tool is also available for x86-32 and x86-64 Linux platforms.

We hope these product updates improve your system performance, and as always, we thank you for supporting Asterisk and using Digium products!

To Learn more about the Digium G.729 codec, visit our Asterisk Software Page.

Related Posts

There Are 10 Comments

  • Ian Plain says:

    Hi This is great, but it seems the test tool has a few issues.

    see debug below.

    [[email protected] src]# ./benchg729-1.0.2
    benchg729 version 1.0.2

    Use the ‘-l’ option to see license information for software
    included in this program.

    Running tests over 60 seconds of test data.
    Test run 1 for flavor ‘i686’ completed in 1452 milliseconds.
    Test run 2 for flavor ‘i686’ completed in 1454 milliseconds.
    Test run 3 for flavor ‘i686’ completed in 1446 milliseconds.
    Test run 4 for flavor ‘i686’ completed in 1444 milliseconds.
    Test run 5 for flavor ‘i686’ completed in 1452 milliseconds.
    Test run 1 for flavor ‘pentium3m’ completed in 1298 milliseconds.
    Test run 2 for flavor ‘pentium3m’ completed in 1302 milliseconds.
    Test run 3 for flavor ‘pentium3m’ completed in 1301 milliseconds.
    Test run 4 for flavor ‘pentium3m’ completed in 1299 milliseconds.
    Test run 5 for flavor ‘pentium3m’ completed in 1304 milliseconds.
    Illegal instructiond run for flavor ‘pentium-m’…

    this is on a centos box with a 2.6.9-34.0.1.ELsmp kernel and dual p3


  • Jason Parker says:

    Kevin didn’t mention this, but the new G.729 codec modules are also available on systems running AsteriskNOW 1.5 beta. If you have the existing modules installed, you can do a `yum update` to get the new ones, or `yum install codec_g729a` if you don’t.

    It won’t select the best optimization for your CPU yet, but that is something I plan on working on.

  • Peter Retief says:

    Does this resolve the bug where running a G.729 codec over IAX2 trunking can lead to 100% processor load?

  • omar says:

    The benchg729 utility doesn’t work for x86_64 architecture. I wrote the following command line.

    # wget http://downloads.digium.com/pub/telephony/codec_g729/benchg729/x86-64/benchg729-1.0.7-x86_64 -O benchg729

    # chmod 500 /root/benchg729

    # /root/benchg729

    And the error is:

    -bash: /root/benchg729: cannot execute binary file


    Then I tried with x84_32 architecture with the following commands.

    # wget http://downloads.digium.com/pub/telephony/codec_g729/benchg729/x86-32/benchg729-1.0.7-x86_32 -O benchg729

    # chmod 500 /root/benchg729

    # /root/benchg729

    And the result is:

    Recommended flavor for this system is ‘prescott’ with an average of 593 milliseconds of CPU time.

    But there isn’t a prescott version for x86_64 architecture

  • Howdy,

    Utility works just fine for me on an x86_64 AMD CPU on Ubuntu 10.04. Are you sure you’re actually on a 64-bit system?

  • Ellner says:

    Interesting, really nice post for my work

  • Harman says:

    nice post man, my site coming up soon, i write about web design and wordpress.

  • Goldenberg says:

    Hi There
    It’s a really nice post you have here.
    I found the information to be corrrect but do you know anything about Khao Lak island in Thailand?

  • You completed certain nice points there. I did a search on the matter and found the majority of folks will have the same opinion with your blog.

  • Symons says:

    great post…thanks for the info

Add to the Discussion

Your email address will not be published. Required fields are marked *