Ticket #1028: Recommit r3074 with updated codec.h.



git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3078 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 44ce9f0..ecafb25 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -4483,7 +4483,8 @@
  * 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 3a6bb04..234833b 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -3054,11 +3054,30 @@
 /*
  * 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;
 }