Skip to content
Snippets Groups Projects
StreamRTPManager.java 5.77 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
     *
     * Distributable under LGPL license.
     * See terms of license at gnu.org.
     */
    package org.jitsi.impl.neomedia;
    
    import java.io.*;
    import java.util.*;
    
    import javax.media.*;
    import javax.media.format.*;
    import javax.media.protocol.*;
    import javax.media.rtp.*;
    
    import org.jitsi.service.neomedia.*;
    
    
    import com.sun.media.rtp.*;
    
    
    /**
     * Implements the <tt>RTPManager</tt> interface as used by a
     * <tt>MediaStream</tt>.
     *
     * @author Lyubomir Marinov
     */
    public class StreamRTPManager
    {
        /**
         * The <tt>RTPManager</tt> this instance is to delegate to when it is not
         * attached to an <tt>RTPTranslator</tt>.
         */
        private final RTPManager manager;
    
        /**
         * The <tt>RTPTranslator</tt> which this instance is attached to and which
         * forwards the RTP and RTCP flows of the <tt>MediaStream</tt> associated
         * with this instance to other <tt>MediaStream</tt>s.
         */
        private final RTPTranslatorImpl translator;
    
        /**
         * Initializes a new <tt>StreamRTPManager</tt> instance which is,
         * optionally, attached to a specific <tt>RTPTranslator</tt> which is to
         * forward the RTP and RTCP flows of the associated <tt>MediaStream</tt> to
         * other <tt>MediaStream</tt>s.
         *
         * @param translator the <tt>RTPTranslator</tt> to attach the new instance
         * to or <tt>null</tt> if the new instance is to not be attached to any
         * <tt>RTPTranslator</tt>
         */
        public StreamRTPManager(RTPTranslator translator)
        {
            this.translator = (RTPTranslatorImpl) translator;
    
            manager = (this.translator == null) ? RTPManager.newInstance() : null;
        }
    
        public void addFormat(Format format, int payloadType)
        {
            if (translator == null)
                manager.addFormat(format, payloadType);
            else
                translator.addFormat(this, format, payloadType);
        }
    
        public void addReceiveStreamListener(ReceiveStreamListener listener)
        {
            if (translator == null)
                manager.addReceiveStreamListener(listener);
            else
                translator.addReceiveStreamListener(this, listener);
        }
    
        public void addRemoteListener(RemoteListener listener)
        {
            if (translator == null)
                manager.addRemoteListener(listener);
            else
                translator.addRemoteListener(this, listener);
        }
    
        public void addSendStreamListener(SendStreamListener listener)
        {
            if (translator == null)
                manager.addSendStreamListener(listener);
            else
                translator.addSendStreamListener(this, listener);
        }
    
        public void addSessionListener(SessionListener listener)
        {
            if (translator == null)
                manager.addSessionListener(listener);
            else
                translator.addSessionListener(this, listener);
        }
    
        public SendStream createSendStream(DataSource dataSource, int streamIndex)
            throws IOException,
                   UnsupportedFormatException
        {
            if (translator == null)
                return manager.createSendStream(dataSource, streamIndex);
            else
                return translator.createSendStream(this, dataSource, streamIndex);
        }
    
        public void dispose()
        {
            if (translator == null)
                manager.dispose();
            else
                translator.dispose(this);
        }
    
        public Object getControl(String controlType)
        {
            if (translator == null)
                return manager.getControl(controlType);
            else
                return translator.getControl(this, controlType);
        }
    
        public GlobalReceptionStats getGlobalReceptionStats()
        {
            if (translator == null)
                return manager.getGlobalReceptionStats();
            else
                return translator.getGlobalReceptionStats(this);
        }
    
        public GlobalTransmissionStats getGlobalTransmissionStats()
        {
            if (translator == null)
                return manager.getGlobalTransmissionStats();
            else
                return translator.getGlobalTransmissionStats(this);
        }
    
        public long getLocalSSRC()
        {
            if (translator == null)
                return ((RTPSessionMgr) manager).getLocalSSRC();
            else
                return translator.getLocalSSRC(this);
        }
    
        @SuppressWarnings("rawtypes")
        public Vector getReceiveStreams()
        {
            if (translator == null)
                return manager.getReceiveStreams();
            else
                return translator.getReceiveStreams(this);
        }
    
        @SuppressWarnings("rawtypes")
        public Vector getSendStreams()
        {
            if (translator == null)
                return manager.getSendStreams();
            else
                return translator.getSendStreams(this);
        }
    
        public void initialize(RTPConnector connector)
        {
            if (translator == null)
                manager.initialize(connector);
            else
                translator.initialize(this, connector);
        }
    
        public void removeReceiveStreamListener(ReceiveStreamListener listener)
        {
            if (translator == null)
                manager.removeReceiveStreamListener(listener);
            else
                translator.removeReceiveStreamListener(this, listener);
        }
    
        public void removeRemoteListener(RemoteListener listener)
        {
            if (translator == null)
                manager.removeRemoteListener(listener);
            else
                translator.removeRemoteListener(this, listener);
        }
    
        public void removeSendStreamListener(SendStreamListener listener)
        {
            if (translator == null)
                manager.removeSendStreamListener(listener);
            else
                translator.removeSendStreamListener(this, listener);
        }
    
        public void removeSessionListener(SessionListener listener)
        {
            if (translator == null)
                manager.removeSessionListener(listener);
            else
                translator.removeSessionListener(this, listener);
        }
    }