summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2014-09-24 11:48:39 +0000
committerNanang Izzuddin <nanang@teluu.com>2014-09-24 11:48:39 +0000
commitbcbc54440da8cffc2d7b58f107ba25c7e4f3da06 (patch)
treeb5297f68cb2b754c7c549305a9959418cfcdf016 /pjmedia
parent29df9f4ccdf3c7922248d905136a732e30785e52 (diff)
Re #1794: Also fixed pjmedia_codec_g7221_set_mode() not updating endpoint codec list after enabling/disabling a mode.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4931 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia-codec/g7221.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia-codec/g7221.c b/pjmedia/src/pjmedia-codec/g7221.c
index 37b4b09b..9dfb88cb 100644
--- a/pjmedia/src/pjmedia-codec/g7221.c
+++ b/pjmedia/src/pjmedia-codec/g7221.c
@@ -375,18 +375,30 @@ PJ_DEF(pj_status_t) pjmedia_codec_g7221_set_mode(unsigned sample_rate,
unsigned bitrate,
pj_bool_t enabled)
{
+ pjmedia_codec_mgr *codec_mgr;
unsigned i;
/* Validate mode */
if (!validate_mode(sample_rate, bitrate))
return PJMEDIA_CODEC_EINMODE;
+ /* Get codec manager */
+ codec_mgr = pjmedia_endpt_get_codec_mgr(codec_factory.endpt);
+ if (!codec_mgr)
+ return PJMEDIA_CODEC_EFAILED;
+
/* Look up in factory modes table */
for (i = 0; i < codec_factory.mode_count; ++i) {
if (codec_factory.modes[i].sample_rate == sample_rate &&
codec_factory.modes[i].bitrate == bitrate)
{
codec_factory.modes[i].enabled = enabled;
+
+ /* Re-register G722.1 codec factory to update codec list */
+ pjmedia_codec_mgr_unregister_factory(codec_mgr,
+ &codec_factory.base);
+ pjmedia_codec_mgr_register_factory(codec_mgr,
+ &codec_factory.base);
return PJ_SUCCESS;
}
}
@@ -413,6 +425,12 @@ PJ_DEF(pj_status_t) pjmedia_codec_g7221_set_mode(unsigned sample_rate,
mode->bitrate = bitrate;
pj_utoa(mode->bitrate, mode->bitrate_str);
+ /* Re-register G722.1 codec factory to update codec list */
+ pjmedia_codec_mgr_unregister_factory(codec_mgr,
+ &codec_factory.base);
+ pjmedia_codec_mgr_register_factory(codec_mgr,
+ &codec_factory.base);
+
return PJ_SUCCESS;
}
}