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

Side by Side Diff: webrtc/call/call.cc

Issue 1368943002: Fix suspend below min bitrate in new API by making it possible to set min bitrate at the receive-si… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Merge. 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
« no previous file with comments | « no previous file | webrtc/modules/remote_bitrate_estimator/aimd_rate_control.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 void SignalNetworkState(NetworkState state) override; 78 void SignalNetworkState(NetworkState state) override;
79 79
80 private: 80 private:
81 DeliveryStatus DeliverRtcp(MediaType media_type, const uint8_t* packet, 81 DeliveryStatus DeliverRtcp(MediaType media_type, const uint8_t* packet,
82 size_t length); 82 size_t length);
83 DeliveryStatus DeliverRtp(MediaType media_type, 83 DeliveryStatus DeliverRtp(MediaType media_type,
84 const uint8_t* packet, 84 const uint8_t* packet,
85 size_t length, 85 size_t length,
86 const PacketTime& packet_time); 86 const PacketTime& packet_time);
87 87
88 void SetBitrateControllerConfig(
89 const webrtc::Call::Config::BitrateConfig& bitrate_config);
90
91 void ConfigureSync(const std::string& sync_group) 88 void ConfigureSync(const std::string& sync_group)
92 EXCLUSIVE_LOCKS_REQUIRED(receive_crit_); 89 EXCLUSIVE_LOCKS_REQUIRED(receive_crit_);
93 90
94 const int num_cpu_cores_; 91 const int num_cpu_cores_;
95 const rtc::scoped_ptr<ProcessThread> module_process_thread_; 92 const rtc::scoped_ptr<ProcessThread> module_process_thread_;
96 const rtc::scoped_ptr<ChannelGroup> channel_group_; 93 const rtc::scoped_ptr<ChannelGroup> channel_group_;
97 volatile int next_channel_id_; 94 volatile int next_channel_id_;
98 Call::Config config_; 95 Call::Config config_;
99 96
100 // Needs to be held while write-locking |receive_crit_| or |send_crit_|. This 97 // Needs to be held while write-locking |receive_crit_| or |send_crit_|. This
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 VoECodec* voe_codec = VoECodec::GetInterface(config.voice_engine); 149 VoECodec* voe_codec = VoECodec::GetInterface(config.voice_engine);
153 if (voe_codec) { 150 if (voe_codec) {
154 event_log_ = voe_codec->GetEventLog(); 151 event_log_ = voe_codec->GetEventLog();
155 voe_codec->Release(); 152 voe_codec->Release();
156 } 153 }
157 } 154 }
158 155
159 Trace::CreateTrace(); 156 Trace::CreateTrace();
160 module_process_thread_->Start(); 157 module_process_thread_->Start();
161 158
162 SetBitrateControllerConfig(config_.bitrate_config); 159 channel_group_->SetBweBitrates(config_.bitrate_config.min_bitrate_bps,
160 config_.bitrate_config.start_bitrate_bps,
161 config_.bitrate_config.max_bitrate_bps);
163 } 162 }
164 163
165 Call::~Call() { 164 Call::~Call() {
166 RTC_CHECK_EQ(0u, video_send_ssrcs_.size()); 165 RTC_CHECK_EQ(0u, video_send_ssrcs_.size());
167 RTC_CHECK_EQ(0u, video_send_streams_.size()); 166 RTC_CHECK_EQ(0u, video_send_streams_.size());
168 RTC_CHECK_EQ(0u, audio_receive_ssrcs_.size()); 167 RTC_CHECK_EQ(0u, audio_receive_ssrcs_.size());
169 RTC_CHECK_EQ(0u, video_receive_ssrcs_.size()); 168 RTC_CHECK_EQ(0u, video_receive_ssrcs_.size());
170 RTC_CHECK_EQ(0u, video_receive_streams_.size()); 169 RTC_CHECK_EQ(0u, video_receive_streams_.size());
171 170
172 module_process_thread_->Stop(); 171 module_process_thread_->Stop();
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 bitrate_config.min_bitrate_bps && 379 bitrate_config.min_bitrate_bps &&
381 (bitrate_config.start_bitrate_bps <= 0 || 380 (bitrate_config.start_bitrate_bps <= 0 ||
382 config_.bitrate_config.start_bitrate_bps == 381 config_.bitrate_config.start_bitrate_bps ==
383 bitrate_config.start_bitrate_bps) && 382 bitrate_config.start_bitrate_bps) &&
384 config_.bitrate_config.max_bitrate_bps == 383 config_.bitrate_config.max_bitrate_bps ==
385 bitrate_config.max_bitrate_bps) { 384 bitrate_config.max_bitrate_bps) {
386 // Nothing new to set, early abort to avoid encoder reconfigurations. 385 // Nothing new to set, early abort to avoid encoder reconfigurations.
387 return; 386 return;
388 } 387 }
389 config_.bitrate_config = bitrate_config; 388 config_.bitrate_config = bitrate_config;
390 SetBitrateControllerConfig(bitrate_config); 389 channel_group_->SetBweBitrates(bitrate_config.min_bitrate_bps,
391 } 390 bitrate_config.start_bitrate_bps,
392 391 bitrate_config.max_bitrate_bps);
393 void Call::SetBitrateControllerConfig(
394 const webrtc::Call::Config::BitrateConfig& bitrate_config) {
395 BitrateController* bitrate_controller =
396 channel_group_->GetBitrateController();
397 if (bitrate_config.start_bitrate_bps > 0)
398 bitrate_controller->SetStartBitrate(bitrate_config.start_bitrate_bps);
399 bitrate_controller->SetMinMaxBitrate(bitrate_config.min_bitrate_bps,
400 bitrate_config.max_bitrate_bps);
401 } 392 }
402 393
403 void Call::SignalNetworkState(NetworkState state) { 394 void Call::SignalNetworkState(NetworkState state) {
404 // Take crit for entire function, it needs to be held while updating streams 395 // Take crit for entire function, it needs to be held while updating streams
405 // to guarantee a consistent state across streams. 396 // to guarantee a consistent state across streams.
406 rtc::CritScope lock(&network_enabled_crit_); 397 rtc::CritScope lock(&network_enabled_crit_);
407 network_enabled_ = state == kNetworkUp; 398 network_enabled_ = state == kNetworkUp;
408 { 399 {
409 ReadLockScoped write_lock(*send_crit_); 400 ReadLockScoped write_lock(*send_crit_);
410 for (auto& kv : video_send_ssrcs_) { 401 for (auto& kv : video_send_ssrcs_) {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 size_t length, 531 size_t length,
541 const PacketTime& packet_time) { 532 const PacketTime& packet_time) {
542 if (RtpHeaderParser::IsRtcp(packet, length)) 533 if (RtpHeaderParser::IsRtcp(packet, length))
543 return DeliverRtcp(media_type, packet, length); 534 return DeliverRtcp(media_type, packet, length);
544 535
545 return DeliverRtp(media_type, packet, length, packet_time); 536 return DeliverRtp(media_type, packet, length, packet_time);
546 } 537 }
547 538
548 } // namespace internal 539 } // namespace internal
549 } // namespace webrtc 540 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/remote_bitrate_estimator/aimd_rate_control.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698