aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/service/protocol/media
diff options
context:
space:
mode:
authorBoris Grozev <boris@jitsi.org>2013-07-18 12:56:38 +0300
committerBoris Grozev <boris@jitsi.org>2013-07-18 12:56:38 +0300
commit82c41a77473887421350e6dcf81497acf0ec6917 (patch)
treebe98e3648f4ad3659006079ffcc7524acbde6389 /src/net/java/sip/communicator/service/protocol/media
parentc1557f7519c1137bb0b9687303373666d35d71fc (diff)
downloadjitsi-82c41a77473887421350e6dcf81497acf0ec6917.zip
jitsi-82c41a77473887421350e6dcf81497acf0ec6917.tar.gz
jitsi-82c41a77473887421350e6dcf81497acf0ec6917.tar.bz2
When a ConferenceMember is removed from a conference with a
Jitsi-videobridge, an RTCP BYE packet is not always sent. Therefore, if the ConferenceMember had an associated video SSRC, the stream isn't be removed until it times out, leaving a blank video container in the interface for a few seconds. This works around the problem by removing the ConferenceMember's ReceiveStream when the ConferenceMember is removed. The proper solution is to ensure that RTCP BYEs are sent whenever necessary, and when it is deployed this code should be removed.
Diffstat (limited to 'src/net/java/sip/communicator/service/protocol/media')
-rw-r--r--src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java b/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java
index bdc84a6..d9e1733 100644
--- a/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java
+++ b/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java
@@ -1182,4 +1182,33 @@ public abstract class MediaAwareCallPeer
* <tt>mediaType</tt> that we have with this <tt>CallPeer</tt>.
*/
public abstract MediaDirection getDirection(MediaType mediaType);
+
+ /**
+ * {@inheritDoc}
+ *
+ * When a <tt>ConferenceMember</tt> is removed from a conference with a
+ * Jitsi-videobridge, an RTCP BYE packet is not always sent. Therefore,
+ * if the <tt>ConferenceMember</tt> had an associated video SSRC, the stream
+ * isn't be removed until it times out, leaving a blank video container in
+ * the interface for a few seconds.
+ * TODO: This works around the problem by removing the
+ * <tt>ConferenceMember</tt>'s <tt>ReceiveStream</tt> when the
+ * <tt>ConferenceMember</tt> is removed. The proper solution is to ensure
+ * that RTCP BYEs are sent whenever necessary, and when it is deployed this
+ * code should be removed.
+ *
+ * @param conferenceMember a <tt>ConferenceMember</tt> to be removed from
+ * the list of <tt>ConferenceMember</tt> reported by this peer. If the
+ * specified <tt>ConferenceMember</tt> is no contained in the list, no event
+ */
+ @Override
+ public void removeConferenceMember(ConferenceMember conferenceMember)
+ {
+ MediaStream videoStream = getMediaHandler().getStream(MediaType.VIDEO);
+ if (videoStream != null)
+ videoStream.removeReceiveStreamForSsrc(
+ conferenceMember.getVideoSsrc());
+
+ super.removeConferenceMember(conferenceMember);
+ }
}