Jitsi: the OpenSource Java VoIP and Instant Messaging client.

net.java.sip.communicator.impl.neomedia.transform
Class RTPTransformUDPConnector

java.lang.Object
  extended by net.java.sip.communicator.impl.neomedia.AbstractRTPConnector
      extended by net.java.sip.communicator.impl.neomedia.RTPConnectorUDPImpl
          extended by net.java.sip.communicator.impl.neomedia.transform.RTPTransformUDPConnector
All Implemented Interfaces:
javax.media.rtp.RTPConnector

public class RTPTransformUDPConnector
extends RTPConnectorUDPImpl

TransformConnector implements the RTPConnector interface. RTPConnector is originally designed for programmers to abstract the underlying transport mechanism for RTP control and data from the RTPManager. However, it provides the possibility to modify / transform the RTP and RTCP packets before they are sent to network, or after the have been received from the network. The RTPConnector interface is very powerful. But just to perform packets transformation, we do not need all the flexibility. So, we designed this TransformConnector, which uses UDP to transfer RTP/RTCP packets just like normal RTP stack, and then provides the TransformInputStream interface for people to define their own transformation. With TransformConnector, people can implement RTP/RTCP packets transformation and/or manipulation by implementing the TransformEngine interface.

Author:
Bing SU (nova.su@gmail.com), Lubomir Marinov
See Also:
TransformEngine, RTPConnector, RTPManager

Field Summary
 
Fields inherited from class net.java.sip.communicator.impl.neomedia.AbstractRTPConnector
connector
 
Constructor Summary
RTPTransformUDPConnector(StreamConnector connector)
          Initializes a new TransformConnector which is to use a given pair of datagram sockets for RTP and RTCP traffic specified in the form of a StreamConnector.
 
Method Summary
protected  TransformUDPInputStream createControlInputStream()
          Overrides RTPConnectorImpl#createControlInputStream() to use TransformInputStream.
protected  TransformUDPOutputStream createControlOutputStream()
          Overrides RTPConnectorImpl#createControlOutputStream() to use TransformOutputStream.
protected  TransformUDPInputStream createDataInputStream()
          Overrides RTPConnectorImpl#createDataInputStream() to use TransformInputStream.
protected  TransformUDPOutputStream createDataOutputStream()
          Overrides RTPConnectorImpl#createDataOutputStream() to use TransformOutputStream.
 TransformEngine getEngine()
          Gets the customized TransformEngine which contains the concrete transform logic.
 void setEngine(TransformEngine engine)
          Sets the customized TransformEngine which contains the concrete transform logic.
 
Methods inherited from class net.java.sip.communicator.impl.neomedia.RTPConnectorUDPImpl
getControlSocket, getDataSocket
 
Methods inherited from class net.java.sip.communicator.impl.neomedia.AbstractRTPConnector
addTarget, close, getConnector, getControlInputStream, getControlInputStream, getControlOutputStream, getControlOutputStream, getDataInputStream, getDataInputStream, getDataOutputStream, getDataOutputStream, getReceiveBufferSize, getRTCPBandwidthFraction, getRTCPSenderBandwidthFraction, getSendBufferSize, removeTarget, removeTargets, setReceiveBufferSize, setSendBufferSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RTPTransformUDPConnector

public RTPTransformUDPConnector(StreamConnector connector)
Initializes a new TransformConnector which is to use a given pair of datagram sockets for RTP and RTCP traffic specified in the form of a StreamConnector.

Parameters:
connector - the pair of datagram sockets for RTP and RTCP traffic the new instance is to use
Method Detail

createControlInputStream

protected TransformUDPInputStream createControlInputStream()
                                                    throws IOException
Overrides RTPConnectorImpl#createControlInputStream() to use TransformInputStream.

Overrides:
createControlInputStream in class RTPConnectorUDPImpl
Returns:
a new RTCP packet input stream to be used by RTPManager
Throws:
IOException - if an error occurs during the creation of the RTCP packet input stream

createControlOutputStream

protected TransformUDPOutputStream createControlOutputStream()
                                                      throws IOException
Overrides RTPConnectorImpl#createControlOutputStream() to use TransformOutputStream.

Overrides:
createControlOutputStream in class RTPConnectorUDPImpl
Returns:
a new RTCP packet output stream to be used by RTPManager
Throws:
IOException - if an error occurs during the creation of the RTCP packet output stream

createDataInputStream

protected TransformUDPInputStream createDataInputStream()
                                                 throws IOException
Overrides RTPConnectorImpl#createDataInputStream() to use TransformInputStream.

Overrides:
createDataInputStream in class RTPConnectorUDPImpl
Returns:
a new RTP packet input stream to be used by RTPManager
Throws:
IOException - if an error occurs during the creation of the RTP packet input stream

createDataOutputStream

protected TransformUDPOutputStream createDataOutputStream()
                                                   throws IOException
Overrides RTPConnectorImpl#createDataOutputStream() to use TransformOutputStream.

Overrides:
createDataOutputStream in class RTPConnectorUDPImpl
Returns:
a new RTP packet output stream to be used by RTPManager
Throws:
IOException - if an error occurs during the creation of the RTP packet output stream

getEngine

public TransformEngine getEngine()
Gets the customized TransformEngine which contains the concrete transform logic.

Returns:
the TransformEngine which contains the concrete transform logic

setEngine

public void setEngine(TransformEngine engine)
Sets the customized TransformEngine which contains the concrete transform logic.

Parameters:
engine - the TransformEngine which contains the concrete transform logic

Jitsi: the OpenSource Java VoIP and Instant Messaging client.

Jitsi, the OpenSource Java VoIP and Instant Messaging client.
Distributable under LGPL license.