From 33944cd85c24da95395f371d366c0716576e6d17 Mon Sep 17 00:00:00 2001 From: Boris Grozev <boris@jitsi.org> Date: Tue, 17 Jun 2014 15:46:17 +0200 Subject: [PATCH] Reuse the byte[] in a RawPacket, and copy the contents. --- .../neomedia/RTPConnectorInputStream.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) mode change 100644 => 100755 src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java diff --git a/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java b/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java old mode 100644 new mode 100755 index 1a6d19a6..0402a5f5 --- a/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java +++ b/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java @@ -209,10 +209,25 @@ protected RawPacket[] createRawPacket(DatagramPacket datagramPacket) if (pkt == null) pkt = new RawPacket(); - pkt.setBuffer(datagramPacket.getData()); + byte[] buffer = pkt.getBuffer(); + int length = datagramPacket.getLength(); + if (buffer == null || buffer.length < length) + { + buffer = new byte[length]; + pkt.setBuffer(buffer); + } + + System.arraycopy( + datagramPacket.getData(), + datagramPacket.getOffset(), + buffer, + 0, + length); + + pkt.setBuffer(buffer); + pkt.setOffset(0); + pkt.setLength(length); pkt.setFlags(0); - pkt.setLength(datagramPacket.getLength()); - pkt.setOffset(datagramPacket.getOffset()); pkts[0] = pkt; return pkts; @@ -302,7 +317,6 @@ public int getMinimumTransferSize() */ private void poolRawPacket(RawPacket pkt) { - pkt.setBuffer(null); pkt.setFlags(0); pkt.setLength(0); pkt.setOffset(0); -- GitLab