From db286703a61adeebdbe559ca398f0e1a4ee394bc Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 22 Dec 2006 21:10:20 +0000 Subject: [PATCH] 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 --- src/switch_ivr.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) 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)) {