summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-06-19 14:49:14 +0000
committerBenny Prijono <bennylp@teluu.com>2006-06-19 14:49:14 +0000
commitc737c25054a22df28cdfbc3ec470e0877da6cb0b (patch)
treea4f266a8f2f7ef2d1aeab27b31caf87185234eb7 /pjsip
parente301abfa0b1b8fcc1a54af18b602e293227693e3 (diff)
Re-live --quality options in pjsua
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@528 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/build/Makefile2
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h13
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c21
3 files changed, 30 insertions, 6 deletions
diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile
index 1fd183aa..30e61e10 100644
--- a/pjsip/build/Makefile
+++ b/pjsip/build/Makefile
@@ -126,7 +126,7 @@ pjsua-lib:
echo Making $@
$(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@
-clean depend realclean:
+clean depend:
$(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@
$(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $@
$(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 90ba0f42..466c3196 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -2037,7 +2037,17 @@ struct pjsua_media_config
*/
unsigned thread_cnt;
-
+ /**
+ * Media quality, 0-10, according to this table:
+ * 8-10: resampling use large filter,
+ * 3-7: resampling use small filter,
+ * 1-2: resampling use linear.
+ * The media quality also sets speex codec quality/complexity to the
+ * number.
+ *
+ * Default: 10.
+ */
+ unsigned quality;
};
@@ -2054,6 +2064,7 @@ PJ_INLINE(void) pjsua_media_config_default(pjsua_media_config *cfg)
cfg->max_media_ports = 32;
cfg->has_ioqueue = PJ_TRUE;
cfg->thread_cnt = 1;
+ cfg->quality = 10;
}
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 2dddd634..730e3d89 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -37,6 +37,7 @@ static void close_snd_dev(void);
pj_status_t pjsua_media_subsys_init(const pjsua_media_config *cfg)
{
pj_str_t codec_id;
+ unsigned opt;
pj_status_t status;
/* Copy configuration */
@@ -75,7 +76,8 @@ pj_status_t pjsua_media_subsys_init(const pjsua_media_config *cfg)
/* Register speex. */
status = pjmedia_codec_speex_init(pjsua_var.med_endpt,
PJMEDIA_SPEEX_NO_UWB,
- -1, -1);
+ pjsua_var.media_cfg.quality,
+ pjsua_var.media_cfg.quality);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Error initializing Speex codec",
status);
@@ -129,6 +131,18 @@ pj_status_t pjsua_media_subsys_init(const pjsua_media_config *cfg)
pjsua_var.mconf_cfg.channel_count = 1;
pjsua_var.mconf_cfg.bits_per_sample = 16;
+ /* Init options for conference bridge. */
+ opt = PJMEDIA_CONF_NO_DEVICE;
+ if (pjsua_var.media_cfg.quality >= 3 &&
+ pjsua_var.media_cfg.quality <= 7)
+ {
+ opt |= PJMEDIA_CONF_SMALL_FILTER;
+ }
+ else if (pjsua_var.media_cfg.quality < 3) {
+ opt |= PJMEDIA_CONF_USE_LINEAR;
+ }
+
+
/* Init conference bridge. */
status = pjmedia_conf_create(pjsua_var.pool,
pjsua_var.media_cfg.max_media_ports,
@@ -136,8 +150,7 @@ pj_status_t pjsua_media_subsys_init(const pjsua_media_config *cfg)
pjsua_var.mconf_cfg.channel_count,
pjsua_var.mconf_cfg.samples_per_frame,
pjsua_var.mconf_cfg.bits_per_sample,
- PJMEDIA_CONF_NO_DEVICE,
- &pjsua_var.mconf);
+ opt, &pjsua_var.mconf);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE,
"Media stack initialization has returned error",
@@ -532,7 +545,7 @@ PJ_DEF(pj_status_t) pjsua_conf_get_port_info( pjsua_conf_port_id id,
pjsua_conf_port_info *info)
{
pjmedia_conf_port_info cinfo;
- unsigned i, count;
+ unsigned i;
pj_status_t status;
status = pjmedia_conf_get_port_info( pjsua_var.mconf, id, &cinfo);