(Auto)update libjingle 67555838-> 67643194
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6206 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/session/media/currentspeakermonitor.cc b/talk/session/media/currentspeakermonitor.cc
index 0009699..492a717 100644
--- a/talk/session/media/currentspeakermonitor.cc
+++ b/talk/session/media/currentspeakermonitor.cc
@@ -59,6 +59,8 @@
this, &CurrentSpeakerMonitor::OnAudioMonitor);
audio_source_context_->SignalMediaStreamsUpdate.connect(
this, &CurrentSpeakerMonitor::OnMediaStreamsUpdate);
+ audio_source_context_->SignalMediaStreamsReset.connect(
+ this, &CurrentSpeakerMonitor::OnMediaStreamsReset);
started_ = true;
}
@@ -190,20 +192,28 @@
}
void CurrentSpeakerMonitor::OnMediaStreamsUpdate(
- AudioSourceContext* audio_source_context, Session* session,
+ AudioSourceContext* audio_source_context, BaseSession* session,
const MediaStreams& added, const MediaStreams& removed) {
+
if (audio_source_context == audio_source_context_ && session == session_) {
// Update the speaking state map based on added and removed streams.
for (std::vector<cricket::StreamParams>::const_iterator
- it = removed.video().begin(); it != removed.video().end(); ++it) {
+ it = removed.audio().begin(); it != removed.audio().end(); ++it) {
ssrc_to_speaking_state_map_.erase(it->first_ssrc());
}
for (std::vector<cricket::StreamParams>::const_iterator
- it = added.video().begin(); it != added.video().end(); ++it) {
+ it = added.audio().begin(); it != added.audio().end(); ++it) {
ssrc_to_speaking_state_map_[it->first_ssrc()] = SS_NOT_SPEAKING;
}
}
}
+void CurrentSpeakerMonitor::OnMediaStreamsReset(
+ AudioSourceContext* audio_source_context, BaseSession* session) {
+ if (audio_source_context == audio_source_context_ && session == session_) {
+ ssrc_to_speaking_state_map_.clear();
+ }
+}
+
} // namespace cricket
diff --git a/talk/session/media/currentspeakermonitor.h b/talk/session/media/currentspeakermonitor.h
index 8ef64b3..ff829e2 100644
--- a/talk/session/media/currentspeakermonitor.h
+++ b/talk/session/media/currentspeakermonitor.h
@@ -48,7 +48,9 @@
public:
sigslot::signal2<AudioSourceContext*, const cricket::AudioInfo&>
SignalAudioMonitor;
- sigslot::signal4<AudioSourceContext*, cricket::Session*,
+ sigslot::signal2<AudioSourceContext*, cricket::BaseSession*>
+ SignalMediaStreamsReset;
+ sigslot::signal4<AudioSourceContext*, cricket::BaseSession*,
const cricket::MediaStreams&, const cricket::MediaStreams&>
SignalMediaStreamsUpdate;
};
@@ -85,9 +87,11 @@
private:
void OnAudioMonitor(AudioSourceContext* call, const AudioInfo& info);
void OnMediaStreamsUpdate(AudioSourceContext* call,
- Session* session,
+ BaseSession* session,
const MediaStreams& added,
const MediaStreams& removed);
+ void OnMediaStreamsReset(AudioSourceContext* audio_source_context,
+ BaseSession* session);
// These are states that a participant will pass through so that we gradually
// recognize that they have started and stopped speaking. This avoids