BLOG | DOCUMENTATION | GITHUB

Home --> Documentations --> PJMEDIA Reference

Opus codec wrapper. More...

Data Structures

struct  pjmedia_codec_opus_config
 

Functions

pj_status_t pjmedia_codec_opus_init (pjmedia_endpt *endpt)
 
pj_status_t pjmedia_codec_opus_deinit (void)
 
pj_status_t pjmedia_codec_opus_get_config (pjmedia_codec_opus_config *cfg)
 
pj_status_t pjmedia_codec_opus_set_default_param (const pjmedia_codec_opus_config *cfg, pjmedia_codec_param *param)
 

Detailed Description

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

Opus codec uses multiple bit rates, and supports fullband (48 kHz sampling rate), super wideband (24 kHz sampling rate), wideband (16 kHz sampling rate), medium band (12kHz sampling rate), and narrowband (8 kHz sampling rate).

Codec Settings

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

For Opus codec specific settings, such as sample rate, channel count, bit rate, complexity, and CBR, can be configured in pjmedia_codec_opus_config. The default setting of sample rate is specified in PJMEDIA_CODEC_OPUS_DEFAULT_SAMPLE_RATE. The default setting of bitrate is specified in PJMEDIA_CODEC_OPUS_DEFAULT_BIT_RATE. And the default setting of complexity is specified in PJMEDIA_CODEC_OPUS_DEFAULT_COMPLEXITY.

After modifying any of these settings, application needs to call pjmedia_codec_opus_set_default_param(), which will generate the appropriate decoding fmtp attributes.

Here is an example of modifying the codec settings:

...
// Set VAD
param.setting.vad = 1;
// Set PLC
param.setting.vad = 1;
// Set sample rate
opus_cfg.sample_rate = 16000;
// Set channel count
opus_cfg.channel_cnt = 2;
// Set bit rate
opus_cfg.bit_rate = 20000;
...
pjmedia_codec_opus_set_default_param(&opus_cfg, &param);
pj_status_t pjmedia_codec_mgr_get_default_param(pjmedia_codec_mgr *mgr, const pjmedia_codec_info *info, pjmedia_codec_param *param)
pj_status_t pjmedia_codec_opus_get_config(pjmedia_codec_opus_config *cfg)
Definition: opus.h:98
unsigned sample_rate
Definition: opus.h:99
unsigned bit_rate
Definition: opus.h:102
unsigned channel_cnt
Definition: opus.h:100
Definition: codec.h:268
struct pjmedia_codec_param::@9 setting
unsigned vad
Definition: codec.h:300

Function Documentation

◆ pjmedia_codec_opus_init()

pj_status_t pjmedia_codec_opus_init ( pjmedia_endpt endpt)

Initialize and register Opus codec factory to pjmedia endpoint.

Parameters
endptThe pjmedia endpoint.
Returns
PJ_SUCCESS on success.

◆ pjmedia_codec_opus_deinit()

pj_status_t pjmedia_codec_opus_deinit ( void  )

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

Returns
PJ_SUCCESS on success.

◆ pjmedia_codec_opus_get_config()

pj_status_t pjmedia_codec_opus_get_config ( pjmedia_codec_opus_config cfg)

Get the default Opus configuration.

Parameters
cfgOpus codec configuration.
Returns
PJ_SUCCESS on success.

◆ pjmedia_codec_opus_set_default_param()

pj_status_t pjmedia_codec_opus_set_default_param ( const pjmedia_codec_opus_config cfg,
pjmedia_codec_param param 
)

Set the default Opus configuration and set the default Opus codec param. Note that the function will call pjmedia_codec_mgr_set_default_param().

Parameters
cfgOpus codec configuration.
paramOn input, the default Opus codec parameter to be set. On output, the current default Opus codec parameter after setting. This may be different from the input because some settings can be rejected, or overwritten by the Opus codec configuration above.
Returns
PJ_SUCCESS on success.

 


PJMEDIA small footprint Open Source media stack
Copyright (C) 2006-2008 Teluu Inc.