summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-03-20 17:42:37 +0000
committerBenny Prijono <bennylp@teluu.com>2006-03-20 17:42:37 +0000
commitd6203a1e7865a761624832100980c20fccb60277 (patch)
tree2f42397734243965df20e324b0e257b1fb8519c2 /pjsip
parent7bc85671e50779d355c498ff2b20d8f577480214 (diff)
Added clock-rate options in pjsua
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@343 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h2
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c18
-rw-r--r--pjsip/src/pjsua-lib/pjsua_settings.c33
3 files changed, 42 insertions, 11 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 5a39c9ed..c5594f4c 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -180,6 +180,8 @@ struct pjsua
int start_rtp_port;/**< Start of RTP port to try. */
pjmedia_endpt *med_endpt; /**< Media endpoint. */
unsigned clock_rate; /**< Internal clock rate. */
+ pj_bool_t has_wb; /**< Include wideband codecs */
+ pj_bool_t has_uwb; /**< Include ultra-wideband codecs */
pjmedia_conf *mconf; /**< Media conference. */
pj_bool_t null_audio; /**< Null audio flag. */
pj_bool_t no_mic; /**< Disable microphone. */
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index 1dd4ca08..fdf66c8f 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -77,9 +77,15 @@ void pjsua_default(void)
pjsua.stun_port1 = pjsua.stun_port2 = 0;
/* Default for media: */
+#if defined(PJ_DARWINOS) && PJ_DARWINOS!=0
+ pjsua.clock_rate = 44100;
+#else
pjsua.clock_rate = 8000;
+#endif
pjsua.complexity = -1;
pjsua.quality = 4;
+ pjsua.has_wb = 0;
+ pjsua.has_uwb = 0;
/* Init accounts: */
@@ -621,10 +627,10 @@ static pj_status_t init_media(void)
unsigned option = PJMEDIA_SPEEX_NO_WB | PJMEDIA_SPEEX_NO_UWB;
/* Register speex. */
- if (pjsua.clock_rate >= 16000)
- option &= ~(PJMEDIA_SPEEX_NO_WB);
- if (pjsua.clock_rate >= 32000)
- option &= ~(PJMEDIA_SPEEX_NO_UWB);
+ if (pjsua.has_wb)
+ option &= ~PJMEDIA_SPEEX_NO_WB;
+ if (pjsua.has_uwb)
+ option &= ~PJMEDIA_SPEEX_NO_UWB;
status = pjmedia_codec_speex_init(pjsua.med_endpt, option,
pjsua.quality, pjsua.complexity );
@@ -689,9 +695,9 @@ static pj_status_t init_media(void)
unsigned option = PJMEDIA_SPEEX_NO_WB | PJMEDIA_SPEEX_NO_UWB;
/* Register speex. */
- if (pjsua.clock_rate >= 16000)
+ if (pjsua.has_wb)
option &= ~(PJMEDIA_SPEEX_NO_WB);
- if (pjsua.clock_rate >= 32000)
+ if (pjsua.has_uwb)
option &= ~(PJMEDIA_SPEEX_NO_UWB);
status = pjmedia_codec_speex_init(pjsua.med_endpt, option,
diff --git a/pjsip/src/pjsua-lib/pjsua_settings.c b/pjsip/src/pjsua-lib/pjsua_settings.c
index a5013bfe..b4d52e53 100644
--- a/pjsip/src/pjsua-lib/pjsua_settings.c
+++ b/pjsip/src/pjsua-lib/pjsua_settings.c
@@ -86,6 +86,7 @@ static void usage(void)
puts ("Media Options:");
puts (" --wb Enable wideband codecs and set clock-rate to 16KHz");
puts (" --uwb Enable ultra-wideband codecs and set clock-rate to 32KHz");
+ puts (" --clock-rate=N Override sound device clock rate");
puts (" --null-audio Use NULL audio device");
puts (" --no-mic Disable microphone device");
puts (" --play-file=file Play WAV file in conference bridge");
@@ -226,7 +227,7 @@ pj_status_t pjsua_parse_args(int argc, char *argv[])
OPT_USE_STUN1, OPT_USE_STUN2,
OPT_ADD_BUDDY, OPT_OFFER_X_MS_MSG, OPT_NO_PRESENCE,
OPT_AUTO_ANSWER, OPT_AUTO_HANGUP, OPT_AUTO_PLAY, OPT_AUTO_LOOP,
- OPT_AUTO_CONF,
+ OPT_AUTO_CONF, OPT_CLOCK_RATE,
OPT_PLAY_FILE, OPT_WB, OPT_UWB, OPT_RTP_PORT, OPT_ADD_CODEC,
OPT_COMPLEXITY, OPT_QUALITY,
OPT_NEXT_ACCOUNT, OPT_NEXT_CRED, OPT_MAX_CALLS, OPT_UAS_REFRESH,
@@ -241,6 +242,7 @@ pj_status_t pjsua_parse_args(int argc, char *argv[])
{ "version", 0, 0, OPT_VERSION},
{ "wb", 0, 0, OPT_WB},
{ "uwb", 0, 0, OPT_UWB},
+ { "clock-rate", 1, 0, OPT_CLOCK_RATE},
{ "null-audio", 0, 0, OPT_NULL_AUDIO},
{ "no-mic", 0, 0, OPT_NO_MIC},
{ "local-port", 1, 0, OPT_LOCAL_PORT},
@@ -351,11 +353,20 @@ pj_status_t pjsua_parse_args(int argc, char *argv[])
break;
case OPT_WB:
- pjsua.clock_rate = 16000;
+ pjsua.has_wb = 1;
break;
case OPT_UWB:
- pjsua.clock_rate = 32000;
+ pjsua.has_uwb = 1;
+ break;
+
+ case OPT_CLOCK_RATE:
+ lval = pj_strtoul(pj_cstr(&tmp, pj_optarg));
+ if (lval < 8000 || lval > 48000) {
+ printf("Error: expecting value between 8000-48000 for clock rate\n");
+ return PJ_EINVAL;
+ }
+ pjsua.clock_rate = (int)lval;
break;
case OPT_LOCAL_PORT: /* local-port */
@@ -573,6 +584,12 @@ pj_status_t pjsua_parse_args(int argc, char *argv[])
return PJ_EINVAL;
}
+ /* Adjust clock rate */
+ if (pjsua.clock_rate == 8000 && pjsua.has_uwb)
+ pjsua.clock_rate = 32000;
+ else if (pjsua.clock_rate == 8000 && pjsua.has_wb)
+ pjsua.clock_rate = 16000;
+
return PJ_SUCCESS;
}
@@ -905,11 +922,17 @@ int pjsua_dump_settings(char *buf, pj_size_t max)
pj_strcat2(&cfg, line);
}
/* Media clock rate. */
- if (pjsua.clock_rate >= 32000)
+ if (pjsua.has_uwb)
pj_strcat2(&cfg, "--uwb\n");
- else if (pjsua.clock_rate >= 16000)
+
+ if (pjsua.has_wb)
pj_strcat2(&cfg, "--wb\n");
+ pj_ansi_sprintf(line, "--clock-rate %d\n",
+ pjsua.clock_rate);
+ pj_strcat2(&cfg, line);
+
+
/* Encoding quality and complexity */
pj_ansi_sprintf(line, "--quality %d\n",
pjsua.quality);