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