diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2010-01-26 15:29:23 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2010-01-26 15:29:23 +0000 |
commit | 5900f75534e21f750e370ec230aec3d6cd58b850 (patch) | |
tree | 7fc83b5af3a016da146bcd3a468c1b02cbcb6522 /pjsip | |
parent | 3b0e3817784670d13b0f0a62e28047e56c81042b (diff) |
Ticket #1028:
- Added new API pjmedia_codec_mgr_set_default_param() to set/update default codec parameter and implemented pjsua_codec_set_param() based on it.
- Added mutex in codec manager to protect states manipulations.
- Modified API pjmedia_codec_mgr_init() to add pool factory param.
- Added new API pjmedia_codec_mgr_destroy().
- Updated passthrough codec AMR to regard peer's mode-set setting.
- Fixed VAS audio device to apply AMR encoding bitrate setting.
- Fixed IPP codec codec_open() to update AMR bitrate info (for stream) when AMR encoding bitrate is not using the default, e.g: requested by peer via format param 'mode-set' in SDP.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3074 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua.h | 3 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 29 |
2 files changed, 26 insertions, 6 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h index 44ce9f0f..ecafb25d 100644 --- a/pjsip/include/pjsua-lib/pjsua.h +++ b/pjsip/include/pjsua-lib/pjsua.h @@ -4483,7 +4483,8 @@ PJ_DECL(pj_status_t) pjsua_codec_get_param( const pj_str_t *codec_id, * Set codec parameters. * * @param codec_id Codec ID. - * @param param Codec parameter to set. + * @param param Codec parameter to set. Set to NULL to reset + * codec parameter to library default settings. * * @return PJ_SUCCESS on success, or the appropriate error code. */ diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 3a6bb04f..234833b6 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -3054,11 +3054,30 @@ PJ_DEF(pj_status_t) pjsua_codec_get_param( const pj_str_t *codec_id, /* * Set codec parameters. */ -PJ_DEF(pj_status_t) pjsua_codec_set_param( const pj_str_t *id, +PJ_DEF(pj_status_t) pjsua_codec_set_param( const pj_str_t *codec_id, const pjmedia_codec_param *param) { - PJ_UNUSED_ARG(id); - PJ_UNUSED_ARG(param); - PJ_TODO(set_codec_param); - return PJ_SUCCESS; + const pjmedia_codec_info *info[2]; + pjmedia_codec_mgr *codec_mgr; + unsigned count = 2; + pj_status_t status; + + codec_mgr = pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt); + + status = pjmedia_codec_mgr_find_codecs_by_id(codec_mgr, codec_id, + &count, info, NULL); + if (status != PJ_SUCCESS) + return status; + + /* Codec ID should be specific, except for G.722.1 */ + if (count > 1 && + pj_strnicmp2(codec_id, "G7221/16", 8) != 0 && + pj_strnicmp2(codec_id, "G7221/32", 8) != 0) + { + pj_assert(!"Codec ID is not specific"); + return PJ_ETOOMANY; + } + + status = pjmedia_codec_mgr_set_default_param(codec_mgr, info[0], param); + return status; } |