diff --git a/src/net/java/sip/communicator/impl/neomedia/MediaStreamImpl.java b/src/net/java/sip/communicator/impl/neomedia/MediaStreamImpl.java
index 2d02d5bed..0388febba 100644
--- a/src/net/java/sip/communicator/impl/neomedia/MediaStreamImpl.java
+++ b/src/net/java/sip/communicator/impl/neomedia/MediaStreamImpl.java
@@ -1360,30 +1360,29 @@ private void setRemoteSourceID(long ssrc)
* return an empty List in case this stream is not part of a mixed
* conference call.
*
- * @return a List of CSRC IDs for parties that are currently known
- * to contribute to the media that this stream is currently streaming or
- * an empty List in case this MediaStream is not part of
- * a conference call.
+ * @return a List array of CSRC IDs stored as Long
+ * instances and representing parties that are currently known to contribute
+ * to the media that this stream or an empty List in case this
+ * MediaStream is not part of a conference call.
*/
- public List getLocalContributingSourceIDs()
+ public List getLocalContributingSourceIDs()
{
- List csrcList = new ArrayList();
+ if( this.deviceSession == null)
+ return null;
MediaDeviceSession deviceSession = getDeviceSession();
- if( this.deviceSession != null)
- csrcList.addAll( deviceSession.getRemoteSSRCList() );
- Iterator csrcIter = csrcList.iterator();
+ long[] ssrcArray = deviceSession.getRemoteSSRCList();
+
+ List csrcList = new ArrayList(ssrcArray.length);
//in case of a conf call the mixer would return all SSRC IDs that are
//currently contributing including this stream's counterpart. This
//method is about
- while(csrcIter.hasNext())
+ for(long csrc : ssrcArray)
{
- String csrc = csrcIter.next();
-
- if (csrc.equals(getRemoteSourceID()))
- csrcIter.remove();
+ if (csrc != this.getRemoteSourceID())
+ csrcList.add(csrc);
}
return csrcList;
@@ -1398,10 +1397,12 @@ public List getLocalContributingSourceIDs()
* contributing to the stream that we are receiving from this
* MediaStream's remote party.
*/
- public List getRemoteContributingSourceIDs()
+ public long[] getRemoteContributingSourceIDs()
{
- List csrcList = new ArrayList();
+ long[] remoteSsrcList = getDeviceSession().getRemoteSSRCList();
- return csrcList;
+ //todo -implement
+
+ return remoteSsrcList;
}
}
diff --git a/src/net/java/sip/communicator/impl/neomedia/device/AudioMixerMediaDevice.java b/src/net/java/sip/communicator/impl/neomedia/device/AudioMixerMediaDevice.java
index e69787a30..041075987 100644
--- a/src/net/java/sip/communicator/impl/neomedia/device/AudioMixerMediaDevice.java
+++ b/src/net/java/sip/communicator/impl/neomedia/device/AudioMixerMediaDevice.java
@@ -449,12 +449,12 @@ public void removeReceiveStream(ReceiveStream receiveStream)
* a pseudo device we would simply be delegating the call to the
* corresponding method of the master mixer device session.
*
- * @return a List of SSRC identifiers (in a hexadecimal
- * String form) that are currently contributing to the mixer
- * encapsulated by this device session.
+ * @return a long[] array of SSRC identifiers that are
+ * currently contributing to the mixer encapsulated by this device
+ * session.
*/
@Override
- public List getRemoteSSRCList()
+ public long[] getRemoteSSRCList()
{
return audioMixerMediaDeviceSession.getRemoteSSRCList();
}
diff --git a/src/net/java/sip/communicator/impl/neomedia/device/MediaDeviceSession.java b/src/net/java/sip/communicator/impl/neomedia/device/MediaDeviceSession.java
index 53412dfb4..9d967cbef 100644
--- a/src/net/java/sip/communicator/impl/neomedia/device/MediaDeviceSession.java
+++ b/src/net/java/sip/communicator/impl/neomedia/device/MediaDeviceSession.java
@@ -224,8 +224,7 @@ protected void addReceiveStream(
receiveStreams.put(receiveStream, receiveStreamDataSource);
if (logger.isTraceEnabled())
- logger
- .trace(
+ logger.trace(
"Added ReceiveStream with ssrc " + receiveStream.getSSRC());
synchronized (players)
@@ -250,15 +249,13 @@ protected void addReceiveStream(
}
if (exception != null)
- logger
- .error(
+ logger.error(
"Failed to create player"
+ " for ReceiveStream with ssrc "
+ receiveStream.getSSRC(),
exception);
else if (!waitForState(player, Processor.Configured))
- logger
- .error(
+ logger.error(
"Failed to configure player"
+ " for ReceiveStream with ssrc "
+ receiveStream.getSSRC());
@@ -1373,18 +1370,19 @@ private static boolean waitForState(Processor processor, int state)
* to query a device session operating over a mixer in which case we would
* have the SSRC IDs of all parties currently contributing to the mixing.
*
- * @return a List of SSRC identifiers (in a hexadecimal
- * String form) that this device session is.
- * handling streams from.
+ * @return a long[] array of SSRC identifiers that this device
+ * session is handling streams from.
*/
- public List getRemoteSSRCList()
+ public long[] getRemoteSSRCList()
{
- Set streams = this.receiveStreams.keySet();
- List ssrcIDList = new ArrayList();
+ List streams
+ = new LinkedList(this.receiveStreams.keySet());
+ long[] ssrcIDList = new long[streams.size()];
- for ( ReceiveStream stream : streams)
+ for ( int i = 0; i < ssrcIDList.length; i++)
{
- ssrcIDList.add(Long.toHexString(stream.getSSRC()));
+ ReceiveStream stream = streams.get(i);
+ ssrcIDList[i] = stream.getSSRC();
}
return ssrcIDList;
diff --git a/src/net/java/sip/communicator/impl/neomedia/transform/csrc/CsrcTransformEngine.java b/src/net/java/sip/communicator/impl/neomedia/transform/csrc/CsrcTransformEngine.java
index d478c78b1..518de2b63 100644
--- a/src/net/java/sip/communicator/impl/neomedia/transform/csrc/CsrcTransformEngine.java
+++ b/src/net/java/sip/communicator/impl/neomedia/transform/csrc/CsrcTransformEngine.java
@@ -10,24 +10,35 @@
import net.java.sip.communicator.impl.neomedia.transform.*;
/**
+ * We use this engine to add the list of CSRC identifiers in RTP packets that
+ * we send to conference participants during calls where we are the mixer.
+ *
* @author Emil Ivov
*/
public class CsrcTransformEngine
implements TransformEngine,
PacketTransformer
{
+ /**
+ * The MediaStreamImpl that this transform engine was created to
+ * transform packets fro.
+ */
+ private final MediaStreamImpl mediaStream;
- /* (non-Javadoc)
- * @see net.java.sip.communicator.impl.neomedia.transform.TransformEngine#getRTCPTransformer()
+ /**
+ * Creates
+ * @param stream
*/
+ public CsrcTransformEngine(MediaStreamImpl stream)
+ {
+ this.mediaStream = stream;
+ }
+
public PacketTransformer getRTCPTransformer()
{
return null;
}
- /* (non-Javadoc)
- * @see net.java.sip.communicator.impl.neomedia.transform.TransformEngine#getRTPTransformer()
- */
public PacketTransformer getRTPTransformer()
{
return this;