Hi guys,
How can I enable all PJMEDIA codec (in particular PCMA codec)?
When I run the following source code in "codec_mgr" --> "codec_desc" --> all
codec are configured as PJMEDIA_CODEC_PRIO_DISABLED except for iLBC codec
(PJMEIDA_CODEC_PRIO_NORMAL).
pj_pool_t *poolMc;
pjmedia_stream **p_stream;
pjmedia_endpt *med_endpt;
pj_caching_pool cp;
pj_status_t status;
pjmedia_stream *stream = NULL;
pjmedia_snd_port *snd_port = NULL;
pjmedia_port *stream_port;
pj_uint16_t local_port = 3000;
pjmedia_codec_param codec_param;
const pjmedia_codec_info *codec_info;
pj_sockaddr_in rem_addr;
/* Reset defined remote address */
pj_bzero(&rem_addr, sizeof(rem_addr));
char *codec_id = new char[4];
strcpy(codec_id, "PCMA");
//codec_id = Utils::toPj_str("PCMA")
//codec_id = "PCMA";
/* Must create a pool factory before we can allocate any memory. */
pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, 0);
/*
* Initialize media endpoint.
* This will implicitly initialize PJMEDIA too.
*/
status = pjmedia_endpt_create(&cp.factory, NULL, 1, &med_endpt);
if (status != PJ_SUCCESS) {
return status;
}
/* Create memory pool for application purpose */
poolMc = pj_pool_create(&cp.factory, /* pool factory */
"app", /* pool factory */
4000, /* init size */
4000, /* increment size */
NULL /* callback on error */
);
/* Register all codecs */
pjmedia_audio_codec_config codec_cfg;
pjmedia_audio_codec_config_default(&codec_cfg);
/* Register all supported codecs (register all known audio codecs
implemented in PJMEDA-CODEC library to the specified media endpoint) */
status = pjmedia_codec_register_audio_codecs(med_endpt, &codec_cfg);
if (status != PJ_SUCCESS) {
return status;
}
//OPTIONAL
/* Initialize and register G711 codec factory to pjmedia endpoint.
This will register PCMU and PCMA codec, in that order */
/* Use pjmedia_codec_g711_deinit( voi ) for unregister G711 codec
factory from pjmedia endpoint */
status = pjmedia_codec_g711_init(med_endpt);
if (status != PJ_SUCCESS) {
return status;
}
/* Find which codec to use */
if (codec_id) {
unsigned count = 1;
pj_str_t str_codec_id = pj_str(codec_id); //codec_id = PCMA
pjmedia_codec_mgr *codec_mgr =
pjmedia_endpt_get_codec_mgr(med_endpt);
//OPTIONAL
/* Configure codec priority (allowed values are:
PJMEDIA_CODEC_PRIO_HIGHEST, PJMEDIA_CODEC_PRIO_NEXT_HIGHEST,
PJMEDIA_CODEC_PRIO_NORMAL, PJMEDIA_CODEC_PRIO_LOWEST,
PJMEDIA_CODEC_PRIO_DISABLED) */
status = pjmedia_codec_mgr_set_codec_priority(codec_mgr,
&str_codec_id, PJMEDIA_CODEC_PRIO_HIGHEST);
if (status != PJ_SUCCESS) {
return status;
}
status = pjmedia_codec_mgr_find_codecs_by_id(codec_mgr,
&str_codec_id, &count, &codec_info, NULL);
if (status != PJ_SUCCESS) {
return status;
}
}
else {
/* Default to pcmu */
status =
pjmedia_codec_mgr_get_codec_info(pjmedia_endpt_get_codec_mgr(med_endpt), 0,
&codec_info);
if (status != PJ_SUCCESS) {
return status;
}
}
Thanks in advice.
Best Regards
Ll