diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2014-09-24 11:48:39 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2014-09-24 11:48:39 +0000 |
commit | bcbc54440da8cffc2d7b58f107ba25c7e4f3da06 (patch) | |
tree | b5297f68cb2b754c7c549305a9959418cfcdf016 /pjmedia/src/pjmedia-codec | |
parent | 29df9f4ccdf3c7922248d905136a732e30785e52 (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/src/pjmedia-codec')
-rw-r--r-- | pjmedia/src/pjmedia-codec/g7221.c | 18 |
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; } } |