From e3399b0820e6010b0a2d423261d54111af63e528 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Fri, 13 Jun 2008 17:01:46 +0000 Subject: Ticket #540: Added pjsua-lib feature auto-close sound device on idle and new pjsua option --snd-auto-close=N git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2018 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip-apps/src/pjsua/pjsua_app.c | 24 +++++++++++++++++++----- pjsip-apps/src/symbian_ua/ua.cpp | 1 + pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp | 1 + 3 files changed, 21 insertions(+), 5 deletions(-) (limited to 'pjsip-apps') diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c index d80e16c0..17508bc9 100644 --- a/pjsip-apps/src/pjsua/pjsua_app.c +++ b/pjsip-apps/src/pjsua/pjsua_app.c @@ -201,6 +201,9 @@ static void usage(void) puts (" --playback-dev=id Audio playback device ID (default=-1)"); puts (" --capture-lat=N Audio capture latency, in ms (default=10)"); puts (" --playback-lat=N Audio playback latency, in ms (default=100)"); + puts (" --snd-auto-close=N Auto close audio device when it is idle for N seconds."); + puts (" Specify N=-1 (default) to disable this feature."); + puts (" Specify N=0 for instant close when unused."); puts (""); puts ("Media Transport Options:"); @@ -400,7 +403,7 @@ static pj_status_t parse_args(int argc, char *argv[], int c; int option_index; enum { OPT_CONFIG_FILE=127, OPT_LOG_FILE, OPT_LOG_LEVEL, OPT_APP_LOG_LEVEL, - OPT_HELP, OPT_VERSION, OPT_NULL_AUDIO, + OPT_HELP, OPT_VERSION, OPT_NULL_AUDIO, OPT_SND_AUTO_CLOSE, OPT_LOCAL_PORT, OPT_IP_ADDR, OPT_PROXY, OPT_OUTBOUND_PROXY, OPT_REGISTRAR, OPT_REG_TIMEOUT, OPT_PUBLISH, OPT_ID, OPT_CONTACT, OPT_100REL, OPT_USE_IMS, OPT_REALM, OPT_USERNAME, OPT_PASSWORD, @@ -514,6 +517,7 @@ static pj_status_t parse_args(int argc, char *argv[], { "playback-lat", 1, 0, OPT_PLAYBACK_LAT}, { "stdout-refresh", 1, 0, OPT_STDOUT_REFRESH}, { "stdout-refresh-text", 1, 0, OPT_STDOUT_REFRESH_TEXT}, + { "snd-auto-close", 1, 0, OPT_SND_AUTO_CLOSE}, { NULL, 0, 0, 0} }; pj_status_t status; @@ -1108,6 +1112,10 @@ static pj_status_t parse_args(int argc, char *argv[], cfg->playback_lat = atoi(pj_optarg); break; + case OPT_SND_AUTO_CLOSE: + cfg->media_cfg.snd_auto_close_time = atoi(pj_optarg); + break; + default: PJ_LOG(1,(THIS_FILE, "Argument \"%s\" is not valid. Use --help to see help", @@ -1504,6 +1512,11 @@ static int write_settings(const struct app_config *config, pj_ansi_sprintf(line, "--playback-dev %d\n", config->playback_dev); pj_strcat2(&cfg, line); } + if (config->media_cfg.snd_auto_close_time != -1) { + pj_ansi_sprintf(line, "--snd-auto-close %d\n", + config->media_cfg.snd_auto_close_time); + pj_strcat2(&cfg, line); + } /* Sound device latency */ if (config->capture_lat != PJMEDIA_SND_DEFAULT_REC_LATENCY) { @@ -3786,10 +3799,11 @@ pj_status_t app_init(int argc, char *argv[]) } #endif - if (app_config.capture_dev != PJSUA_INVALID_ID - || app_config.playback_dev != PJSUA_INVALID_ID) { - status - = pjsua_set_snd_dev(app_config.capture_dev, app_config.playback_dev); + if (app_config.capture_dev != PJSUA_INVALID_ID || + app_config.playback_dev != PJSUA_INVALID_ID) + { + status = pjsua_set_snd_dev(app_config.capture_dev, + app_config.playback_dev); if (status != PJ_SUCCESS) goto on_error; } diff --git a/pjsip-apps/src/symbian_ua/ua.cpp b/pjsip-apps/src/symbian_ua/ua.cpp index 34935a18..5396bc72 100644 --- a/pjsip-apps/src/symbian_ua/ua.cpp +++ b/pjsip-apps/src/symbian_ua/ua.cpp @@ -334,6 +334,7 @@ static pj_status_t app_startup() med_cfg.audio_frame_ptime = 40; med_cfg.ec_tail_len = 0; med_cfg.enable_ice = USE_ICE; + med_cfg.snd_auto_close_time = 5; // wait for 5 seconds idle before sound dev get auto-closed status = pjsua_init(&cfg, &log_cfg, &med_cfg); if (status != PJ_SUCCESS) { diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp index bd9864b1..7d693b41 100644 --- a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp +++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp @@ -326,6 +326,7 @@ int symbian_ua_init() med_cfg.audio_frame_ptime = 40; med_cfg.ec_tail_len = 0; med_cfg.enable_ice = USE_ICE; + med_cfg.snd_auto_close_time = 5; // wait for 5 seconds idle before sound dev get auto-closed pjsua_logging_config log_cfg; -- cgit v1.2.3