Index: apps/app_meetme.c =================================================================== --- apps/app_meetme.c (revision 156687) +++ apps/app_meetme.c (working copy) @@ -169,7 +169,8 @@ enum { OPT_ARG_WAITMARKED = 0, - OPT_ARG_ARRAY_SIZE = 1, + OPT_ARG_OPTIMIZETALKER = 1, + OPT_ARG_ARRAY_SIZE = 2, }; AST_APP_OPTIONS(meetme_opts, BEGIN_OPTIONS @@ -186,7 +187,7 @@ AST_APP_OPTION('I', CONFFLAG_INTROUSERNOREVIEW ), AST_APP_OPTION('M', CONFFLAG_MOH ), AST_APP_OPTION('m', CONFFLAG_STARTMUTED ), - AST_APP_OPTION('o', CONFFLAG_OPTIMIZETALKER ), + AST_APP_OPTION_ARG('o', CONFFLAG_OPTIMIZETALKER, OPT_ARG_OPTIMIZETALKER ), AST_APP_OPTION('P', CONFFLAG_ALWAYSPROMPT ), AST_APP_OPTION('p', CONFFLAG_POUNDEXIT ), AST_APP_OPTION('q', CONFFLAG_QUIET ), @@ -238,11 +239,12 @@ " 'l' -- set listen only mode (Listen only, no talking)\n" " 'm' -- set initially muted\n" " 'M' -- enable music on hold when the conference has a single caller\n" -" 'o' -- set talker optimization - treats talkers who aren't speaking as\n" -" being muted, meaning (a) No encode is done on transmission and\n" -" (b) Received audio that is not registered as talking is omitted\n" -" causing no buildup in background noise. Note that this option\n" -" will be removed in 1.6 and enabled by default.\n" +" 'o[()]' -- set talker optimization - treats talkers who aren't\n" +" speaking as being muted, meaning (a) No encode is done on\n" +" transmission and (b) Received audio that is not registered as\n" +" talking is omitted causing no buildup in background noise. Note\n" +" that this option will be removed in 1.6 and enabled by default.\n" +" The default threshold is 512.\n" " 'p' -- allow user to exit the conference by pressing '#'\n" " 'P' -- always prompt for the pin even if it is specified\n" " 'q' -- quiet mode (don't play enter/leave sounds)\n" @@ -1523,7 +1525,7 @@ struct dahdi_bufferinfo bi; char __buf[CONF_SIZE + AST_FRIENDLY_OFFSET]; char *buf = __buf + AST_FRIENDLY_OFFSET; - int setusercount = 0; + int setusercount = 0, threshold; if (!(user = ast_calloc(1, sizeof(*user)))) return ret; @@ -1878,6 +1880,9 @@ ast_log(LOG_WARNING, "Unable to allocate DSP!\n"); res = -1; } + if ((confflags & CONFFLAG_OPTIMIZETALKER) && !ast_strlen_zero(optargs[OPT_ARG_OPTIMIZETALKER]) && sscanf(optargs[OPT_ARG_OPTIMIZETALKER], "%d", &threshold) == 1) { + ast_dsp_set_threshold(dsp, threshold); + } for(;;) { int menu_was_active = 0;