Change protocol sound level listeners name.

cusax-fix
Damian Minkov 17 years ago
parent 6818c8c1c6
commit b4adbcfb54

@ -336,28 +336,20 @@ private void createSoundLevelIndicators()
add(remoteLevelPanel, constraints);
this.callPeer.addStreamSoundLevelListener(new SoundLevelListener<Long>()
this.callPeer.addStreamSoundLevelListener(new SoundLevelListener()
{
public void soundLevelChanged(SoundLevelChangeEvent<Long> event)
public void soundLevelChanged(SoundLevelChangeEvent event)
{
Collection<Integer> levels = event.getLevels().values();
if(!levels.isEmpty())
remoteLevelIndicator.updateSoundLevel(
levels.iterator().next());
remoteLevelIndicator.updateSoundLevel(event.getLevel());
}
});
this.callPeer.getCall().addLocalUserSoundLevelListener(
new SoundLevelListener<Long>()
new SoundLevelListener()
{
public void soundLevelChanged(SoundLevelChangeEvent<Long> event)
public void soundLevelChanged(SoundLevelChangeEvent event)
{
Collection<Integer> levels = event.getLevels().values();
if(!levels.isEmpty())
localLevelIndicator.updateSoundLevel(
levels.iterator().next());
localLevelIndicator.updateSoundLevel(event.getLevel());
}
});
}

@ -126,15 +126,11 @@ private void addLocalCallPeer()
mainPanel.add(localPeerPanel, constraints);
call.addLocalUserSoundLevelListener(new SoundLevelListener<Long>()
call.addLocalUserSoundLevelListener(new SoundLevelListener()
{
public void soundLevelChanged(SoundLevelChangeEvent<Long> evt)
public void soundLevelChanged(SoundLevelChangeEvent evt)
{
if(evt.getLevels().size() > 0)
{
localPeerPanel.fireLocalUserSoundLevelChanged(
evt.getLevels().values().iterator().next());
}
localPeerPanel.fireLocalUserSoundLevelChanged(evt.getLevel());
}
});
}

@ -500,7 +500,7 @@ ConferenceMembersSoundLevelListener getConferenceMembersSoundLevelListener()
{
if(conferenceMembersSoundLevelListener == null)
conferenceMembersSoundLevelListener =
new ConferenceMembersSoundLevelListener();
new ConfMembersSoundLevelListener();
return conferenceMembersSoundLevelListener;
}
@ -521,19 +521,19 @@ StreamSoundLevelListener getStreamSoundLevelListener()
* Updates according sound level indicators to reflect the new member sound
* level.
*/
private class ConferenceMembersSoundLevelListener
implements SoundLevelListener<ConferenceMember>
private class ConfMembersSoundLevelListener
implements ConferenceMembersSoundLevelListener
{
/**
* Delivers <tt>SoundLevelChangeEvent</tt>s on conference member
* sound level change.
*
* @param e the notification event containing the list of changes.
*/
public void soundLevelChanged(SoundLevelChangeEvent<ConferenceMember> e)
public void soundLevelChanged(
ConferenceMembersSoundLevelEvent event)
{
Map<ConferenceMember, Integer> levels = e.getLevels();
Map<ConferenceMember, Integer> levels = event.getLevels();
Iterator<Entry<ConferenceMember, ConferenceMemberPanel>>
memberPanelsIter = conferenceMembersPanels.entrySet().iterator();
@ -551,14 +551,14 @@ public void soundLevelChanged(SoundLevelChangeEvent<ConferenceMember> e)
else
memberPanel.updateSoundBar(0);
}
}
}
}
/**
* Updates the sound bar level to fit the new stream sound level.
*/
private class StreamSoundLevelListener
implements SoundLevelListener<Long>
implements SoundLevelListener
{
/**
@ -566,14 +566,13 @@ private class StreamSoundLevelListener
*
* @param evt the notification event containing the list of changes.
*/
public void soundLevelChanged(SoundLevelChangeEvent<Long> evt)
public void soundLevelChanged(SoundLevelChangeEvent evt)
{
if (evt.getSource() instanceof CallPeer &&
((CallPeer)evt.getSource()).isConferenceFocus())
return;
if(evt.getLevels().size() > 0)
updateSoundBar(evt.getLevels().values().iterator().next());
updateSoundBar(evt.getLevel());
}
}
}

