From e3fd604ea862f68ad3ece248ca7d853899cbf48f Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 23 Mar 2007 16:34:20 +0000 Subject: ICE (work in progress): integration with PJSUA git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1098 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip-apps/build/pjsua.dsp | 4 +-- pjsip-apps/src/pjsua/pjsua_app.c | 77 ++++++++++------------------------------ 2 files changed, 20 insertions(+), 61 deletions(-) (limited to 'pjsip-apps') 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; -- cgit v1.2.3