Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: talk/session/media/currentspeakermonitor.cc

Issue 1397973002: Merging BaseSession code into WebRtcSession. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Merging with master (MediaStreamSignaling removal affected WebRtcSession). Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 23 matching lines...) Expand all
34 namespace cricket { 34 namespace cricket {
35 35
36 namespace { 36 namespace {
37 const int kMaxAudioLevel = 9; 37 const int kMaxAudioLevel = 9;
38 // To avoid overswitching, we disable switching for a period of time after a 38 // To avoid overswitching, we disable switching for a period of time after a
39 // switch is done. 39 // switch is done.
40 const int kDefaultMinTimeBetweenSwitches = 1000; 40 const int kDefaultMinTimeBetweenSwitches = 1000;
41 } 41 }
42 42
43 CurrentSpeakerMonitor::CurrentSpeakerMonitor( 43 CurrentSpeakerMonitor::CurrentSpeakerMonitor(
44 AudioSourceContext* audio_source_context, BaseSession* session) 44 AudioSourceContext* audio_source_context)
45 : started_(false), 45 : started_(false),
46 audio_source_context_(audio_source_context), 46 audio_source_context_(audio_source_context),
47 session_(session),
48 current_speaker_ssrc_(0), 47 current_speaker_ssrc_(0),
49 earliest_permitted_switch_time_(0), 48 earliest_permitted_switch_time_(0),
50 min_time_between_switches_(kDefaultMinTimeBetweenSwitches) { 49 min_time_between_switches_(kDefaultMinTimeBetweenSwitches) {}
51 }
52 50
53 CurrentSpeakerMonitor::~CurrentSpeakerMonitor() { 51 CurrentSpeakerMonitor::~CurrentSpeakerMonitor() {
54 Stop(); 52 Stop();
55 } 53 }
56 54
57 void CurrentSpeakerMonitor::Start() { 55 void CurrentSpeakerMonitor::Start() {
58 if (!started_) { 56 if (!started_) {
59 audio_source_context_->SignalAudioMonitor.connect( 57 audio_source_context_->SignalAudioMonitor.connect(
60 this, &CurrentSpeakerMonitor::OnAudioMonitor); 58 this, &CurrentSpeakerMonitor::OnAudioMonitor);
61 audio_source_context_->SignalMediaStreamsUpdate.connect( 59 audio_source_context_->SignalMediaStreamsUpdate.connect(
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 if (earliest_permitted_switch_time_ <= now && 184 if (earliest_permitted_switch_time_ <= now &&
187 current_speaker_ssrc_ != loudest_speaker_ssrc) { 185 current_speaker_ssrc_ != loudest_speaker_ssrc) {
188 current_speaker_ssrc_ = loudest_speaker_ssrc; 186 current_speaker_ssrc_ = loudest_speaker_ssrc;
189 LOG(LS_INFO) << "Current speaker changed to " << current_speaker_ssrc_; 187 LOG(LS_INFO) << "Current speaker changed to " << current_speaker_ssrc_;
190 earliest_permitted_switch_time_ = now + min_time_between_switches_; 188 earliest_permitted_switch_time_ = now + min_time_between_switches_;
191 SignalUpdate(this, current_speaker_ssrc_); 189 SignalUpdate(this, current_speaker_ssrc_);
192 } 190 }
193 } 191 }
194 192
195 void CurrentSpeakerMonitor::OnMediaStreamsUpdate( 193 void CurrentSpeakerMonitor::OnMediaStreamsUpdate(
196 AudioSourceContext* audio_source_context, BaseSession* session, 194 AudioSourceContext* audio_source_context,
197 const MediaStreams& added, const MediaStreams& removed) { 195 const MediaStreams& added,
198 196 const MediaStreams& removed) {
199 if (audio_source_context == audio_source_context_ && session == session_) { 197 if (audio_source_context == audio_source_context_) {
200 // Update the speaking state map based on added and removed streams. 198 // Update the speaking state map based on added and removed streams.
201 for (std::vector<cricket::StreamParams>::const_iterator 199 for (std::vector<cricket::StreamParams>::const_iterator
202 it = removed.audio().begin(); it != removed.audio().end(); ++it) { 200 it = removed.audio().begin(); it != removed.audio().end(); ++it) {
203 ssrc_to_speaking_state_map_.erase(it->first_ssrc()); 201 ssrc_to_speaking_state_map_.erase(it->first_ssrc());
204 } 202 }
205 203
206 for (std::vector<cricket::StreamParams>::const_iterator 204 for (std::vector<cricket::StreamParams>::const_iterator
207 it = added.audio().begin(); it != added.audio().end(); ++it) { 205 it = added.audio().begin(); it != added.audio().end(); ++it) {
208 ssrc_to_speaking_state_map_[it->first_ssrc()] = SS_NOT_SPEAKING; 206 ssrc_to_speaking_state_map_[it->first_ssrc()] = SS_NOT_SPEAKING;
209 } 207 }
210 } 208 }
211 } 209 }
212 210
213 void CurrentSpeakerMonitor::OnMediaStreamsReset( 211 void CurrentSpeakerMonitor::OnMediaStreamsReset(
214 AudioSourceContext* audio_source_context, BaseSession* session) { 212 AudioSourceContext* audio_source_context) {
215 if (audio_source_context == audio_source_context_ && session == session_) { 213 if (audio_source_context == audio_source_context_) {
216 ssrc_to_speaking_state_map_.clear(); 214 ssrc_to_speaking_state_map_.clear();
217 } 215 }
218 } 216 }
219 217
220 } // namespace cricket 218 } // namespace cricket
OLDNEW
« no previous file with comments | « talk/session/media/currentspeakermonitor.h ('k') | talk/session/media/currentspeakermonitor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698