@ -181,7 +181,7 @@ public boolean isConferenceFocus()
* @param l the <tt>SoundLevelListener</tt> to add
*/
public void addLocalUserSoundLevelListener(
SoundLevelListener<Long> l)
SoundLevelListener l)
{
}
@ -193,7 +193,7 @@ public void addLocalUserSoundLevelListener(
* @param l the <tt>SoundLevelListener</tt> to remove
*/
public void removeLocalUserSoundLevelListener(
SoundLevelListener<Long> l)
SoundLevelListener l)
{
}

@ -42,8 +42,9 @@ public class CallPeerGibberishImpl
/**
* A list of listeners registered for stream user sound level events.
*/
private final List<SoundLevelListener> confMemebrSoundLevelListeners
= new Vector<SoundLevelListener>();
private final List<ConferenceMembersSoundLevelListener>
confMemebrSoundLevelListeners
= new Vector<ConferenceMembersSoundLevelListener>();
/**
* Creates an instance of <tt>CallPeerGibberishImpl</tt> by specifying the
@ -180,7 +181,7 @@ public ProtocolProviderService getProtocolProvider()
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addStreamSoundLevelListener(
SoundLevelListener<Long> listener)
SoundLevelListener listener)
{
synchronized(soundLevelListeners)
{
@ -197,7 +198,7 @@ public void addStreamSoundLevelListener(
* @param listener the <tt>SoundLevelListener</tt> to remove
*/
public void removeStreamSoundLevelListener(
SoundLevelListener<Long> listener)
SoundLevelListener listener)
{
synchronized(soundLevelListeners)
{
@ -213,7 +214,7 @@ public void removeStreamSoundLevelListener(
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
synchronized(confMemebrSoundLevelListeners)
{
@ -231,7 +232,7 @@ public void addConferenceMembersSoundLevelListener(
* remove
*/
public void removeConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
synchronized(confMemebrSoundLevelListeners)
{
@ -247,12 +248,10 @@ public void removeConferenceMembersSoundLevelListener(
*/
void fireStreamSoundLevelEvent(int level)
{
Map<Long,Integer> lev = new HashMap<Long, Integer>();
lev.put(0l, level);
SoundLevelChangeEvent<Long> event
= new SoundLevelChangeEvent<Long>(this, lev);
SoundLevelChangeEvent event
= new SoundLevelChangeEvent(this, level);
SoundLevelListener<Long>[] ls;
SoundLevelListener[] ls;
synchronized(soundLevelListeners)
{
@ -260,7 +259,7 @@ void fireStreamSoundLevelEvent(int level)
new SoundLevelListener[soundLevelListeners.size()]);
}
for (SoundLevelListener<Long> listener : ls)
for (SoundLevelListener listener : ls)
{
listener.soundLevelChanged(event);
}
@ -275,18 +274,19 @@ void fireStreamSoundLevelEvent(int level)
void fireConferenceMembersSoundLevelEvent(
Map<ConferenceMember,Integer> levels)
{
SoundLevelChangeEvent<ConferenceMember> event
= new SoundLevelChangeEvent<ConferenceMember>(this, levels);
ConferenceMembersSoundLevelEvent event
= new ConferenceMembersSoundLevelEvent(this, levels);
SoundLevelListener<ConferenceMember>[] ls;
ConferenceMembersSoundLevelListener[] ls;
synchronized(confMemebrSoundLevelListeners)
{
ls = confMemebrSoundLevelListeners.toArray(
new SoundLevelListener[confMemebrSoundLevelListeners.size()]);
new ConferenceMembersSoundLevelListener[
confMemebrSoundLevelListeners.size()]);
}
for (SoundLevelListener<ConferenceMember> listener : ls)
for (ConferenceMembersSoundLevelListener listener : ls)
{
listener.soundLevelChanged(event);
}

@ -277,7 +277,7 @@ public boolean isConferenceFocus()
* @param l the <tt>SoundLevelListener</tt> to add
*/
public void addLocalUserSoundLevelListener(
SoundLevelListener<Long> l)
SoundLevelListener l)
{
}
@ -289,7 +289,7 @@ public void addLocalUserSoundLevelListener(
* @param l the <tt>SoundLevelListener</tt> to remove
*/
public void removeLocalUserSoundLevelListener(
SoundLevelListener<Long> l)
SoundLevelListener l)
{
}

@ -257,7 +257,7 @@ public Contact getContact()
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addStreamSoundLevelListener(
SoundLevelListener<Long> listener)
SoundLevelListener listener)
{
}
@ -270,7 +270,7 @@ public void addStreamSoundLevelListener(
* @param listener the <tt>SoundLevelListener</tt> to remove
*/
public void removeStreamSoundLevelListener(
SoundLevelListener<Long> listener)
SoundLevelListener listener)
{
}
@ -283,7 +283,7 @@ public void removeStreamSoundLevelListener(
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
}
@ -297,7 +297,7 @@ public void addConferenceMembersSoundLevelListener(
* remove
*/
public void removeConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
}

@ -154,7 +154,7 @@ public boolean isConferenceFocus()
* @param l the <tt>SoundLevelListener</tt> to add
*/
public void addLocalUserSoundLevelListener(
SoundLevelListener<Long> l)
SoundLevelListener l)
{
}
@ -166,7 +166,7 @@ public void addLocalUserSoundLevelListener(
* @param l the <tt>SoundLevelListener</tt> to remove
*/
public void removeLocalUserSoundLevelListener(
SoundLevelListener<Long> l)
SoundLevelListener l)
{
}

@ -125,7 +125,7 @@ public ProtocolProviderService getProtocolProvider()
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addStreamSoundLevelListener(
SoundLevelListener<Long> listener)
SoundLevelListener listener)
{
}
@ -138,7 +138,7 @@ public void addStreamSoundLevelListener(
* @param listener the <tt>SoundLevelListener</tt> to remove
*/
public void removeStreamSoundLevelListener(
SoundLevelListener<Long> listener)
SoundLevelListener listener)
{
}
@ -151,7 +151,7 @@ public void removeStreamSoundLevelListener(
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
}
@ -165,7 +165,7 @@ public void addConferenceMembersSoundLevelListener(
* remove
*/
public void removeConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
}

@ -1688,7 +1688,7 @@ public void setState(CallPeerState newState, String reason)
*
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addStreamSoundLevelListener(SoundLevelListener<Long> listener)
public void addStreamSoundLevelListener(SoundLevelListener listener)
{
// if we are not conference focus we just save the listeners
// if we become focus we must add them.
@ -1716,7 +1716,7 @@ public void addStreamSoundLevelListener(SoundLevelListener<Long> listener)
*
* @param listener the <tt>SoundLevelListener</tt> to remove
*/
public void removeStreamSoundLevelListener(SoundLevelListener<Long> listener)
public void removeStreamSoundLevelListener(SoundLevelListener listener)
{
SoundLevelListenerWrapperForStream sli = null;
@ -1731,14 +1731,14 @@ public void removeStreamSoundLevelListener(SoundLevelListener<Long> listener)
}
/**
* Adds a specific <tt>SoundLevelListener</tt> to the list
* Adds a specific <tt>ConferenceMembersSoundLevelListener</tt> to the list
* of listeners interested in and notified about changes in conference
* members sound level.
*
* @param listener the <tt>SoundLevelListener</tt> to add
* @param listener the <tt>ConferenceMembersSoundLevelListener</tt> to add
*/
public void addConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
}
@ -1747,11 +1747,11 @@ public void addConferenceMembersSoundLevelListener(
* list of listeners interested in and notified about changes in conference
* members sound level.
*
* @param listener the <tt>SoundLevelListener</tt> to
* @param listener the <tt>ConferenceMembersSoundLevelListener</tt> to
* remove
*/
public void removeConferenceMembersSoundLevelListener(
SoundLevelListener listener)
ConferenceMembersSoundLevelListener listener)
{
}
@ -1822,14 +1822,14 @@ private class SoundLevelListenerWrapperForStream
/**
* The wrapped listener.
*/
private SoundLevelListener<Long> listener;
private SoundLevelListener listener;
/**
* Create the wrapper.
* @param listener
*/
public SoundLevelListenerWrapperForStream(
SoundLevelListener<Long> listener)
SoundLevelListener listener)
{
this.listener = listener;
}
@ -1845,9 +1845,11 @@ public void soundLevelChanged(
{
Map<Long,Integer> levels = evt.getLevels();
listener.soundLevelChanged(
new SoundLevelChangeEvent<Long>(
CallPeerSipImpl.this, levels));
if(!levels.isEmpty())
listener.soundLevelChanged(
new SoundLevelChangeEvent(
CallPeerSipImpl.this,
levels.values().iterator().next()));
}
}
}

@ -699,7 +699,7 @@ MediaDevice getDefaultDevice(MediaType mediaType)
* related information.
* @param l the <tt>SoundLevelListener</tt> to add
*/
public void addLocalUserSoundLevelListener(SoundLevelListener<Long> l)
public void addLocalUserSoundLevelListener(SoundLevelListener l)
{
LocalSoundLevelListener sli = new LocalSoundLevelListener(l);
synchronized(localSoundLevelListeners)
@ -752,12 +752,12 @@ private class LocalSoundLevelListener
/**
* Holds the listener we wrap.
*/
private SoundLevelListener<Long> soundLevelListener;
private SoundLevelListener soundLevelListener;
/**
* @param soundLevelListener the listener we wrap.
*/
public LocalSoundLevelListener(SoundLevelListener<Long> soundLevelListener)
public LocalSoundLevelListener(SoundLevelListener soundLevelListener)
{
this.soundLevelListener = soundLevelListener;
}
@ -772,9 +772,12 @@ public LocalSoundLevelListener(SoundLevelListener<Long> soundLevelListener)
public void soundLevelChanged(
net.java.sip.communicator.service.neomedia.event.SoundLevelChangeEvent evt)
{
soundLevelListener.soundLevelChanged(
new SoundLevelChangeEvent<Long>(
CallSipImpl.this, evt.getLevels()));
// there must be one level in the result
if(!evt.getLevels().isEmpty())
soundLevelListener.soundLevelChanged(
new SoundLevelChangeEvent(
CallSipImpl.this,
evt.getLevels().values().iterator().next()));
}
}
}

