tSIP softphone: G.729 codec module template
Although G.729 patents may have expired already (20 years have passed for original G.729 ITU, see ITU patent list) or they may even be meaningless in my country (in similar way to FFmpeg from France that uses many patented algorithms) I'm not a lawyer and I'm not willing to include G.729 directly in softphone at the moment. Other problem is lack of BSD-compatible licensed implementation - creating own directly from ITU specification would not be cheap.
Building tSIP requires proprietary and not too popular these days Turbo C++. Probably no one would want to install it just for single task thus using G.729 in a form of codec module would be recommended. With tSIP 0.1.45 support for DLL modules (in general intended to be same as baresip modules but with dynamic symbol resulution for calls from module to main application) is added.
Build steps
- download and install Code::Blocks, version with MinGW bundled (codeblocks-16.01mingw-setup.exe is the newest one full installer at the moment)
- download tSIP source code, extract to folder of your choice; tSIP source contains some necessary header files shared with DLL
- extract g729 module code (archive below) to tSIP/baresip/modules (next to e.g. g722 folder), your layout should look like this:
- download Deepwalker G.729 module for FreeSWITCH (search for Deepwalker-fs_itu_g729.tar.gz), extract content of g729a_v11 subfolder to same name subfolder in g729 module;
- launch Code::Blocks, open g729.cbp project file (opening g729.cbp directly by double clicking might also work)
- make sure target is set to "Release" (unless you want modify/debug project) and hit "Build"
- g729.dll file should be generated in less than a minute. Create /modules/ subfolder for tSIP.exe and copy this DLL there
- (*) if you want to force using G.729 disable all codecs in tSIP configuration (only statically linked codecs are visible there), optionally take a look at tSIP log and/or make test call
- (*) if you want to disable G.729 - remove dll from /modules/ subfolder or change its extension to other than .dll
(*) - with tSIP 0.1.48 codec management was improved. After adding module dll codec(s) have to be manually enabled (and can be disabled later without removing dll).
With drag-and-drop enabled codecs can be ordered according to preferences (prioritized). Still, due to nature of SDP negotiation if
you want to force G.729 usage then disabling all other codecs may be the only way.
Source: g729_template.zip (tested with Code::Blocks 16 + MinGW but C::B 13 seems to work also).
Related: G.729 codec plugin based on Belledonne Communications GPL code, ready to use.
Back to tSIP.