提交 db286703 authored 作者: Michael Jerris's avatar Michael Jerris

default timeout on record to 3 seconds, reset timeout when we hear sound above…

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
上级 aae9da64
...@@ -346,6 +346,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se ...@@ -346,6 +346,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
char *p; char *p;
const char *vval; const char *vval;
time_t start = 0; time_t start = 0;
int org_silence_hits = 0;
if (!fh) { if (!fh) {
fh = &lfh; fh = &lfh;
...@@ -432,10 +433,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se ...@@ -432,10 +433,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
} }
if (fh->thresh) { if (fh->thresh) {
if (!fh->silence_hits) { if (fh->silence_hits) {
fh->silence_hits = 20; 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)) { while(switch_channel_ready(channel)) {
switch_size_t len; switch_size_t len;
...@@ -500,10 +504,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se ...@@ -500,10 +504,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
score = (uint32_t)(energy / samples); score = (uint32_t)(energy / samples);
if (score < fh->thresh) { if (score < fh->thresh) {
if (!--fh->silence_hits) { fh->silence_hits -= fh->samplerate;
if (fh->silence_hits <= 0) {
break; break;
} }
} } else {
fh->silence_hits = org_silence_hits;
}
} }
if (!switch_test_flag(fh, SWITCH_FILE_PAUSE)) { if (!switch_test_flag(fh, SWITCH_FILE_PAUSE)) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论