Introduction
G.729 is a toll-quality, low-bandwidth audio codec supported by many VoIP providers. The voice quality of a G.729-encoded call is about the same as that of G.711, the codec used for standard PSTN calls. However, the amount of bandwidth needed to carry a G.729 call is much lower than that for a G.711 call. Enterprises using G.729 will make more efficient use of available network bandwidth. G.729 uses roughly 1/8th of the bandwidth of a G.711 (8 kbit/s vs 64 kbit/s).
G.729 is available in two ways:
- Passthrough
- Transcoding
The passthrough method does not require licensing, however it has some limitations. For transcoding method G.729 license is necessary. Freeswitch offers a module and G729 license for transcoding G.729. Freeswitch's G.729 module supports Annex A and Annex B.
Obtaining License
Licences can be purchased from the FreeSWITCH website - see the G.729 tab at the top of the page.
Pricing is $10 per channel.
A single licence provides you with one encoder and one decoder, which is enough for bridging one call.
Licences are only required for channels performing transcoding (for bridging calls a leg uses G.729 and a different leg uses a different codec, and for applications which need to process media). Bridged channels where G.729 is on all legs still use pass-through mode, so that they do not consume a licence.
G.729 Module Installation
Download the fsg729-xxx-installer file from http://files.freeswitch.org/g729http://files.freeswitch.org/g729
cd /usr/tmp wget http://files.freeswitch.org/g729/fsg729-xxx-installer chmod 755 fsg729-xxx-installer ./fsg729-xxx-installer
G.729 License Activitation
Run the license validator:
usr/local/freeswitch/bin/validator
Enter the sales code you received from Freeswitch, licenses.zip file will be generated in the current directory. Unzip this file into /etc/freeswitch/
After unzip there will be xxxxxxxxxxxxxxxx.conf in the /etc/freeswitch
Freeswitch Configuration
Disable the existing "mod_g729" by editing /etc/sipxpbx/freeswitch/conf/autoload_configs/modules.conf.xml and add the "mod_com_g729":
<!‐‐ <load module="mod_g729"/> ‐‐> <load module="mod_com_g729"/>
Note: After you have done with modules.conf.xml, make sure that /etc/sipxpbx/freeswitch is owned by sipxchange:sipxchange
Run the following command to do this:
chown -R sipxchange:sipxchange /etc/sipxpbx/freeswitch
Restart media services.
Sipxconfig will detect this module and add G.729 codec as default to the following:
- System/Servers/Server nnn/Media Services/Codec
- System/Servers/Server nnn/SIP trunking/SIP/Permitted Codecs
freeswitch_licence_server is automatically started by mod_com_g729 if freeswitch is started by root, but in sipXecs freeswitch is not started by root. So you have to start freeswitch_license_server manually: /usr/sbin/freeswitch_license_server
Monitoring License
Run the freeswitch console:
/usr/local/freeswitch/bin/fs_cli
freeswitch@internal> g729_status Permitted G.729AB channels: 1 Encoders in use: 0 Decoders in use: 0