[asterisk-dev] kindly asking for a bit of testing for a DTMF issue

Alex Hermann alex at speakup.nl
Tue Feb 7 10:35:21 CST 2012


On Tuesday 07 February 2012, Walter Doekes wrote:
> > I have some issues with the length of consecutive dtmf digits and suspect
> > the following part of your patch. I would appreciate if you could
> > elaborate on why s->digitlen[s->current_digits] is set to 0 before
> > s->current_digits is incremented (effectively setting the duration of
> > the previous digit to 0). I would have expected the added line to be on
> > the bottom of the code block, not at the start.
> 
> I'm looking at the 1.8 codebase here and it looks to me like
> s->current_digits is pointing to the "next" digit.

It seems you are right. s->current_digits is incremented only after the
current digit is stored. I misread the post-incr line as pre-incr.


> Perhaps you could elaborate on the problems you are having.

I'm having some troubles with DTMF detection where the channel is
having some noise. In trying to find the cause, the duration of 0ms
seemed suspicious and i suspected a correlation to the mentioned code.

The problem is that between 2 DTMF events correctly converted to rfc2833
events, there is a significant amount of inband DTMF between them which
should have been converted to an rfc2833 event too (or coalesced with
the surrounding ones).

[Feb  6 14:18:49] DTMF[11053] channel.c: DTMF begin '1' received on SS7/ic/22
[Feb  6 14:18:49] DTMF[11053] channel.c: DTMF begin passthrough '1' on SS7/ic/22
[Feb  6 14:18:49] DTMF[11053] channel.c: DTMF end '1' received on SS7/ic/22, duration 25 ms
[Feb  6 14:18:49] DTMF[11053] channel.c: DTMF end accepted with begin '1' on SS7/ic/22
[Feb  6 14:18:49] DTMF[11053] channel.c: DTMF end '1' has duration 25 but want minimum 80, emulating 
on SS7/ic/22
[Feb  6 14:18:49] DTMF[11053] channel.c: DTMF end emulation of '1' queued on SS7/ic/22

Above generated an rfc2833 event

Inbetween these, DTMF is incorrectly transmitted inband for approx, 100 ms.

Below generated an rfc2833 event

[Feb  6 14:18:50] DTMF[11053] channel.c: DTMF begin '1' received on SS7/ic/22
[Feb  6 14:18:50] DTMF[11053] channel.c: DTMF begin passthrough '1' on SS7/ic/22
[Feb  6 14:18:50] DTMF[11053] channel.c: DTMF end '1' received on SS7/ic/22, duration 0 ms
                                                                                     ^^^
                                                                      Weird 0ms duration

[Feb  6 14:18:50] DTMF[11053] channel.c: DTMF end accepted with begin '1' on SS7/ic/22
[Feb  6 14:18:50] DTMF[11053] channel.c: DTMF end '1' detected to have actual duration 40 on the 
wire, emulation will be triggered on SS7/ic/22
[Feb  6 14:18:50] DTMF[11053] channel.c: DTMF end '1' has duration 40 but want minimum 80, emulating 
on SS7/ic/22
[Feb  6 14:18:50] DTMF[11053] channel.c: DTMF end emulation of '1' queued on SS7/ic/22


-- 
Greetings,

Alex Hermann




More information about the asterisk-dev mailing list