@ -330,8 +330,7 @@ public boolean isSipZrtpAttribute()
* related information.
* @param l the <tt>SoundLevelListener</tt> to add
*/
public abstract void addLocalUserSoundLevelListener(
SoundLevelListener<Long> l);
public abstract void addLocalUserSoundLevelListener(SoundLevelListener l);
/**
* Removes a specific <tt>SoundLevelListener</tt> of the list of
@ -339,6 +338,5 @@ public abstract void addLocalUserSoundLevelListener(
* related information.
* @param l the <tt>SoundLevelListener</tt> to remove
*/
public abstract void removeLocalUserSoundLevelListener(
SoundLevelListener<Long> l);
public abstract void removeLocalUserSoundLevelListener(SoundLevelListener l);
}

@ -263,8 +263,7 @@ public void removeCallPeerConferenceListener(
*
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addStreamSoundLevelListener(
SoundLevelListener<Long> listener);
public void addStreamSoundLevelListener(SoundLevelListener listener);
/**
* Removes a specific <tt>SoundLevelListener</tt> of the list of
@ -273,8 +272,7 @@ public void addStreamSoundLevelListener(
*
* @param listener the <tt>SoundLevelListener</tt> to remove
*/
public void removeStreamSoundLevelListener(
SoundLevelListener<Long> listener);
public void removeStreamSoundLevelListener(SoundLevelListener listener);
/**
* Adds a specific <tt>SoundLevelListener</tt> to the list
@ -284,7 +282,7 @@ public void removeStreamSoundLevelListener(
* @param listener the <tt>SoundLevelListener</tt> to add
*/
public void addConferenceMembersSoundLevelListener(
SoundLevelListener<ConferenceMember> listener);
ConferenceMembersSoundLevelListener listener);
/**
* Removes a specific <tt>SoundLevelListener</tt> of the
@ -295,5 +293,5 @@ public void addConferenceMembersSoundLevelListener(
* remove
*/
public void removeConferenceMembersSoundLevelListener(
SoundLevelListener<ConferenceMember> listener);
ConferenceMembersSoundLevelListener listener);
}

