Last week I wrote about G.711, G.729, G.726, and G.722 in A Cornucopia of Codecs. Many of my readers know that there are more codes to choose from. All codecs exist for a reason, but some are clearly more popular, and frankly, useful than others. Although you will typically encounter the four that I’ve already written about, there are a few more than deserve some attention.
The Internet Low Bitrate Codec (iLBC) is a relative newcomer in the world of Codecs. Initially released in 2004, iLBC was designed for streaming audio, archival and messaging applications, and VoIP. It was formerly freeware, but since 2011 it has been available as open source under a 3-clause BSD license.
The big differentiator for iLBC is how it handles lost data packets. You may recall in my previous blog where I wrote about Adaptive Differential Pulse Code Modulation (ADPCM). With ADPCM you transmit the differences between voice samples instead of always sending complete samples. Unfortunately, this leads to error propagation on a network connection with lots of lost or delayed packets. In contrast, iLBC-encoded speech frames are independent of each other. Since iLBC only requires about 28 Kbps (kilobits per second) of bandwidth per call you get the advantage of a low bitrate codec with decent sound quality.
The biggest disadvantage when compared to G.729 is that iLBC doesn’t have the adoption rate. However, with iLBC’s close association with WebRTC that may change over time.
RTAudio is Microsoft’s proprietary adaptive bandwidth wide band speech codec and is used by their Office Communicator Server (OSC) and Lync products. Lync clients call back and forth with RTAudio, but if a user calls outside the bounds of Lync, that call must be converted to a standard codec (typically G.711). The conversion occurs in the Microsoft Mediation Server.
RTAudio has a number of good things going for it. The “adaptive bandwidth” part of RTAudio means that it can dynamically adjust the bit rate of a call to best suit the characteristics of the network. Voice quality may rise and fall during a call, but an attempt is made to keep the voice stream legible. Also, RTAudio can use something called Forward Error Correction (FEC) to improve voice quality on poor networks. FEC is optional and when employed will increase the date rate of a VoIP packet streams. However, on networks with loss rates starting at 10% it might make the difference between an understandable conversation and garbled noise.
With Lync you can choose to not use RTAudio by enabling Medial Bypass (which then causes the client to use G.711), but you will lose the benefits of RTAudio.
The effective bandwidth of RTAudio wide band is 57 Kbps per call which is less than its G.722 counterpart. RTAudio can also work in narrow band consuming approximately 40 Kbps per call.
This adds two more codecs to your arsenal of knowledge, but there are many more to go. However, if have a basic understanding of these five codecs (G.711, G.729, G.726, G.722, iLBC, and RTAudio), you can be the smart one in the room for most VoIP installations.