summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2010-01-27 11:48:31 +0000
committerNanang Izzuddin <nanang@teluu.com>2010-01-27 11:48:31 +0000
commitb4363f43a76411dcdbe60917d6ffe2d168cec3a2 (patch)
tree40bf7ba236ca1456a5d47360b711936d87d44011 /pjsip
parent67983fb24f15e72df308c0e52f7055f38c09615c (diff)
Ticket #1028: Recommit r3074 with updated codec.h.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3078 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h3
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c29
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;
}