Implementation of iLBC Codec.

This section describes functions to initialize and register iLBC codec factory to the codec manager. After the codec factory has been registered, application can use Codec Framework API to manipulate the codec.

The iLBC codec is developed by Global IP Solutions (GIPS), formerly Global IP Sound. The iLBC offers low bitrate and graceful audio quality degradation on frame losses.

The iLBC codec supports 16-bit PCM audio signal with sampling rate of 8000Hz operating at two modes: 20ms and 30ms frame length modes, resulting in bitrates of 15.2kbps for 20ms mode and 13.33kbps for 30ms mode.

Codec Settings

General Settings

General codec settings for this codec such as VAD and PLC can be manipulated through the setting field in pjmedia_codec_param. Please see the documentation of pjmedia_codec_param for more info.

Codec Specific Settings

The following settings are applicable for this codec.


The default mode should be set upon initialization, see pjmedia_codec_ilbc_init(). After the codec is initialized, the default mode can be modified using pjmedia_codec_mgr_set_default_param().

In pjmedia_codec_param, iLBC mode can be set by specifying SDP format parameter “mode” in the SDP “a=fmtp” attribute for decoding direction. Valid values are “20” and “30” (for 20ms and 30ms mode respectively).

Here is an example to set up pjmedia_codec_param to use mode 20ms:

pjmedia_codec_param param;
// setting iLBC mode in SDP
param.setting.dec_fmtp.cnt = 1;
param.setting.dec_fmtp.param[0].name = pj_str("mode");
param.setting.dec_fmtp.param[0].val  = pj_str("20");


pj_status_t pjmedia_codec_ilbc_init(pjmedia_endpt *endpt, int mode)

Initialize and register iLBC codec factory to pjmedia endpoint.

  • endpt – The pjmedia endpoint.

  • mode – Default decoder mode to be used. Valid values are 20 and 30 ms. Note that encoder mode follows the setting advertised in the remote’s SDP.


PJ_SUCCESS on success.

pj_status_t pjmedia_codec_ilbc_deinit(void)

Unregister iLBC codec factory from pjmedia endpoint and deinitialize the iLBC codec library.


PJ_SUCCESS on success.