summaryrefslogtreecommitdiff
path: root/pjsip-apps/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-12-09 15:41:10 +0000
committerBenny Prijono <bennylp@teluu.com>2007-12-09 15:41:10 +0000
commit89ef7bf5fcdd2607b2102d5259c6ed668047c27d (patch)
tree5669f191e0902ee62d6a502145dd77e7fff68855 /pjsip-apps/src
parent9b432447bece1ee6d87f4d8c045e7cab079e85d1 (diff)
Ticket #430: Added --auto-update-nat, --use-compact-form, and --dis-codec options in pjsua (thanks Lafras Henning)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1626 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src')
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index fe92fa2d..90f42026 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -57,6 +57,8 @@ static struct app_config
unsigned codec_cnt;
pj_str_t codec_arg[32];
+ unsigned codec_dis_cnt;
+ pj_str_t codec_dis[32];
pj_bool_t null_audio;
unsigned wav_count;
pj_str_t wav_files[32];
@@ -129,6 +131,8 @@ static void usage(void)
puts (" --password=string Set authentication password");
puts (" --publish Send presence PUBLISH for this account");
puts (" --use-100rel Require reliable provisional response (100rel)");
+ puts (" --auto-update-nat=N Where N is 0 or 1 to enable/disable SIP traversal behind");
+ puts (" symmetric NAT (default 1)");
puts (" --next-cred Add another credentials");
puts ("");
puts ("SIP Account Control:");
@@ -162,6 +166,7 @@ static void usage(void)
puts ("Media Options:");
puts (" --use-ice Enable ICE (default:no)");
puts (" --add-codec=name Manually add codec (default is to enable all)");
+ puts (" --dis-codec=name Disable codec (can be specified multiple times)");
puts (" --clock-rate=N Override sound device clock rate");
puts (" --null-audio Use NULL audio device");
puts (" --play-file=file Register WAV file in conference bridge.");
@@ -197,6 +202,7 @@ static void usage(void)
puts (" --thread-cnt=N Number of worker threads (default:1)");
puts (" --duration=SEC Set maximum call duration (default:no limit)");
puts (" --norefersub Suppress event subscription when transfering calls");
+ puts (" --use-compact-form Minimize SIP message size");
puts ("");
puts ("When URL is specified, pjsua will immediately initiate call to that URL");
@@ -388,6 +394,7 @@ static pj_status_t parse_args(int argc, char *argv[],
OPT_TLS_PASSWORD, OPT_TLS_VERIFY_SERVER, OPT_TLS_VERIFY_CLIENT,
OPT_TLS_NEG_TIMEOUT,
OPT_CAPTURE_DEV, OPT_PLAYBACK_DEV,
+ OPT_AUTO_UPDATE_NAT,OPT_USE_COMPACT_FORM,OPT_DIS_CODEC
};
struct pj_getopt_option long_options[] = {
{ "config-file",1, 0, OPT_CONFIG_FILE},
@@ -412,6 +419,8 @@ static pj_status_t parse_args(int argc, char *argv[],
{ "use-ims", 0, 0, OPT_USE_IMS},
{ "id", 1, 0, OPT_ID},
{ "contact", 1, 0, OPT_CONTACT},
+ { "auto-update-nat", 1, 0, OPT_AUTO_UPDATE_NAT},
+ { "use-compact-form", 0, 0, OPT_USE_COMPACT_FORM},
{ "realm", 1, 0, OPT_REALM},
{ "username", 1, 0, OPT_USERNAME},
{ "password", 1, 0, OPT_PASSWORD},
@@ -433,6 +442,7 @@ static pj_status_t parse_args(int argc, char *argv[],
{ "rtp-port", 1, 0, OPT_RTP_PORT},
{ "use-ice", 0, 0, OPT_USE_ICE},
{ "add-codec", 1, 0, OPT_ADD_CODEC},
+ { "dis-codec", 1, 0, OPT_DIS_CODEC},
{ "complexity", 1, 0, OPT_COMPLEXITY},
{ "quality", 1, 0, OPT_QUALITY},
{ "ptime", 1, 0, OPT_PTIME},
@@ -660,6 +670,25 @@ static pj_status_t parse_args(int argc, char *argv[],
cur_acc->force_contact = pj_str(pj_optarg);
break;
+ case OPT_AUTO_UPDATE_NAT: /* OPT_AUTO_UPDATE_NAT */
+ cur_acc->auto_update_nat = pj_strtoul(pj_cstr(&tmp, pj_optarg));
+ break;
+
+ case OPT_USE_COMPACT_FORM:
+ /* enable compact form - from Ticket #342 */
+ {
+ extern pj_bool_t pjsip_use_compact_form;
+ extern pj_bool_t pjsip_include_allow_hdr_in_dlg;
+ extern pj_bool_t pjmedia_add_rtpmap_for_static_pt;
+
+ pjsip_use_compact_form = PJ_TRUE;
+ /* do not transmit Allow header */
+ pjsip_include_allow_hdr_in_dlg = PJ_FALSE;
+ /* Do not include rtpmap for static payload types (<96) */
+ pjmedia_add_rtpmap_for_static_pt = PJ_FALSE;
+ }
+ break;
+
case OPT_NEXT_ACCOUNT: /* Add more account. */
cfg->acc_cnt++;
cur_acc = &cfg->acc_cfg[cfg->acc_cnt];
@@ -786,6 +815,10 @@ static pj_status_t parse_args(int argc, char *argv[],
}
break;
+ case OPT_DIS_CODEC:
+ cfg->codec_dis[cfg->codec_dis_cnt++] = pj_str(pj_optarg);
+ break;
+
case OPT_ADD_CODEC:
cfg->codec_arg[cfg->codec_cnt++] = pj_str(pj_optarg);
break;
@@ -1070,6 +1103,14 @@ static void write_account_settings(int acc_index, pj_str_t *result)
pj_strcat2(result, line);
}
+ /* */
+ //if (acc_cfg->auto_update_nat)
+ {
+ pj_ansi_sprintf(line, "--auto-update-nat %i\n",
+ (int)acc_cfg->auto_update_nat);
+ pj_strcat2(result, line);
+ }
+
/* Proxy */
for (i=0; i<acc_cfg->proxy_cnt; ++i) {
pj_ansi_sprintf(line, "--proxy %.*s\n",
@@ -1118,6 +1159,7 @@ static int write_settings(const struct app_config *config,
unsigned i;
pj_str_t cfg;
char line[128];
+ extern pj_bool_t pjsip_use_compact_form;
PJ_UNUSED_ARG(max);
@@ -1366,6 +1408,12 @@ static int write_settings(const struct app_config *config,
config->codec_arg[i].ptr);
pj_strcat2(&cfg, line);
}
+ /* Disable codec */
+ for (i=0; i<config->codec_dis_cnt; ++i) {
+ pj_ansi_sprintf(line, "--dis-codec %s\n",
+ config->codec_dis[i].ptr);
+ pj_strcat2(&cfg, line);
+ }
pj_strcat2(&cfg, "\n#\n# User agent:\n#\n");
@@ -1393,6 +1441,10 @@ static int write_settings(const struct app_config *config,
pj_strcat2(&cfg, "--norefersub\n");
}
+ if (pjsip_use_compact_form)
+ {
+ pj_strcat2(&cfg, "--use-compact-form\n");
+ }
pj_strcat2(&cfg, "\n#\n# Buddies:\n#\n");
@@ -3488,6 +3540,11 @@ pj_status_t app_init(int argc, char *argv[])
(pj_uint8_t)(PJMEDIA_CODEC_PRIO_NORMAL+i+9));
}
+ /* Optionally disable some codec */
+ for (i=0; i<app_config.codec_dis_cnt; ++i) {
+ pjsua_codec_set_priority(&app_config.codec_dis[i],PJMEDIA_CODEC_PRIO_DISABLED);
+ }
+
/* Add RTP transports */
status = pjsua_media_transports_create(&app_config.rtp_cfg);
if (status != PJ_SUCCESS)