summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-03-23 16:34:20 +0000
committerBenny Prijono <bennylp@teluu.com>2007-03-23 16:34:20 +0000
commite3fd604ea862f68ad3ece248ca7d853899cbf48f (patch)
tree88fb4659ab449d79b25dc8e0dfe3b64f145b9dd3 /pjsip-apps
parent05e7998ba4cbd7fb0b02b7f82c5b328cf203fbc9 (diff)
ICE (work in progress): integration with PJSUA
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1098 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/build/pjsua.dsp4
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c77
2 files changed, 20 insertions, 61 deletions
diff --git a/pjsip-apps/build/pjsua.dsp b/pjsip-apps/build/pjsua.dsp
index 89392633..5ab3d3d0 100644
--- a/pjsip-apps/build/pjsua.dsp
+++ b/pjsip-apps/build/pjsua.dsp
@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W4 /GX /Zi /O2 /I "../../pjsip/include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjmedia/include" /D "NDEBUG" /D PJ_WIN32=1 /D PJ_M_I386=1 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /c
+# ADD CPP /nologo /MD /W4 /GX /Zi /O2 /I "../../pjsip/include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjmedia/include" /I "../../pjnath/include" /D "NDEBUG" /D PJ_WIN32=1 /D PJ_M_I386=1 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -68,7 +68,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W4 /Gm /GX /ZI /Od /I "../../pjsip/include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjmedia/include" /D "_DEBUG" /D PJ_WIN32=1 /D PJ_M_I386=1 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
+# ADD CPP /nologo /MTd /W4 /Gm /GX /ZI /Od /I "../../pjsip/include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjmedia/include" /I "../../pjnath/include" /D "_DEBUG" /D PJ_WIN32=1 /D PJ_M_I386=1 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index 50efe7fb..ed4017dd 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -144,8 +144,7 @@ static void usage(void)
puts (" This option can be specified multiple times.");
puts (" --outbound=url Set the URL of global outbound proxy server");
puts (" May be specified multiple times");
- puts (" --use-stun1=FORMAT where FORMAT=host[:port]");
- puts (" --use-stun2=FORMAT Resolve local IP with the specified STUN servers");
+ puts (" --stun-srv=name Set STUN server host or domain");
puts ("");
puts ("TLS Options:");
puts (" --use-tls Enable TLS transport (default=no)");
@@ -159,6 +158,7 @@ static void usage(void)
puts ("");
puts ("Media Options:");
+ puts (" --use-ice Enable ICE (default:no)");
puts (" --add-codec=name Manually add codec (default is to enable all)");
puts (" --clock-rate=N Override sound device clock rate");
puts (" --null-audio Use NULL audio device");
@@ -325,10 +325,10 @@ static pj_status_t parse_args(int argc, char *argv[],
OPT_LOCAL_PORT, OPT_IP_ADDR, OPT_PROXY, OPT_OUTBOUND_PROXY,
OPT_REGISTRAR, OPT_REG_TIMEOUT, OPT_PUBLISH, OPT_ID, OPT_CONTACT,
OPT_REALM, OPT_USERNAME, OPT_PASSWORD,
- OPT_NAMESERVER, OPT_USE_STUN1, OPT_USE_STUN2,
+ OPT_NAMESERVER, OPT_STUN_SRV,
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_CLOCK_RATE,
+ OPT_AUTO_CONF, OPT_CLOCK_RATE, OPT_USE_ICE,
OPT_PLAY_FILE, OPT_PLAY_TONE, OPT_RTP_PORT, OPT_ADD_CODEC,
OPT_ILBC_MODE, OPT_REC_FILE, OPT_AUTO_REC,
OPT_COMPLEXITY, OPT_QUALITY, OPT_PTIME, OPT_NO_VAD,
@@ -366,8 +366,7 @@ static pj_status_t parse_args(int argc, char *argv[],
{ "username", 1, 0, OPT_USERNAME},
{ "password", 1, 0, OPT_PASSWORD},
{ "nameserver", 1, 0, OPT_NAMESERVER},
- { "use-stun1", 1, 0, OPT_USE_STUN1},
- { "use-stun2", 1, 0, OPT_USE_STUN2},
+ { "stun-srv", 1, 0, OPT_STUN_SRV},
{ "add-buddy", 1, 0, OPT_ADD_BUDDY},
{ "offer-x-ms-msg",0,0,OPT_OFFER_X_MS_MSG},
{ "no-presence", 0, 0, OPT_NO_PRESENCE},
@@ -381,6 +380,7 @@ static pj_status_t parse_args(int argc, char *argv[],
{ "play-tone", 1, 0, OPT_PLAY_TONE},
{ "rec-file", 1, 0, OPT_REC_FILE},
{ "rtp-port", 1, 0, OPT_RTP_PORT},
+ { "use-ice", 0, 0, OPT_USE_ICE},
{ "add-codec", 1, 0, OPT_ADD_CODEC},
{ "complexity", 1, 0, OPT_COMPLEXITY},
{ "quality", 1, 0, OPT_QUALITY},
@@ -441,7 +441,6 @@ static pj_status_t parse_args(int argc, char *argv[],
*/
pj_optind = 0;
while((c=pj_getopt_long(argc,argv, "", long_options,&option_index))!=-1) {
- char *p;
pj_str_t tmp;
long lval;
@@ -632,41 +631,8 @@ static pj_status_t parse_args(int argc, char *argv[],
}
break;
- case OPT_USE_STUN1: /* STUN server 1 */
- p = pj_ansi_strchr(pj_optarg, ':');
- if (p) {
- *p = '\0';
- cfg->udp_cfg.stun_config.stun_srv1 = pj_str(pj_optarg);
- cfg->udp_cfg.stun_config.stun_port1 = pj_strtoul(pj_cstr(&tmp, p+1));
- if (cfg->udp_cfg.stun_config.stun_port1 < 1 || cfg->udp_cfg.stun_config.stun_port1 > 65535) {
- PJ_LOG(1,(THIS_FILE,
- "Error: expecting port number with "
- "option --use-stun1"));
- return PJ_EINVAL;
- }
- } else {
- cfg->udp_cfg.stun_config.stun_port1 = 3478;
- cfg->udp_cfg.stun_config.stun_srv1 = pj_str(pj_optarg);
- }
- cfg->udp_cfg.use_stun = PJ_TRUE;
- break;
-
- case OPT_USE_STUN2: /* STUN server 2 */
- p = pj_ansi_strchr(pj_optarg, ':');
- if (p) {
- *p = '\0';
- cfg->udp_cfg.stun_config.stun_srv2 = pj_str(pj_optarg);
- cfg->udp_cfg.stun_config.stun_port2 = pj_strtoul(pj_cstr(&tmp,p+1));
- if (cfg->udp_cfg.stun_config.stun_port2 < 1 || cfg->udp_cfg.stun_config.stun_port2 > 65535) {
- PJ_LOG(1,(THIS_FILE,
- "Error: expecting port number with "
- "option --use-stun2"));
- return PJ_EINVAL;
- }
- } else {
- cfg->udp_cfg.stun_config.stun_port2 = 3478;
- cfg->udp_cfg.stun_config.stun_srv2 = pj_str(pj_optarg);
- }
+ case OPT_STUN_SRV: /* STUN server */
+ cfg->cfg.stun_srv = pj_str(pj_optarg);
break;
case OPT_ADD_BUDDY: /* Add to buddy list. */
@@ -728,6 +694,10 @@ static pj_status_t parse_args(int argc, char *argv[],
cfg->rec_file = pj_str(pj_optarg);
break;
+ case OPT_USE_ICE:
+ cfg->media_cfg.enable_ice = PJ_TRUE;
+ break;
+
case OPT_RTP_PORT:
cfg->rtp_cfg.port = my_atoi(pj_optarg);
if (cfg->rtp_cfg.port < 1 || cfg->rtp_cfg.port > 65535) {
@@ -1113,21 +1083,13 @@ static int write_settings(const struct app_config *config,
}
/* STUN */
- if (config->udp_cfg.stun_config.stun_port1) {
- pj_ansi_sprintf(line, "--use-stun1 %.*s:%d\n",
- (int)config->udp_cfg.stun_config.stun_srv1.slen,
- config->udp_cfg.stun_config.stun_srv1.ptr,
- config->udp_cfg.stun_config.stun_port1);
+ if (config->cfg.stun_srv.slen) {
+ pj_ansi_sprintf(line, "--stun-srv %.*s\n",
+ (int)config->cfg.stun_srv.slen,
+ config->cfg.stun_srv.ptr);
pj_strcat2(&cfg, line);
}
- if (config->udp_cfg.stun_config.stun_port2) {
- pj_ansi_sprintf(line, "--use-stun2 %.*s:%d\n",
- (int)config->udp_cfg.stun_config.stun_srv2.slen,
- config->udp_cfg.stun_config.stun_srv2.ptr,
- config->udp_cfg.stun_config.stun_port2);
- pj_strcat2(&cfg, line);
- }
/* TLS */
if (config->use_tls)
@@ -1174,6 +1136,8 @@ static int write_settings(const struct app_config *config,
/* Media */
+ if (config->media_cfg.enable_ice)
+ pj_strcat2(&cfg, "--use-ice\n");
if (config->null_audio)
pj_strcat2(&cfg, "--null-audio\n");
if (config->auto_play)
@@ -2962,11 +2926,6 @@ pj_status_t app_init(int argc, char *argv[])
if (status != PJ_SUCCESS)
return status;
- /* Copy udp_cfg STUN config to rtp_cfg */
- app_config.rtp_cfg.use_stun = app_config.udp_cfg.use_stun;
- app_config.rtp_cfg.stun_config = app_config.udp_cfg.stun_config;
-
-
/* Initialize application callbacks */
app_config.cfg.cb.on_call_state = &on_call_state;
app_config.cfg.cb.on_call_media_state = &on_call_media_state;