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

Side by Side Diff: webrtc/media/engine/webrtcvoiceengine.cc

Issue 1757683002: Make the audio channel communicate network state changes to the call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Made the Call class keep track of network state for audio and video separately Created 4 years, 9 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 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 1332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1343 1343
1344 WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel(WebRtcVoiceEngine* engine, 1344 WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel(WebRtcVoiceEngine* engine,
1345 const MediaConfig& config, 1345 const MediaConfig& config,
1346 const AudioOptions& options, 1346 const AudioOptions& options,
1347 webrtc::Call* call) 1347 webrtc::Call* call)
1348 : VoiceMediaChannel(config), engine_(engine), call_(call) { 1348 : VoiceMediaChannel(config), engine_(engine), call_(call) {
1349 LOG(LS_VERBOSE) << "WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel"; 1349 LOG(LS_VERBOSE) << "WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel";
1350 RTC_DCHECK(call); 1350 RTC_DCHECK(call);
1351 engine->RegisterChannel(this); 1351 engine->RegisterChannel(this);
1352 SetOptions(options); 1352 SetOptions(options);
1353 call_->SignalChannelNetworkState(
1354 webrtc::MediaType::AUDIO,
1355 webrtc::ChannelNetworkState::CHANNEL_NETWORK_UP);
1353 } 1356 }
1354 1357
1355 WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel() { 1358 WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel() {
1356 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 1359 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
1357 LOG(LS_VERBOSE) << "WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel"; 1360 LOG(LS_VERBOSE) << "WebRtcVoiceMediaChannel::~WebRtcVoiceMediaChannel";
1358 // TODO(solenberg): Should be able to delete the streams directly, without 1361 // TODO(solenberg): Should be able to delete the streams directly, without
1359 // going through RemoveNnStream(), once stream objects handle 1362 // going through RemoveNnStream(), once stream objects handle
1360 // all (de)configuration. 1363 // all (de)configuration.
1361 while (!send_streams_.empty()) { 1364 while (!send_streams_.empty()) {
1362 RemoveSendStream(send_streams_.begin()->first); 1365 RemoveSendStream(send_streams_.begin()->first);
1363 } 1366 }
1364 while (!recv_streams_.empty()) { 1367 while (!recv_streams_.empty()) {
1365 RemoveRecvStream(recv_streams_.begin()->first); 1368 RemoveRecvStream(recv_streams_.begin()->first);
1366 } 1369 }
1367 engine()->UnregisterChannel(this); 1370 engine()->UnregisterChannel(this);
1371 call_->SignalChannelNetworkState(
1372 webrtc::MediaType::AUDIO,
1373 webrtc::ChannelNetworkState::CHANNEL_NOT_PRESENT);
1368 } 1374 }
1369 1375
1370 rtc::DiffServCodePoint WebRtcVoiceMediaChannel::PreferredDscp() const { 1376 rtc::DiffServCodePoint WebRtcVoiceMediaChannel::PreferredDscp() const {
1371 return kAudioDscpValue; 1377 return kAudioDscpValue;
1372 } 1378 }
1373 1379
1374 bool WebRtcVoiceMediaChannel::SetSendParameters( 1380 bool WebRtcVoiceMediaChannel::SetSendParameters(
1375 const AudioSendParameters& params) { 1381 const AudioSendParameters& params) {
1376 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 1382 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
1377 LOG(LS_INFO) << "WebRtcVoiceMediaChannel::SetSendParameters: " 1383 LOG(LS_INFO) << "WebRtcVoiceMediaChannel::SetSendParameters: "
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after
2392 if (bps < codec.rate) { 2398 if (bps < codec.rate) {
2393 LOG(LS_INFO) << "Failed to set codec " << codec.plname 2399 LOG(LS_INFO) << "Failed to set codec " << codec.plname
2394 << " to bitrate " << bps << " bps" 2400 << " to bitrate " << bps << " bps"
2395 << ", requires at least " << codec.rate << " bps."; 2401 << ", requires at least " << codec.rate << " bps.";
2396 return false; 2402 return false;
2397 } 2403 }
2398 return true; 2404 return true;
2399 } 2405 }
2400 } 2406 }
2401 2407
2408 void WebRtcVoiceMediaChannel::OnReadyToSend(bool ready)
2409 {
2410 LOG(LS_VERBOSE) << "OnReadyToSend: " << (ready ? "Ready." : "Not ready.");
2411 call_->SignalChannelNetworkState(
2412 webrtc::MediaType::AUDIO,
2413 ready ?
2414 webrtc::ChannelNetworkState::CHANNEL_NETWORK_UP :
2415 webrtc::ChannelNetworkState::CHANNEL_NETWORK_DOWN);
2416 }
2417
2402 bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) { 2418 bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) {
2403 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 2419 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
2404 RTC_DCHECK(info); 2420 RTC_DCHECK(info);
2405 2421
2406 // Get SSRC and stats for each sender. 2422 // Get SSRC and stats for each sender.
2407 RTC_DCHECK(info->senders.size() == 0); 2423 RTC_DCHECK(info->senders.size() == 0);
2408 for (const auto& stream : send_streams_) { 2424 for (const auto& stream : send_streams_) {
2409 webrtc::AudioSendStream::Stats stats = stream.second->GetStats(); 2425 webrtc::AudioSendStream::Stats stats = stream.second->GetStats();
2410 VoiceSenderInfo sinfo; 2426 VoiceSenderInfo sinfo;
2411 sinfo.add_ssrc(stats.local_ssrc); 2427 sinfo.add_ssrc(stats.local_ssrc);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
2520 } 2536 }
2521 } else { 2537 } else {
2522 LOG(LS_INFO) << "Stopping playout for channel #" << channel; 2538 LOG(LS_INFO) << "Stopping playout for channel #" << channel;
2523 engine()->voe()->base()->StopPlayout(channel); 2539 engine()->voe()->base()->StopPlayout(channel);
2524 } 2540 }
2525 return true; 2541 return true;
2526 } 2542 }
2527 } // namespace cricket 2543 } // namespace cricket
2528 2544
2529 #endif // HAVE_WEBRTC_VOICE 2545 #endif // HAVE_WEBRTC_VOICE
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698