From b910673ebab5997173ed89765976aa85a12e6edf Mon Sep 17 00:00:00 2001 From: Vincent Lucas <chenzo@jitsi.org> Date: Tue, 11 Sep 2012 08:50:52 +0000 Subject: [PATCH] Corrects writing DTMF payload (RFC4733) for RTP packets, when the RTP packet length is greater then the fixed header (i.e. with CSRC identifiers). --- .../impl/neomedia/transform/dtmf/DtmfRawPacket.java | 10 +++------- .../neomedia/transform/dtmf/DtmfTransformEngine.java | 7 +++++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfRawPacket.java b/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfRawPacket.java index f3d1fb91..8ddcfe7b 100644 --- a/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfRawPacket.java +++ b/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfRawPacket.java @@ -28,11 +28,6 @@ public class DtmfRawPacket private static final Logger logger = Logger.getLogger(DtmfRawPacket.class); - /** - * The fixed size of a DTMF packet. - */ - public static final int DTMF_PACKET_SIZE = 16; - /** * The event code to send. */ @@ -54,12 +49,13 @@ public class DtmfRawPacket * @param buffer the <tt>byte</tt> array that we should use to store packet * content * @param offset the index where we should start using the <tt>buffer</tt>. + * @param length Length of the packet's data. * @param payload the payload that has been negotiated for telephone events * by our signaling modules. */ - public DtmfRawPacket(byte[] buffer, int offset, byte payload) + public DtmfRawPacket(byte[] buffer, int offset, int length, byte payload) { - super (buffer, offset, DTMF_PACKET_SIZE); + super (buffer, offset, length); setPayload(payload); } diff --git a/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfTransformEngine.java b/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfTransformEngine.java index 54d5f062..d732e15b 100644 --- a/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfTransformEngine.java +++ b/src/org/jitsi/impl/neomedia/transform/dtmf/DtmfTransformEngine.java @@ -236,8 +236,11 @@ public RawPacket transform(RawPacket pkt) throw new IllegalStateException("Can't send DTMF when no payload " +"type has been negotiated for DTMF events."); - DtmfRawPacket dtmfPkt = new DtmfRawPacket(pkt.getBuffer(), - pkt.getOffset(), currentDtmfPayload); + DtmfRawPacket dtmfPkt = new DtmfRawPacket( + pkt.getBuffer(), + pkt.getOffset(), + pkt.getLength(), + currentDtmfPayload); long audioPacketTimestamp = dtmfPkt.getTimestamp(); boolean pktEnd = false; -- GitLab