Supports the Jingle ICE-UDP transport in telephony conferences utilizing the Jitsi Videobridge server-side technology.

cusax-fix
Lyubomir Marinov 12 years ago
parent a5e14d97d9
commit d0ffd500fa

@ -1596,7 +1596,7 @@ else if (MediaType.VIDEO.equals(mediaType))
* <tt>MediaType</tt>
* @return the <tt>MediaType</tt> of <tt>content</tt>.
*/
public MediaType getMediaType (ContentPacketExtension content)
public MediaType getMediaType(ContentPacketExtension content)
{
String contentName = content.getName();
if (contentName == null)

@ -879,8 +879,6 @@ protected synchronized TransportManagerJabberImpl getTransportManager()
= protocolProvider.getDiscoveryManager();
DiscoverInfo peerDiscoverInfo = peer.getDiscoveryInfo();
boolean isJitsiVideobridge = peer.isJitsiVideobridge();
/*
* If this.supportedTransports has been explicitly set, we use
* it to select the transport manager -- we use the first
@ -938,13 +936,40 @@ else if (ProtocolProviderServiceJabberImpl.
};
/*
* If the local peer is a conference focus and there is a
* Jitsi Videobridge working on the server, prefer a
* transport which will route the conference through there.
* If Jitsi Videobridge is to be employed, pick up a Jingle
* transport supported by it.
*/
if (isJitsiVideobridge)
if (peer.isJitsiVideobridge())
{
// TODO Auto-generated method stub
CallJabberImpl call = peer.getCall();
if (call != null)
{
String jitsiVideobridge
= peer.getCall().getJitsiVideobridge();
/*
* Jitsi Videobridge supports the Jingle Raw UDP
* transport from its inception. But that is not the
* case with the Jingle ICE-UDP transport.
*/
if ((jitsiVideobridge != null)
&& !protocolProvider.isFeatureSupported(
jitsiVideobridge,
ProtocolProviderServiceJabberImpl
.URN_XMPP_JINGLE_ICE_UDP_1))
{
for (int i = transports.length - 1; i >= 0; i--)
{
if (ProtocolProviderServiceJabberImpl
.URN_XMPP_JINGLE_ICE_UDP_1
.equals(transports[i]))
{
transports[i] = null;
}
}
}
}
}
/*
@ -954,6 +979,8 @@ else if (ProtocolProviderServiceJabberImpl.
*/
for (String transport : transports)
{
if (transport == null)
continue;
if (isFeatureSupported(
discoveryManager,
peerDiscoverInfo,
@ -1961,8 +1988,8 @@ public void setRemotelyOnHold(boolean onHold)
if (getPeer().isJitsiVideobridge())
{
/*
* If we are the focus of a videobridge conference, we need to
* ask the videobridge to change the stream direction on our
* If we are the focus of a Videobridge conference, we need to
* ask the Videobridge to change the stream direction on our
* behalf.
*/
ColibriConferenceIQ.Channel channel
@ -1983,7 +2010,7 @@ public void setRemotelyOnHold(boolean onHold)
mediaType,
direction);
}
else //no videobridge
else //no Videobridge
{
if (remotelyOnHold)
{
@ -2192,7 +2219,7 @@ private ColibriConferenceIQ.Channel getColibriChannel(MediaType mediaType)
* {@inheritDoc}
*
* The super implementation relies on the direction of the streams and is
* therefore not accurate when we use a videobridge.
* therefore not accurate when we use a Videobridge.
*/
@Override
public boolean isRemotelyOnHold()
@ -2203,7 +2230,7 @@ public boolean isRemotelyOnHold()
/**
* {@inheritDoc}
*
* Handles the case when a videobridge is in use.
* Handles the case when a Videobridge is in use.
*
* @param locallyOnHold <tt>true</tt> if we are to make our streams
* stop transmitting and <tt>false</tt> if we are to start transmitting

Loading…
Cancel
Save