Carsten Avenhaus wrote:
> Removing the "continue;" on line 266 of sipXmediaLib/src/mp/MprDecode.cpp
> seems to fix the problem at first glance. Maybe someone who knows the
> code better than me could check if this would cause any other problems?
> 
>     ...Carsten
> 
> 
> Index: sipXtapi/sipXmediaLib/src/mp/MprDecode.cpp
> ===================================================================
> --- sipXtapi/sipXmediaLib/src/mp/MprDecode.cpp  (revision 10627)
> +++ sipXtapi/sipXmediaLib/src/mp/MprDecode.cpp  (working copy)
> @@ -263,7 +263,14 @@
>            // If signaling - decode it now.
>            if (tryDecodeAsSignalling(tmpRtp))
>            {
> -            continue;
> +            /* Fixed Bug: This 'continue' prevents the DTMF RTP packet from
> +               being decoded. => codecs/PlgTone.c:PLG_DECODE_V1() is never
> +               called, and so mpTones->mHaveValidData always stays FALSE.
> +               codecs/PlgTone.c:PLG_SIGNALING_V1() never has data to work 
> with.
> +               MpDecoderBase::getSignalingData() always returns NO_MORE_DATA.
> +
> +            continue;
> +            */
>            }
>            // Accept packet, if it is later then one we already have, else 
> drop it.
>            if (  !rtp.isValid()
> _______________________________________________

I had the same problem and this fix seemed to sort out the problem.

I however have a different problem with DTMF "events". I have an 
application that talks to a device that detects incoming DTMF and
converts to DTMF / Telephone event packets, without any audio.

However the tone events are getting buffered somewhere in the stack
and then require additional packets to "push" them out.

I.e. the application sends

#12345* (No audio, just the DTMF events).

But I only see #1234, sending audio or more DTMF tones from the device
will "flush" the 5* events out of the queue.

The Events seen with wireshark look like

DTMF Event # (Start)
DTMF Event # (End x 3 )
DTMF Event 1 (start)
DTMF Event 1 (End x 3)
DTMF Event 2 (start)
DTMF Event 2 (End x 3)
DTMF Event 3 (start)
DTMF Event 3 (End x 3)
DTMF Event 4 (start)
DTMF Event 4 (End x 3)
DTMF Event 5 (start)
DTMF Event 5 (End x 3)
DTMF Event * (start)
DTMF Event * (End x 3)


I have been working through the code but I have not (yet) been able to
figure out where the events are being buffered.

Has anyone got any pointers?

Regards
Paul


_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/

Reply via email to