@ -0,0 +1,81 @@
/*
* 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.service.protocol.event;
import java.util.*;
import net.java.sip.communicator.service.protocol.*;
/**
* Notifies interested parties in <tt>ConferenceMember</tt>s sound level changes.
* When a <tt>CallPeer</tt> is participating in the conference also as a
* <tt>ConferenceMember</tt> its sound level would be included in the map of
* received levels.
*
* @author Yana Stamcheva
*/
public class ConferenceMembersSoundLevelEvent
extends EventObject
{
/**
* The maximum level that can be reported for a participant in a conference.
* Level values should be distributed among MAX_LEVEL and MIN_LEVEL in a
* way that would appear uniform to users.
*/
public static final int MAX_LEVEL = 255;
/**
* The maximum (zero) level that can be reported for a participant in a
* conference. Level values should be distributed among MAX_LEVEL and
* MIN_LEVEL in a way that would appear uniform to users.
*/
public static final int MIN_LEVEL = 0;
/**
* The mapping of <tt>ConferenceMember</tt>s to sound levels. It is
* presumed that all <tt>ConferenceMember</tt>s not contained in the map has
* a 0 sound level.
*/
private final Map<ConferenceMember, Integer> levels;
/**
* Creates an instance of <tt>ConferenceMembersSoundLevelEvent</tt> for the
* given <tt>callPeer</tt> by indicating the mapping of
* <tt>ConferenceMember</tt>s and sound levels.
*
* @param callPeer the <tt>CallPeer</tt> for which this event occurred
* @param levels the mapping of <tt>ConferenceMember</tt>s to sound levels
*/
public ConferenceMembersSoundLevelEvent(
CallPeer callPeer,
Map<ConferenceMember, Integer> levels)
{
super(callPeer);
this.levels = levels;
}
/**
* Returns the source <tt>CallPeer</tt> for which the event occurred.
* @return the source <tt>CallPeer</tt> for which the event occurred
*/
public CallPeer getSourcePeer()
{
return (CallPeer) getSource();
}
/**
* Returns the mapping of <tt>ConferenceMember</tt>s to sound levels. It is
* presumed that all <tt>ConferenceMember</tt>s not contained in the map has
* a 0 sound level.
* @return the mapping of <tt>ConferenceMember</tt>s to sound levels
*/
public Map<ConferenceMember, Integer> getLevels()
{
return levels;
}
}

