From 4e98f547b52bbce3493561650a490341183b1210 Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov <lyubomir.marinov@jitsi.org> Date: Tue, 31 Jul 2012 20:39:44 +0000 Subject: [PATCH] Fixes an issue which would leak at least one Thread per call which would endlessly send out RTCP packets. --- lib/fmj.jar | Bin 801706 -> 801709 bytes .../jitsi/impl/neomedia/MediaStreamImpl.java | 13 ++- .../neomedia/RTCPConnectorInputStream.java | 105 ++++++++++-------- .../neomedia/RTPConnectorInputStream.java | 10 +- .../neomedia/RTPConnectorOutputStream.java | 20 +++- .../neomedia/codec/video/h264/JNIEncoder.java | 15 ++- .../video/JAWTRendererVideoComponent.java | 3 +- .../ControlTransformInputStream.java | 54 ++------- .../neomedia/event/RTCPFeedbackEvent.java | 4 +- .../neomedia/event/RTCPFeedbackListener.java | 14 ++- 10 files changed, 126 insertions(+), 112 deletions(-) diff --git a/lib/fmj.jar b/lib/fmj.jar index 2c9c69913dc13e1413f788cdfd4d035f96d9ce22..63ccd7b1e1574e9bca3db4a3ae58e4873c1689e0 100644 GIT binary patch delta 35988 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%0Dbk_Gq;1IDbt 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 delta 35957 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 AZvX%Q diff --git a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java index 5b021583..6a975309 100644 --- a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java +++ b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java @@ -502,10 +502,6 @@ public void close() csrcEngine = null; } - if (rtpConnector != null) - rtpConnector.removeTargets(); - rtpConnectorTarget = null; - if (rtpManager != null) { if (logger.isInfoEnabled()) @@ -544,6 +540,15 @@ public void close() } } + /* + * XXX Call AbstractRTPConnector#removeTargets() after + * StreamRTPManager#dispose(). Otherwise, the latter will try to send an + * RTCP BYE and there will be no targets to send it to. + */ + if (rtpConnector != null) + rtpConnector.removeTargets(); + rtpConnectorTarget = null; + if (deviceSession != null) deviceSession.close(); } diff --git a/src/org/jitsi/impl/neomedia/RTCPConnectorInputStream.java b/src/org/jitsi/impl/neomedia/RTCPConnectorInputStream.java index 9eb4c917..e8f10495 100644 --- a/src/org/jitsi/impl/neomedia/RTCPConnectorInputStream.java +++ b/src/org/jitsi/impl/neomedia/RTCPConnectorInputStream.java @@ -23,7 +23,7 @@ public class RTCPConnectorInputStream /** * List of feedback listeners; */ - private final List<RTCPFeedbackListener> rtcpFeedbackListeners + private final List<RTCPFeedbackListener> listeners = new ArrayList<RTCPFeedbackListener>(); /** @@ -45,8 +45,57 @@ public RTCPConnectorInputStream(DatagramSocket socket) */ public void addRTCPFeedbackListener(RTCPFeedbackListener listener) { - if(!rtcpFeedbackListeners.contains(listener)) - rtcpFeedbackListeners.add(listener); + if (listener == null) + throw new NullPointerException("listener"); + if(!listeners.contains(listener)) + listeners.add(listener); + } + + /** + * Notifies a specific list of <tt>RTCPFeedbackListener</tt>s about a + * specific RTCP feedback message if such a message can be parsed out of a + * specific <tt>byte</tt> buffer. + * + * @param source the object to be reported as the source of the + * <tt>RTCPFeedbackEvent</tt> to be fired + * @param buffer the <tt>byte</tt> buffer which may specific an RTCP + * feedback message + * @param offset the offset in <tt>buffer</tt> at which the reading of bytes + * is to begin + * @param length the number of bytes in <tt>buffer</tt> to be read for the + * purposes of parsing an RTCP feedback message and firing an + * <tt>RTPCFeedbackEvent</tt> + * @param listeners the list of <tt>RTCPFeedbackListener</tt>s to be + * notified about the specified RTCP feedback message if such a message can + * be parsed out of the specified <tt>buffer</tt> + */ + public static void fireRTCPFeedbackReceived( + Object source, + byte[] buffer, int offset, int length, + List<RTCPFeedbackListener> listeners) + { + /* + * RTCP feedback message size is minimum 12 bytes: + * Version/Padding/Feedback message type: 1 byte + * Payload type: 1 byte + * Length: 2 bytes + * SSRC of packet sender: 4 bytes + * SSRC of media source: 4 bytes + */ + if ((length >= 12) && !listeners.isEmpty()) + { + int pt = buffer[offset + 1] & 0xFF; + + if ((pt == RTCPFeedbackEvent.PT_PS) + || (pt == RTCPFeedbackEvent.PT_TL)) + { + int fmt = buffer[offset] & 0x1F; + RTCPFeedbackEvent evt = new RTCPFeedbackEvent(source, fmt, pt); + + for (RTCPFeedbackListener l : listeners) + l.rtcpFeedbackReceived(evt); + } + } } /** @@ -56,65 +105,31 @@ public void addRTCPFeedbackListener(RTCPFeedbackListener listener) */ public void removeRTCPFeedbackListener(RTCPFeedbackListener listener) { - rtcpFeedbackListeners.remove(listener); + listeners.remove(listener); } /** * Copies the content of the most recently received packet into * <tt>inBuffer</tt>. * - * @param inBuffer the <tt>byte[]</tt> that we'd like to copy the content - * of the packet to. + * @param buffer the <tt>byte[]</tt> that we'd like to copy the content of + * the packet to. * @param offset the position where we are supposed to start writing in - * <tt>inBuffer</tt>. + * <tt>buffer</tt>. * @param length the number of <tt>byte</tt>s available for writing in - * <tt>inBuffer</tt>. + * <tt>buffer</tt>. * * @return the number of bytes read * * @throws IOException if <tt>length</tt> is less than the size of the * packet. */ - public int read(byte[] inBuffer, int offset, int length) + public int read(byte[] buffer, int offset, int length) throws IOException { - if (ioError) - return -1; - - int pktLength = pkt.getLength(); - - if (length < pktLength) - throw - new IOException("Input buffer not big enough for " + pktLength); - - /* check if RTCP feedback message */ - - /* Feedback message size is minimum 12 bytes: - * Version/Padding/Feedback message type: 1 byte - * Payload type: 1 byte - * Length: 2 bytes - * SSRC of packet sender: 4 bytes - * SSRC of media source: 4 bytes - */ - if(pktLength >= 12) - { - byte data[] = pkt.getBuffer(); - int fmt = 0; - int pt = 0; - - /* get FMT field (last 5 bits of first byte) */ - fmt = (data[0] & 0x1F); - pt |= (data[1] & 0xFF); - - RTCPFeedbackEvent evt = new RTCPFeedbackEvent(this, fmt, pt); - - /* notify feedback listeners */ - for(RTCPFeedbackListener l : rtcpFeedbackListeners) - l.feedbackReceived(evt); - } + int pktLength = super.read(buffer, offset, length); - System.arraycopy( - pkt.getBuffer(), pkt.getOffset(), inBuffer, offset, pktLength); + fireRTCPFeedbackReceived(this, buffer, offset, pktLength, listeners); return pktLength; } diff --git a/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java b/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java index e03c383d..fc1b2969 100755 --- a/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java +++ b/src/org/jitsi/impl/neomedia/RTPConnectorInputStream.java @@ -248,11 +248,15 @@ public int read(byte[] buffer, int offset, int length) int pktLength = pkt.getLength(); if (length < pktLength) - throw - new IOException("Input buffer not big enough for " + pktLength); + { + throw new IOException( + "Input buffer not big enough for " + pktLength); + } System.arraycopy( - pkt.getBuffer(), pkt.getOffset(), buffer, offset, pktLength); + pkt.getBuffer(), pkt.getOffset(), + buffer, offset, + pktLength); return pktLength; } diff --git a/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java b/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java index 54f7a299..0a73313a 100755 --- a/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java +++ b/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java @@ -16,6 +16,7 @@ import org.jitsi.service.libjitsi.*; import org.jitsi.service.packetlogging.*; +import org.jitsi.util.*; /** * @author Bing SU (nova.su@gmail.com) @@ -24,6 +25,12 @@ public abstract class RTPConnectorOutputStream implements OutputDataStream { + /** + * The <tt>Logger</tt> used by the <tt>RTPConnectorOutputStream</tt> class + * and its instances for logging output. + */ + private static final Logger logger + = Logger.getLogger(RTPConnectorOutputStream.class); /** * The maximum number of packets to be sent to be kept in the queue of @@ -307,6 +314,15 @@ public void setMaxPacketsPerMillis(int maxPackets, long perMillis) */ public int write(byte[] buffer, int offset, int length) { + /* + * While calling write without targets can be carried out without a + * problem, such a situation may be a symptom of a problem. For example, + * it was discovered during testing that RTCP was seemingly-endlessly + * sent after hanging up a call. + */ + if (logger.isDebugEnabled() && targets.isEmpty()) + logger.debug("Write called without targets!", new Throwable()); + RawPacket packet = createRawPacket(buffer, offset, length); /* @@ -333,8 +349,8 @@ public int write(byte[] buffer, int offset, int length) public void setPriority(int priority) { // currently no priority is set -// if(maxPacketsPerMillisPolicy != null && -// maxPacketsPerMillisPolicy.sendThread != null) +// if ((maxPacketsPerMillisPolicy != null) +// && (maxPacketsPerMillisPolicy.sendThread != null)) // maxPacketsPerMillisPolicy.sendThread.setPriority(priority); } diff --git a/src/org/jitsi/impl/neomedia/codec/video/h264/JNIEncoder.java b/src/org/jitsi/impl/neomedia/codec/video/h264/JNIEncoder.java index ab1f160f..4062191f 100644 --- a/src/org/jitsi/impl/neomedia/codec/video/h264/JNIEncoder.java +++ b/src/org/jitsi/impl/neomedia/codec/video/h264/JNIEncoder.java @@ -238,16 +238,19 @@ public synchronized void close() } /** - * Event fired when RTCP feedback message is received. + * Notifies this <tt>RTCPFeedbackListener</tt> that an RTCP feedback message + * has been received * - * @param event <tt>RTCPFeedbackEvent</tt> + * @param event an <tt>RTCPFeedbackEvent</tt> which specifies the details of + * the notification event such as the feedback message type and the payload + * type */ - public void feedbackReceived(RTCPFeedbackEvent event) + public void rtcpFeedbackReceived(RTCPFeedbackEvent event) { /* - * If RTCP message is a Picture Loss Indication (PLI) or a - * Full Intra-frame Request (FIR) the encoder will force the next frame - * to be a keyframe. + * If RTCP message is a Picture Loss Indication (PLI) or a Full + * Intra-frame Request (FIR) the encoder will force the next frame to be + * a keyframe. */ if (event.getPayloadType() == RTCPFeedbackEvent.PT_PS) { diff --git a/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java b/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java index e8b1b089..26f05e62 100644 --- a/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java +++ b/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java @@ -21,7 +21,8 @@ public class JAWTRendererVideoComponent extends Canvas { /** - * Serial version UID. + * The serial version UID of the <tt>JAWTRendererVideoComponent</tt> class + * defined to silence a serialization compile-time warning. */ private static final long serialVersionUID = 0L; diff --git a/src/org/jitsi/impl/neomedia/transform/ControlTransformInputStream.java b/src/org/jitsi/impl/neomedia/transform/ControlTransformInputStream.java index db4a4ffc..7b651e01 100644 --- a/src/org/jitsi/impl/neomedia/transform/ControlTransformInputStream.java +++ b/src/org/jitsi/impl/neomedia/transform/ControlTransformInputStream.java @@ -10,6 +10,7 @@ import java.net.*; import java.util.*; +import org.jitsi.impl.neomedia.*; import org.jitsi.service.neomedia.event.*; /** @@ -67,60 +68,27 @@ public void removeRTCPFeedbackListener(RTCPFeedbackListener listener) * Copies the content of the most recently received packet into * <tt>inBuffer</tt>. * - * @param inBuffer the <tt>byte[]</tt> that we'd like to copy the content - * of the packet to. + * @param buffer the <tt>byte[]</tt> that we'd like to copy the content of + * the packet to. * @param offset the position where we are supposed to start writing in - * <tt>inBuffer</tt>. + * <tt>buffer</tt>. * @param length the number of <tt>byte</tt>s available for writing in - * <tt>inBuffer</tt>. + * <tt>buffer</tt>. * * @return the number of bytes read * * @throws IOException if <tt>length</tt> is less than the size of the * packet. */ - public int read(byte[] inBuffer, int offset, int length) + public int read(byte[] buffer, int offset, int length) throws IOException { - if (ioError) - return -1; - - int pktLength = pkt.getLength(); - - if (length < pktLength) - throw new IOException( - "Input buffer not big enough for " + pktLength); - - /* check if RTCP feedback message */ - - /* Feedback message size is minimum 12 bytes: - * Version/Padding/Feedback message type: 1 byte - * Payload type: 1 byte - * Length: 2 bytes - * SSRC of packet sender: 4 bytes - * SSRC of media source: 4 bytes - */ - if ((pktLength >= 12) && !listeners.isEmpty()) - { - byte data[] = pkt.getBuffer(); - int fmt = 0; - int pt = 0; - - /* get FMT field (last 5 bits of first byte) */ - fmt = (data[0] & 0x1F); - pt |= (data[1] & 0xFF); - - RTCPFeedbackEvent evt = new RTCPFeedbackEvent(this, fmt, pt); - - /* notify feedback listeners */ - for(RTCPFeedbackListener l : listeners) - l.feedbackReceived(evt); - } + int pktLength = super.read(buffer, offset, length); - System.arraycopy( - pkt.getBuffer(), pkt.getOffset(), - inBuffer, offset, - pktLength); + RTCPConnectorInputStream.fireRTCPFeedbackReceived( + this, + buffer, offset, pktLength, + listeners); return pktLength; } diff --git a/src/org/jitsi/service/neomedia/event/RTCPFeedbackEvent.java b/src/org/jitsi/service/neomedia/event/RTCPFeedbackEvent.java index 346f2e3a..e0d1e15a 100644 --- a/src/org/jitsi/service/neomedia/event/RTCPFeedbackEvent.java +++ b/src/org/jitsi/service/neomedia/event/RTCPFeedbackEvent.java @@ -45,12 +45,12 @@ public class RTCPFeedbackEvent /** * Feedback message type. */ - private int feedbackMessageType = 0; + private final int feedbackMessageType; /** * Payload type. */ - private int payloadType = 0; + private final int payloadType; /** * Constructor. diff --git a/src/org/jitsi/service/neomedia/event/RTCPFeedbackListener.java b/src/org/jitsi/service/neomedia/event/RTCPFeedbackListener.java index 7f1577b5..7b726976 100644 --- a/src/org/jitsi/service/neomedia/event/RTCPFeedbackListener.java +++ b/src/org/jitsi/service/neomedia/event/RTCPFeedbackListener.java @@ -7,19 +7,21 @@ package org.jitsi.service.neomedia.event; /** - * <tt>RTCPFeedbackListener</tt> is used by codec to be notified - * by RTCP feedback event such as PLI (Picture Loss Indication) or - * FIR (Full Intra-frame Request). + * Represents a listener of RTCP feedback messages such as PLI (Picture Loss + * Indication) or FIR (Full Intra-frame Request). * * @author Sebastien Vincent */ public interface RTCPFeedbackListener { /** - * Event fired when RTCP feedback message is received. + * Notifies this <tt>RTCPFeedbackListener</tt> that an RTCP feedback message + * has been received * - * @param event <tt>RTCPFeedbackEvent</tt> + * @param event an <tt>RTCPFeedbackEvent</tt> which specifies the details of + * the notification event such as the feedback message type and the payload + * type */ - public void feedbackReceived(RTCPFeedbackEvent event); + public void rtcpFeedbackReceived(RTCPFeedbackEvent event); } -- GitLab