Group PJMED_G7221_CODEC

group PJMED_G7221_CODEC

Implementation of G.722.1 codec.

G.722.1 licensed from Polycom�G.722.1 Annex C licensed from Polycom�

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

PJMEDIA G722.1 codec implementation is based on ITU-T Recommendation G.722.1 (05/2005) C fixed point implementation including its Annex C.

G.722.1 is a low complexity codec that supports 7kHz and 14kHz audio bandwidth working at bitrates ranging from 16kbps to 48kbps. It may be used with speech or music inputs.

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.

Bitrate

The codec implementation supports standard and non-standard bitrates. Use pjmedia_codec_g7221_set_mode() to enable or disable the bitrates.

By default, only standard bitrates are enabled upon initialization:

  • for 7kHz audio bandwidth (16kHz sampling rate): 24kbps and 32kbps,

  • for 14kHz audio bandwidth (32kHz sampling rate): 24kbps, 32kbps, and 48kbps.

The usage of non-standard bitrates must follow these requirements:

  • for 7kHz audio bandwidth (16kHz sampling rate): 16000 to 32000 bps, multiplication of 400

  • for 14kHz audio bandwidth (32kHz sampling rate): 24000 to 48000 bps, multiplication of 400

The bitrate is set via param.setting.dec_fmtp, if it does not contain bitrate info, the codec will check param.info.avg_bps.

Remark

There is a flaw in the codec manager as currently it could not differentiate G.722.1 codecs by bitrates, hence invoking pjmedia_codec_mgr_set_default_param() may only affect a G.722.1 codec with the highest priority (or first index found in codec enumeration when they have same priority) and invoking pjmedia_codec_mgr_set_codec_priority() will set priority of all G.722.1 codecs with sampling rate as specified.

Note

Currently only up to two non-standard modes can be enabled.

Functions

pj_status_t pjmedia_codec_g7221_init(pjmedia_endpt *endpt)

Initialize and register G.722.1 codec factory to pjmedia endpoint.

Parameters:

endpt – The pjmedia endpoint.

Returns:

PJ_SUCCESS on success.

pj_status_t pjmedia_codec_g7221_set_mode(unsigned sample_rate, unsigned bitrate, pj_bool_t enabled)

Enable and disable G.722.1 mode. By default, the standard modes are enabled upon initialization, i.e.:

  • sampling rate 16kHz, bitrate 24kbps and 32kbps.

  • sampling rate 32kHz, bitrate 24kbps, 32kbps, and 48kbps. This function can also be used for enabling non-standard modes. Note that currently only up to two non-standard modes can be enabled at one time.

Parameters:
  • sample_rate – PCM sampling rate, in Hz, valid values are only 16000 and 32000.

  • bitrate – G722.1 bitrate, in bps, the valid values are standard and non-standard bitrates as described above.

  • enabled – PJ_TRUE for enabling specified mode.

Returns:

PJ_SUCCESS on success.

pj_status_t pjmedia_codec_g7221_set_pcm_shift(int val)

Set the G.722.1 codec encoder and decoder level adjustment. If the value is non-zero, then PCM input samples to the encoder will be shifted right by this value, and similarly PCM output samples from the decoder will be shifted left by this value.

Default value is PJMEDIA_G7221_DEFAULT_PCM_SHIFT.

Note

This function is also applicable for G722.1 implementation with IPP back-end.

Parameters:

val – The value

Returns:

PJ_SUCCESS on success.

pj_status_t pjmedia_codec_g7221_deinit(void)

Unregister G.722.1 codecs factory from pjmedia endpoint.

Returns:

PJ_SUCCESS on success.