@ -0,0 +1,29 @@
/*
* 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.service.protocol.event;
/**
* Notifies interested parties in <tt>ConferenceMember</tt>s sound level changes.
* When a <tt>CallPeer</tt> is participating in the conference also as a
* <tt>ConferenceMember</tt> its audio level would be included in the map of
* received levels.
*
* @author Yana Stamcheva
*/
public interface ConferenceMembersSoundLevelListener
{
/**
* Indicates that a change has occurred in the sound level of some of the
* <tt>ConferenceMember</tt>s coming from a given <tt>CallPeer</tt>. It's
* presumed that all <tt>ConferenceMember</tt>s NOT contained in the event
* have a 0 sound level.
*
* @param event the <tt>ConferenceMembersSoundLevelEvent</tt> containing
* the new level
*/
public void soundLevelChanged(ConferenceMembersSoundLevelEvent event);
}

@ -7,26 +7,25 @@
package net.java.sip.communicator.service.protocol.event;
import java.util.*;
import net.java.sip.communicator.service.protocol.*;
/**
* <tt>SoundLevelChangeEvent</tt>s are distributed to
* <tt>SoundLevelChangeListener</tt> during calls and only by those
* which support the feature. A single event instance contains the new
* sound level values for one or more participants being mixed by the remote
* party. Every participant is represented by an SSRC <tt>String</tt> identifier
* which corresponds to the SSRC field that it is using when communicating with
* the mixer. If a certain SSRC identifier is reported in a particular
* <tt>SoundLevelChangeEvent</tt> and is not present in a following instance
* should be interpreted as a sound-level value of 0 for that participant.
* <tt>SoundLevelChangeEvent</tt>s are triggered whenever a change occurs in the
* sound level of the audio stream coming from a certain <tt>CallPeer</tt>.
* <p>
* Listeners should assume that the absence of sound level events indicates the
* absence of changes in the sound level of all known call participants.
* In the case of a <tt>CallPeer</tt>, which is also a conference focus and
* is participating in the conference as a <tt>ConferenceMember</tt> the level
* would be the aggregated level of all <tt>ConferenceMember</tt>s levels
* including the one corresponding to the peer itself.
* <p>
* In the case of a <tt>CallPeer</tt>, which is also a conference focus, but
* is NOT participating in the conference as a <tt>ConferenceMember</tt>
* (server) the level would be the aggregated level of all attached
* <tt>ConferenceMember</tt>s.
*
* @param <T> type of the mappings to the levels, local ssrc which is Long
* or ConferenceMember when used for ConferenceMember listeners.
* @author Emil Ivov
* @author Yana Stamcheva
*/
public class SoundLevelChangeEvent<T>
public class SoundLevelChangeEvent
extends EventObject
{
/**
@ -44,36 +43,31 @@ public class SoundLevelChangeEvent<T>
public static final int MIN_LEVEL = 0;
/**
* The mapping of SSRC identifiers to sound levels or ConferenceMembers
* to sound levels.
* The audio stream level, for the change of which this event is about.
*/
private final Map<T, Integer> levels;
private final int level;
/**
* Creates a new instance of a <tt>SoundLevelChangeEvent</tt> for the
* specified source stream and level mappings.
* Creates an <tt>StreamSoundLevelEvent</tt> for the given <tt>callPeer</tt>
* by indicating the current sound level of the audio stream.
*
* @param source
* @param levels
* @param source the source from which the change is received
* @param level the current sound level of the audio stream
*/
public SoundLevelChangeEvent(Object source,
Map<T, Integer> levels)
int level)
{
super(source);
this.levels = levels;
this.level = level;
}
/**
* Returns the mapping of SSRC identifiers to sound levels. The map contains
* the SSRC identifiers of all participants whose sound levels have changed
* to non-zero values. All known participants that are not reported in the
* map are assumed to have zero values of their levels.
*
* @return a mapping of SSRC identifiers to sound levels.
* Returns the current sound level of the audio stream.
* @return the current sound level of the audio stream
*/
public Map<T, Integer> getLevels()
public int getLevel()
{
return levels;
return level;
}
}

