diff options
author | Kevin P. Fleming <kpfleming@digium.com> | 2005-10-04 22:35:43 +0000 |
---|---|---|
committer | Kevin P. Fleming <kpfleming@digium.com> | 2005-10-04 22:35:43 +0000 |
commit | 0c886c21c21eaa05154fd0b01970eddbe108609c (patch) | |
tree | 11cf6f1d62f70f11687f6201efa57f3e52aacb11 /res/res_agi.c | |
parent | f7d567fe85b60a82ef45273d7eb12dae2666e593 (diff) |
truncate last 200ms of DTMF-terminated recording to eliminate inband DTMF (issue #5383)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6717 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_agi.c')
-rwxr-xr-x | res/res_agi.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/res/res_agi.c b/res/res_agi.c index c13eab760..5645b79cb 100755 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -962,7 +962,11 @@ static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, char switch(f->frametype) { case AST_FRAME_DTMF: if (strchr(argv[4], f->subclass)) { - /* This is an interrupting chracter */ + /* This is an interrupting chracter, so rewind to chop off any small + amount of DTMF that may have been recorded + */ + ast_stream_rewind(fs, 200); + ast_truncstream(fs); sample_offset = ast_tellstream(fs); fdprintf(agi->fd, "200 result=%d (dtmf) endpos=%ld\n", f->subclass, sample_offset); ast_closestream(fs); |