mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-16 14:58:25 +00:00
Merged revisions 277247 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r277247 | mnicholson | 2010-07-16 12:29:57 -0500 (Fri, 16 Jul 2010) | 4 lines For pass through DTMF tones, measure the actual duration between the begin and end packets on the wire. If it is detected to be less than AST_MIN_DTMF_DURATION, trigger dtmf emulation. AST-362 ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@277250 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3849,6 +3849,19 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
|
||||
ast_clear_flag(chan, AST_FLAG_IN_DTMF);
|
||||
if (!f->len)
|
||||
f->len = ast_tvdiff_ms(now, chan->dtmf_tv);
|
||||
|
||||
/* detect tones that were received on
|
||||
* the wire with durations shorter than
|
||||
* AST_MIN_DTMF_DURATION and set f->len
|
||||
* to the actual duration of the DTMF
|
||||
* frames on the wire. This will cause
|
||||
* dtmf emulation to be triggered later
|
||||
* on.
|
||||
*/
|
||||
if (ast_tvdiff_ms(now, chan->dtmf_tv) < AST_MIN_DTMF_DURATION) {
|
||||
f->len = ast_tvdiff_ms(now, chan->dtmf_tv);
|
||||
ast_log(LOG_DTMF, "DTMF end '%c' detected to have actual duration %ld on the wire, emulation will be triggered on %s\n", f->subclass, f->len, chan->name);
|
||||
}
|
||||
} else if (!f->len) {
|
||||
ast_log(LOG_DTMF, "DTMF end accepted without begin '%c' on %s\n", f->subclass.integer, chan->name);
|
||||
f->len = AST_MIN_DTMF_DURATION;
|
||||
|
||||
Reference in New Issue
Block a user