From 732ea8a3ac4abeac2842d4bfef0814d255695874 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 24 Nov 2013 17:29:12 -0500 Subject: [PATCH] Optimize the reinitialization of the buffer descriptor in the receive threads --- src/com/limelight/nvstream/NvAudioStream.java | 15 ++++++--------- src/com/limelight/nvstream/NvVideoStream.java | 13 +++++-------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/com/limelight/nvstream/NvAudioStream.java b/src/com/limelight/nvstream/NvAudioStream.java index a187ca9a..8966b2a6 100644 --- a/src/com/limelight/nvstream/NvAudioStream.java +++ b/src/com/limelight/nvstream/NvAudioStream.java @@ -184,8 +184,8 @@ public class NvAudioStream { Thread t = new Thread() { @Override public void run() { - DatagramPacket packet = new DatagramPacket(new byte[1500], 1500); - AvByteBufferDescriptor desc = new AvByteBufferDescriptor(null, 0, 0); + AvByteBufferDescriptor desc = new AvByteBufferDescriptor(new byte[1500], 0, 1500); + DatagramPacket packet = new DatagramPacket(desc.data, desc.length); while (!isInterrupted()) { @@ -195,15 +195,12 @@ public class NvAudioStream { listener.connectionTerminated(e); return; } - - desc.length = packet.getLength(); - desc.offset = packet.getOffset(); - desc.data = packet.getData(); - + // Give the packet to the depacketizer thread + desc.length = packet.getLength(); if (packets.offer(new AvRtpPacket(desc))) { - // Get a new buffer from the buffer pool - packet.setData(new byte[1500], 0, 1500); + desc.reinitialize(new byte[1500], 0, 1500); + packet.setData(desc.data, desc.offset, desc.length); } } } diff --git a/src/com/limelight/nvstream/NvVideoStream.java b/src/com/limelight/nvstream/NvVideoStream.java index b4d20a26..34ce7eaf 100644 --- a/src/com/limelight/nvstream/NvVideoStream.java +++ b/src/com/limelight/nvstream/NvVideoStream.java @@ -242,8 +242,8 @@ public class NvVideoStream { Thread t = new Thread() { @Override public void run() { - DatagramPacket packet = new DatagramPacket(new byte[1500], 1500); - AvByteBufferDescriptor desc = new AvByteBufferDescriptor(null, 0, 0); + AvByteBufferDescriptor desc = new AvByteBufferDescriptor(new byte[1500], 0, 1500); + DatagramPacket packet = new DatagramPacket(desc.data, desc.length); while (!isInterrupted()) { @@ -254,14 +254,11 @@ public class NvVideoStream { return; } - desc.length = packet.getLength(); - desc.offset = packet.getOffset(); - desc.data = packet.getData(); - // Give the packet to the depacketizer thread + desc.length = packet.getLength(); if (packets.offer(new AvRtpPacket(desc))) { - // Get a new buffer from the buffer pool - packet.setData(new byte[1500], 0, 1500); + desc.reinitialize(new byte[1500], 0, 1500); + packet.setData(desc.data, desc.offset, desc.length); } } }