diff --git a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java index d7606a88a14d3f1b5d351feedd4abf6a805fa6a5..f3b7223c47517a1341cef7ed48592b3f6ac59829 100644 --- a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java +++ b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java @@ -2888,4 +2888,37 @@ public void addDynamicRTPPayloadTypeOverride(byte originalPt, ptTransformEngine.addPTMappingOverride(originalPt, overloadPt); } } + + /** + * {@inheritDoc} + */ + public void removeReceiveStreamForSsrc(long ssrc) + { + Vector receiveStreamsVector = rtpManager.getReceiveStreams(); + ReceiveStream toRemove = null; + for(int i=0; i<receiveStreamsVector.size(); i++) + { + ReceiveStream receiveStream + = (ReceiveStream) receiveStreamsVector.get(i); + if (receiveStream.getSSRC() == ssrc) + { + toRemove = receiveStream; + break; + } + } + + if (toRemove != null) + { + synchronized (receiveStreams) + { + if (receiveStreams.contains(toRemove)) + { + receiveStreams.remove(toRemove); + MediaDeviceSession deviceSession = getDeviceSession(); + if (deviceSession != null) + deviceSession.removeReceiveStream(toRemove); + } + } + } + } } diff --git a/src/org/jitsi/service/neomedia/MediaStream.java b/src/org/jitsi/service/neomedia/MediaStream.java index 3fa76555fe1bdba2d772f404924b80301c722492..60a83c466893362b8c7209d98368b7d8e1133dc0 100644 --- a/src/org/jitsi/service/neomedia/MediaStream.java +++ b/src/org/jitsi/service/neomedia/MediaStream.java @@ -376,4 +376,12 @@ public void addDynamicRTPPayloadTypeOverride(byte originalPt, * this MediaStream. */ public MediaStreamStats getMediaStreamStats(); + + /** + * Removes the <tt>ReceiveStream</tt> with SSRC <tt>ssrc</tt>, if there is + * such a <tt>ReceiveStream</tt>, from the receive streams of this + * <tt>MediaStream</tt> + * @param ssrc the SSRC for which to remove a <tt>ReceiveStream</tt> + */ + public void removeReceiveStreamForSsrc(long ssrc); }