From: Michael Jerris Date: Fri, 22 Dec 2006 21:10:20 +0000 (+0000) Subject: default timeout on record to 3 seconds, reset timeout when we hear sound above the... X-Git-Tag: v1.0-beta1~1458 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db286703a61adeebdbe559ca398f0e1a4ee394bc;p=thirdparty%2Ffreeswitch.git default timeout on record to 3 seconds, reset timeout when we hear sound above the threshold, change terms of silence timeout to be seconds. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3803 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 23ea16bd1d..a22a67c9ab 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -346,6 +346,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se char *p; const char *vval; time_t start = 0; + int org_silence_hits = 0; if (!fh) { fh = &lfh; @@ -432,10 +433,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se } if (fh->thresh) { - if (!fh->silence_hits) { - fh->silence_hits = 20; + if (fh->silence_hits) { + fh->silence_hits = fh->samplerate * fh->silence_hits; + } else { + fh->silence_hits = fh->samplerate * 3; } - } + org_silence_hits = fh->silence_hits; + } while(switch_channel_ready(channel)) { switch_size_t len; @@ -500,10 +504,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se score = (uint32_t)(energy / samples); if (score < fh->thresh) { - if (!--fh->silence_hits) { + fh->silence_hits -= fh->samplerate; + if (fh->silence_hits <= 0) { break; } - } + } else { + fh->silence_hits = org_silence_hits; + } } if (!switch_test_flag(fh, SWITCH_FILE_PAUSE)) {