@ -9,23 +9,35 @@
import java.util.*;
/**
* This listener allows interested parties to register for events notifying them
* that the sound level for a conference participant currently being mixed by
* our interlocutor has changed.
* Notifies interested parties in sound level changes of the main audio stream
* coming from a given <tt>CallPeer</tt>.
* <p>
* What does this mean in the different cases:
* 1) In the case of a <tt>CallPeer</tt>, which is not a conference focus and
* has no <tt>ConferenceMember</tt>s we would be notified of any change in the
* sound level of the stream coming from this peer.
* 2) In the case of a <tt>CallPeer</tt>, which is also a conference focus and
* is participating in the conference as a <tt>ConferenceMember</tt> the level
* would be the aggregated level of all <tt>ConferenceMember</tt>s levels
* including the one corresponding to the peer itself.
* 3) In the case of a <tt>CallPeer</tt>, which is also a conference focus, but
* is NOT participating in the conference as a <tt>ConferenceMember</tt>
* (server) the level would be the aggregated level of all
* <tt>ConferenceMember</tt>s.
*
* @param <T> Long or ConferenceMember type mapping with sound levels.
* @author Emil Ivov
* @author Yana Stamcheva
*/
public interface SoundLevelListener<T>
public interface SoundLevelListener
extends EventListener
{
/**
* Delivers <tt>SoundLevelChangeEvent</tt>s to the implementing class. These
* events may be delivered if the remote party is a mixer which supports
* the RTP sound levels extension.
/**
* Indicates that a change has occurred in the audio stream level coming
* from a given <tt>CallPeer</tt>. In the case of conference focus the audio
* stream level would be the total level including all
* <tt>ConferenceMember</tt>s levels.
*
* @param evt the notification event containing the list of changes.
* @param event the <tt>StreamSoundLevelEvent</tt> containing the new level
*/
public void soundLevelChanged(SoundLevelChangeEvent<T> evt);
public void soundLevelChanged(SoundLevelChangeEvent event);
}

Loading…
Cancel
Save