From bcbc54440da8cffc2d7b58f107ba25c7e4f3da06 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Wed, 24 Sep 2014 11:48:39 +0000 Subject: 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 --- pjmedia/src/pjmedia-codec/g7221.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'pjmedia/src/pjmedia-codec') 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; } } -- cgit v1.2.3