From: Alec L Davis Date: Thu, 4 Oct 2012 04:18:44 +0000 (+0000) Subject: _dsp_init: bring inline with trunk X-Git-Tag: 10.10.0-rc1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51b72ee701d07eba8fdcc550747667f25f634f46;p=thirdparty%2Fasterisk.git _dsp_init: bring inline with trunk preparation for clean merge of DTMF TWIST patch No functional changes, just style. alecdavis (license 585) Reported by: Alec Davis Tested by: alecdavis related https://reviewboard.asterisk.org/r/2141 ........ Merged revisions 374365 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@374370 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/dsp.c b/main/dsp.c index 9379c3c1c3..a9cb9a0a8a 100644 --- a/main/dsp.c +++ b/main/dsp.c @@ -1817,33 +1817,34 @@ int ast_dsp_get_tcount(struct ast_dsp *dsp) static int _dsp_init(int reload) { - struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 }; struct ast_config *cfg; + struct ast_variable *v; + struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 }; + int cfg_threshold; - cfg = ast_config_load2(CONFIG_FILE_NAME, "dsp", config_flags); - if (cfg == CONFIG_STATUS_FILEMISSING || cfg == CONFIG_STATUS_FILEINVALID) { - ast_verb(5, "Can't find dsp config file %s. Assuming default silencethreshold of %d.\n", CONFIG_FILE_NAME, DEFAULT_SILENCE_THRESHOLD); - thresholds[THRESHOLD_SILENCE] = DEFAULT_SILENCE_THRESHOLD; + if ((cfg = ast_config_load2(CONFIG_FILE_NAME, "dsp", config_flags)) == CONFIG_STATUS_FILEUNCHANGED) { return 0; } - if (cfg == CONFIG_STATUS_FILEUNCHANGED) { + thresholds[THRESHOLD_SILENCE] = DEFAULT_SILENCE_THRESHOLD; + + if (cfg == CONFIG_STATUS_FILEMISSING || cfg == CONFIG_STATUS_FILEINVALID) { return 0; } - if (cfg) { - const char *value; - - value = ast_variable_retrieve(cfg, "default", "silencethreshold"); - if (value && sscanf(value, "%30d", &thresholds[THRESHOLD_SILENCE]) != 1) { - ast_verb(5, "%s: '%s' is not a valid silencethreshold value\n", CONFIG_FILE_NAME, value); - thresholds[THRESHOLD_SILENCE] = DEFAULT_SILENCE_THRESHOLD; - } else if (!value) { - thresholds[THRESHOLD_SILENCE] = DEFAULT_SILENCE_THRESHOLD; + for (v = ast_variable_browse(cfg, "default"); v; v = v->next) { + if (!strcasecmp(v->name, "silencethreshold")) { + if (sscanf(v->value, "%30d", &cfg_threshold) < 1) { + ast_log(LOG_WARNING, "Unable to convert '%s' to a numeric value.\n", v->value); + } else if (cfg_threshold < 0) { + ast_log(LOG_WARNING, "Invalid silence threshold '%d' specified, using default\n", cfg_threshold); + } else { + thresholds[THRESHOLD_SILENCE] = cfg_threshold; + } } - - ast_config_destroy(cfg); } + ast_config_destroy(cfg); + return 0; } @@ -1861,4 +1862,3 @@ int ast_dsp_reload(void) { return _dsp_init(1); } -