From ce9ca06ac2fdb3724aa2466499acd58893708b71 Mon Sep 17 00:00:00 2001 From: Emil Ivov Date: Mon, 5 Jul 2010 13:23:55 +0000 Subject: [PATCH] Removes references to our legacy jingle implementation with the old smackx-jingle implementation --- .../jabber/mediamgr/AudioMediaSession.java | 232 ------------------ .../jabber/mediamgr/JingleScMediaManager.java | 130 ---------- .../protocol/jabber/mediamgr/MediaUtils.java | 218 ---------------- 3 files changed, 580 deletions(-) delete mode 100644 src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/AudioMediaSession.java delete mode 100644 src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/JingleScMediaManager.java delete mode 100644 src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/MediaUtils.java diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/AudioMediaSession.java b/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/AudioMediaSession.java deleted file mode 100644 index d7eb3edf9..000000000 --- a/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/AudioMediaSession.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. - * - * Distributable under LGPL license. - * See terms of license at gnu.org. - */ -package net.java.sip.communicator.impl.protocol.jabber.mediamgr; - -import java.util.*; - -import net.java.sip.communicator.impl.protocol.jabber.*; -//import net.java.sip.communicator.service.media.*; -//import net.java.sip.communicator.service.media.event.*; -import net.java.sip.communicator.util.*; - -import org.jivesoftware.smackx.jingle.*; -import org.jivesoftware.smackx.jingle.media.*; -import org.jivesoftware.smackx.jingle.nat.*; - -/** - * This Class implements a JingleMediaSession. which serve as a wrapper - * for a RtpFlow, allowing us to receive and transmit audio. - * - * based on Thiago Camargo's media manager from jingle - * - * @author Symphorien Wanko - */ -public class AudioMediaSession - extends JingleMediaSession -// implements MediaListener -{ - /** - * the logger used by this class - */ - private static final Logger logger - = Logger.getLogger(AudioMediaSession.class); - - /** - * An audio media session encapsulate a RtpFlow which handle media transfer - */ -// private RtpFlow rtpFlow = null; - - /** - * Creates an AudioMediaSession with defined payload type, - * remote and local candidates - * - * @param payloadType Payload used by jmf - * @param remote the remote information. - * @param local the local information. - * @param jingleSession the session for which we create a media session - */ - public AudioMediaSession(PayloadType payloadType, TransportCandidate remote - , TransportCandidate local, JingleSession jingleSession) - { - this(payloadType, remote, local, null, null); - initialize(); - } - - /** - * This constructor is used only to match the one of our super class. - * In SC, An audioSession don't need the media locator asked by - * jingleMediaSession because the locator is handled - * by the media service. - * - * @param payloadType Payload used by jmf - * @param remote the remote information. - * @param local the local information. - * @param locator media locator - * @param jingleSession the session for which we create a media session - */ - private AudioMediaSession(PayloadType payloadType, TransportCandidate remote - , TransportCandidate local, String locator, JingleSession jingleSession) - { - //super(payloadType, remote, local, locator==null?"dsound://":locator, jingleSession); - super(payloadType, remote, local, locator, jingleSession); - } - - /** - * Initialize the RtpFlow to make us able to send and receive audio media - */ - public void initialize() - { - String remoteIp; - String localIp; - int localPort; - int remotePort; - -// if (getLocal().getSymmetric() != null) -// { -// remoteIp = getLocal().getIp(); -// localIp = getLocal().getLocalIp(); -// localPort = getFreePort(); -// remotePort = getLocal().getSymmetric().getPort(); -// } -// else -// { - if (getLocal().getSymmetric() != null) - { - logger.warn("oops : unexpected situation ... "); - // TODO : if this situation happens only one - // un comment the above code wich is meant to handle this - } - - remoteIp = getRemote().getIp(); - localIp = getLocal().getLocalIp(); - localPort = getLocal().getPort(); - remotePort = getRemote().getPort(); - if (logger.isInfoEnabled()) - logger.info("AudioMediaSession : " + localIp + ":" + localPort + - " <-> " + remoteIp + ":" + remotePort); -// } - - Map> mediaEncoding - = MediaUtils.getAudioEncoding(getPayloadType().getId()); -// try -// { -// rtpFlow = JabberActivator.getMediaService(). -// createRtpFlow( -// localIp, localPort, -// remoteIp, remotePort, -// mediaEncoding); -// } -// catch (MediaException ex) -// { -// logger.error("failed to create a RtpFlow between " + -// localIp + ":" + localPort + " and " + -// remoteIp + ":" + remotePort, ex); -// rtpFlow = null; -// throw new RuntimeException("failed to create a RtpFlow between " -// + localIp + ":" + localPort + " and " -// + remoteIp + ":" + remotePort, -// ex); -// } - } - - /** - * Implements startTransmit from JingleMediaSession. - */ - public void startTrasmit() - { -// rtpFlow.start(); - } - - /** - * Implements startReceive from JingleMediaSession. - */ - public void startReceive() - {} - - /** - * Implements setTrasmit from JingleMediaSession. - * - * @param active pause the transmission if false, resume otherwise - */ - public void setTrasmit(boolean active) - { -// if (active) -// rtpFlow.resume(); -// else -// rtpFlow.pause(); - } - - /** - * Implements stopTrasmit from JingleMediaSession. - */ - public void stopTrasmit() - { - //if (rtpFlow != null) -// rtpFlow.stop(); - } - - /** - * Implements stopReceive from JingleMediaSession. - */ - public void stopReceive() - {} - -// /** -// * Obtain a free port we can use. -// * -// * @return A free port number. -// */ -// protected int getFreePort() -// { -// //perhaps this method will be better in an utily class -// -// ServerSocket ss; -// int freePort = 0; -// -// for (int i = 0; i < 10; i++) -// { -// freePort = (int) (10000 + Math.round(Math.random() * 10000)); -// freePort = freePort % 2 == 0 ? freePort : freePort + 1; -// try -// { -// ss = new ServerSocket(freePort); -// freePort = ss.getLocalPort(); -// ss.close(); -// return freePort; -// } -// catch (IOException e) -// { -// e.printStackTrace(); -// } -// } -// try -// { -// ss = new ServerSocket(0); -// freePort = ss.getLocalPort(); -// ss.close(); -// } -// catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// return freePort; -// } - - /** - * Implementation of receivedMediaStream from - * RtpFlow. - */ -// public void receivedMediaStream(MediaEvent evt) -// { -// mediaReceived(evt.getFrom()); -// } -// -// public void mediaServiceStatusChanged() -// { -// } -} diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/JingleScMediaManager.java b/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/JingleScMediaManager.java deleted file mode 100644 index 08793f889..000000000 --- a/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/JingleScMediaManager.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. - * - * Distributable under LGPL license. - * See terms of license at gnu.org. - */ -package net.java.sip.communicator.impl.protocol.jabber.mediamgr; - -import java.util.*; - -import net.java.sip.communicator.impl.protocol.jabber.*; -import net.java.sip.communicator.util.*; - -import org.jivesoftware.smackx.jingle.*; -import org.jivesoftware.smackx.jingle.media.*; -import org.jivesoftware.smackx.jingle.nat.*; - -/** - * Implements a JingleMediaManager backed by JMF. - * based on Thiago Camargo's media manager from jingle - * - * @author Symphorien Wanko - */ -public class JingleScMediaManager extends JingleMediaManager -{ - /** - * Logger for this class - */ - private final Logger logger = Logger.getLogger(JingleScMediaManager.class); - - /** - * List of payload that this media manager supports. This list is based on - * the one reported by the media service. - */ - private final List payloads = new ArrayList(); - - /** - * Creates a new instance of JingleScMediaManager - */ - public JingleScMediaManager() - { - setupPayloads(); - } - - /** - * Returns a new jingleMediaSession - * - * @param payloadType payloadType - * @param remote remote Candidate - * @param local local Candidate - * @param jingleSession the session for which we create a media session - * - * @return JingleMediaSession - */ - public JingleMediaSession createMediaSession( - PayloadType payloadType, - TransportCandidate remote, - TransportCandidate local, JingleSession jingleSession) - { - return new AudioMediaSession(payloadType, remote, local, jingleSession); - } - - /** - * Setup API supported Payloads - * - * http://tools.ietf.org/html/rfc3551#page-32 to view the correspondence - * between PayloadType and codec - */ - private void setupPayloads() - { - - /* - * Initializing audioEnc to new String[0] isn't better than setting it - * to null upon an exception because the former causes an allocation. - * Besides, the exception is supposes to happen in rare/exceptional - * situations i.e. in most of the cases the allocation will immediately - * be thrown away as garbage. Checking for null is faster. - */ - String[] audioEnc = null; - - try - { - audioEnc = null;// JabberActivator.getMediaService(). - //getSupportedAudioEncodings(); - } - catch (Exception e) - { - audioEnc = null; - - logger.warn("Cannot get Audio encodings!", e); - } - - if (audioEnc != null) - { - for (String audioEncI : audioEnc) - { - int payloadType = - MediaUtils.getPayloadType(Integer.parseInt(audioEncI)); - String payloadName = MediaUtils.getPayloadName(payloadType); - - if (payloadName != null) - { - payloads - .add(new PayloadType.Audio(payloadType, payloadName)); - } - else if (payloadType >= 0) - { - payloads - .add(new PayloadType.Audio(payloadType, audioEncI)); - } - } - } - if (payloads.isEmpty()) - { - logger.warn("The list of payloads supported" + - " by JmfMediaManager is empty "); - } - } - - /** - * Return all supported Payloads for this Manager - * - * @return The Payload List - */ - - public List getPayloads() - { - return payloads; - } -} diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/MediaUtils.java b/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/MediaUtils.java deleted file mode 100644 index c1de4d9ac..000000000 --- a/src/net/java/sip/communicator/impl/protocol/jabber/mediamgr/MediaUtils.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. - * - * Distributable under LGPL license. - * See terms of license at gnu.org. - */ -package net.java.sip.communicator.impl.protocol.jabber.mediamgr; - -import java.util.*; -import javax.media.format.*; -import javax.sdp.*; -import net.java.sip.communicator.util.*; - -// -// TODO: merge this MediaUtils with the one in impl/media -// There is a MediaUtils class in package impl.media -// which isn't exposed by the media service. It will -// be a good idea to find a mean to merge this two -// class somewhere -// -/** - * Media utils - * A collection of static methods related to media. - * - * @author Symphorien Wanko - */ -public abstract class MediaUtils -{ - - /** - * logger of this class - */ - private static final Logger logger = - Logger.getLogger(MediaUtils.class); - - /** - * getAudioEncoding return an Hashtable - * with one entry in a format wich can be directly passed - * to the media service for creating a RtpFlow - * based on this encoding. - * - * @param payloadType the payload type - * @return an hashtable ready to be passed to media service - */ - public static Map> getAudioEncoding(int payloadType) - { - Map> ht = new Hashtable>(); - List list = new ArrayList(); - ht.put("audio", list); - // most of the format aren't handled by SC now - // but itsn't a problem. it will facilitates - // updates when more codecs will become available - // in SC. - switch (payloadType) - { - case SdpConstants.PCMU: - list.add(AudioFormat.ULAW_RTP); - return ht; - case SdpConstants.GSM: - list.add(AudioFormat.GSM_RTP); - return ht; - case SdpConstants.G723: - list.add(AudioFormat.G723_RTP); - return ht; - case SdpConstants.DVI4_8000: - list.add(AudioFormat.DVI_RTP); - return ht; - case SdpConstants.DVI4_16000: - list.add(AudioFormat.DVI_RTP); - return ht; - //case SdpConstants.LPC: - // list.add(AudioFormat...); - // return ht; - case SdpConstants.PCMA: - list.add(AudioFormat.ALAW); - return ht; - //case SdpConstants.G722: - // list.add(AudioFormat...); - // return ht; - //case SdpConstants.L16_1CH: - // list.add(AudioFormat...); - // return ht; - //case SdpConstants.L16_2CH: - // list.add(AudioFormat...); - // return ht; - //case SdpConstants.QCELP: - // list.add(AudioFormat...); - // return ht; - //case SdpConstants.CN: - // list.add(AudioFormat...); - // return ht; - //case SdpConstants.MPA: - // list.add(AudioFormat...); - // return ht; - case SdpConstants.G728: - list.add(AudioFormat.G728_RTP); - return ht; - case SdpConstants.DVI4_11025: - list.add(AudioFormat.DVI_RTP); - return ht; - case SdpConstants.DVI4_22050: - list.add(AudioFormat.DVI_RTP); - return ht; - case SdpConstants.G729: - list.add(AudioFormat.G729_RTP); - return ht; - default: - //throw new IllegalStateException("Unknown payload type"); - logger.warn("unknown payload type : " + payloadType); - return null; - } - } - - /** - * This method gives the name wich correspond to a payload type - * - * @param payloadType the type of the payload - * @return the string corresponding to the payload - */ - public static String getPayloadName(int payloadType) - { - // for update, seee http://tools.ietf.org/html/rfc3551#page-32 - switch (payloadType) - { - case SdpConstants.PCMU: - return "PCMU"; - case SdpConstants.GSM: - return "GSM"; - case SdpConstants.G723: - return "G723"; - case SdpConstants.DVI4_8000: - return "DVI4_8000"; - case SdpConstants.DVI4_16000: - return "DVI4_16000"; - case SdpConstants.LPC: - return "LPC"; - case SdpConstants.PCMA: - return "PCMA"; - case SdpConstants.G722: - return "G722"; - case SdpConstants.L16_1CH: - return "L16_1CH"; - case SdpConstants.L16_2CH: - return "L16_2CH"; - case SdpConstants.QCELP: - return "QCELP"; - case SdpConstants.CN: - return "CN"; - case SdpConstants.MPA: - return "MPA"; - case SdpConstants.G728: - return "G728"; - case SdpConstants.DVI4_11025: - return "DVI4_11025"; - case SdpConstants.DVI4_22050: - return "DVI4_22050"; - case SdpConstants.G729: - return "G729"; - default: - //throw new IllegalStateException("Unknown payload type"); - if (logger.isDebugEnabled()) - logger.debug("unknown payload type : " + payloadType); - return null; - } - } - - /** - * Convert a SdpConstant to the corresponding payload type. - * - * @param sdpConstant the sdp constant to convert. - * @return the payload type which match the provided sdp constant. - */ - public static int getPayloadType(int sdpConstant) - { - switch (sdpConstant) - { - case SdpConstants.PCMU: - return 0; - case SdpConstants.GSM: - return 3; - case SdpConstants.G723: - return 4; - case SdpConstants.DVI4_8000: - return 5; - case SdpConstants.DVI4_16000: - return 6; - case SdpConstants.LPC: - return 7; - case SdpConstants.PCMA: - return 8; - case SdpConstants.G722: - return 9; - case SdpConstants.L16_1CH: - return 10; - case SdpConstants.L16_2CH: - return 11; - case SdpConstants.QCELP: - return 12; - case SdpConstants.CN: - return 13; - case SdpConstants.MPA: - return 14; - case SdpConstants.G728: - return 15; - case SdpConstants.DVI4_11025: - return 16; - case SdpConstants.DVI4_22050: - return 17; - case SdpConstants.G729: - return 18; - default: - //throw new IllegalStateException("Unknown sdp constant"); - if (logger.isDebugEnabled()) - logger.debug("unknown sdp constant : " + sdpConstant); - return -1; - } - } -}