diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-07-26 17:05:39 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-07-26 17:05:39 +0000 |
commit | f7e0a9340f01cad3c07f6f8bcf44ee0d82899193 (patch) | |
tree | 84e267610e1152dea0941713899f386322186fb5 | |
parent | 2fa99a7ade8748fae314aeab2fea83e9bc88c36c (diff) |
Added --ptime and --no-vad option in pjsua
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@629 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjsip-apps/src/pjsua/pjsua_app.c | 16 | ||||
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua.h | 14 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 12 |
3 files changed, 35 insertions, 7 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c index aa724296..e48d2cb4 100644 --- a/pjsip-apps/src/pjsua/pjsua_app.c +++ b/pjsip-apps/src/pjsua/pjsua_app.c @@ -116,9 +116,9 @@ static void usage(void) puts (" --auto-loop Automatically loop incoming RTP to outgoing RTP"); puts (" --rtp-port=N Base port to try for RTP (default=4000)"); puts (" --quality=N Specify media quality (0-10, default=10)"); - /* puts (" --ptime=MSEC Override codec ptime to MSEC (default=specific)"); - */ + puts (" --no-vad Disable VAD/silence detector (default=vad enabled)"); + puts (""); puts ("Buddy List (can be more than one):"); puts (" --add-buddy url Add the specified URL to the buddy list."); @@ -248,7 +248,7 @@ static pj_status_t parse_args(int argc, char *argv[], OPT_AUTO_ANSWER, OPT_AUTO_HANGUP, OPT_AUTO_PLAY, OPT_AUTO_LOOP, OPT_AUTO_CONF, OPT_CLOCK_RATE, OPT_PLAY_FILE, OPT_RTP_PORT, OPT_ADD_CODEC, - OPT_COMPLEXITY, OPT_QUALITY, OPT_PTIME, + OPT_COMPLEXITY, OPT_QUALITY, OPT_PTIME, OPT_NO_VAD, OPT_NEXT_ACCOUNT, OPT_NEXT_CRED, OPT_MAX_CALLS, OPT_DURATION, OPT_NO_TCP, OPT_NO_UDP, }; @@ -289,6 +289,7 @@ static pj_status_t parse_args(int argc, char *argv[], { "complexity", 1, 0, OPT_COMPLEXITY}, { "quality", 1, 0, OPT_QUALITY}, { "ptime", 1, 0, OPT_PTIME}, + { "no-vad", 0, 0, OPT_NO_VAD}, { "next-account",0,0, OPT_NEXT_ACCOUNT}, { "next-cred", 0, 0, OPT_NEXT_CRED}, { "max-calls", 1, 0, OPT_MAX_CALLS}, @@ -591,17 +592,20 @@ static pj_status_t parse_args(int argc, char *argv[], case OPT_DURATION: cfg->duration = my_atoi(pj_optarg); break; + */ case OPT_PTIME: - cfg->ptime = my_atoi(pj_optarg); - if (cfg->ptime < 10 || cfg->ptime > 1000) { + cfg->media_cfg.ptime = my_atoi(pj_optarg); + if (cfg->media_cfg.ptime < 10 || cfg->media_cfg.ptime > 1000) { PJ_LOG(1,(THIS_FILE, "Error: invalid --ptime option")); return -1; } break; - */ + case OPT_NO_VAD: + cfg->media_cfg.no_vad = PJ_TRUE; + break; case OPT_QUALITY: cfg->media_cfg.quality = my_atoi(pj_optarg); diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h index 5b8125a2..07287a0a 100644 --- a/pjsip/include/pjsua-lib/pjsua.h +++ b/pjsip/include/pjsua-lib/pjsua.h @@ -2090,6 +2090,20 @@ struct pjsua_media_config * Default: 5. */ unsigned quality; + + /** + * Specify default ptime. + * + * Default: 0 (codec specific) + */ + unsigned ptime; + + /** + * Disable VAD? + * + * Default: 0 (no (meaning VAD is enabled)) + */ + pj_bool_t no_vad; }; diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index e7455e80..e9042670 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -1852,7 +1852,17 @@ static void pjsua_call_on_media_update(pjsip_inv_session *inv, } else { /* Override ptime, if this option is specified. */ - PJ_TODO(set_codec_ptime_in_call); + if (pjsua_var.media_cfg.ptime != 0) { + sess_info.stream_info[0].param->setting.frm_per_pkt = + pjsua_var.media_cfg.ptime / sess_info.stream_info[0].param->info.frm_ptime; + if (sess_info.stream_info[0].param->setting.frm_per_pkt == 0) + sess_info.stream_info[0].param->setting.frm_per_pkt = 1; + } + + /* Disable VAD, if this option is specified. */ + if (pjsua_var.media_cfg.no_vad) { + sess_info.stream_info[0].param->setting.vad = 0; + } /* Optionally, application may modify other stream settings here |