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

Side by Side Diff: webrtc/modules/bitrate_controller/bitrate_controller_impl.cc

Issue 1932683002: Remove ViEEncoder::SetNetworkStatus (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@move_pacer
Patch Set: Created 4 years, 7 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 : clock_(clock), 92 : clock_(clock),
93 observer_(observer), 93 observer_(observer),
94 pacer_(pacer), 94 pacer_(pacer),
95 last_bitrate_update_ms_(clock_->TimeInMilliseconds()), 95 last_bitrate_update_ms_(clock_->TimeInMilliseconds()),
96 bandwidth_estimation_(), 96 bandwidth_estimation_(),
97 reserved_bitrate_bps_(0), 97 reserved_bitrate_bps_(0),
98 last_bitrate_bps_(0), 98 last_bitrate_bps_(0),
99 last_fraction_loss_(0), 99 last_fraction_loss_(0),
100 last_rtt_ms_(0), 100 last_rtt_ms_(0),
101 last_reserved_bitrate_bps_(0), 101 last_reserved_bitrate_bps_(0),
102 send_queue_full_(false) { 102 send_queue_ready_(true) {
103 RTC_DCHECK(observer_); 103 RTC_DCHECK(observer_);
104 RTC_DCHECK(pacer_); 104 RTC_DCHECK(pacer_);
105 // This calls the observer_, which means that the observer provided by the 105 // This calls the observer_, which means that the observer provided by the
106 // user must be ready to accept a bitrate update when it constructs the 106 // user must be ready to accept a bitrate update when it constructs the
107 // controller. We do this to avoid having to keep synchronized initial values 107 // controller. We do this to avoid having to keep synchronized initial values
108 // in both the controller and the allocator. 108 // in both the controller and the allocator.
109 MaybeTriggerOnNetworkChanged(); 109 MaybeTriggerOnNetworkChanged();
110 } 110 }
111 111
112 RtcpBandwidthObserver* BitrateControllerImpl::CreateRtcpBandwidthObserver() { 112 RtcpBandwidthObserver* BitrateControllerImpl::CreateRtcpBandwidthObserver() {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 void BitrateControllerImpl::MaybeTriggerOnNetworkChanged() { 197 void BitrateControllerImpl::MaybeTriggerOnNetworkChanged() {
198 uint32_t bitrate_bps; 198 uint32_t bitrate_bps;
199 uint8_t fraction_loss; 199 uint8_t fraction_loss;
200 int64_t rtt; 200 int64_t rtt;
201 201
202 bool network_changed = 202 bool network_changed =
203 GetNetworkParameters(&bitrate_bps, &fraction_loss, &rtt); 203 GetNetworkParameters(&bitrate_bps, &fraction_loss, &rtt);
204 if (network_changed) { 204 if (network_changed) {
205 pacer_->SetNetWorkEstimateTargetBitrate(bitrate_bps); 205 pacer_->SetNetWorkEstimateTargetBitrate(bitrate_bps);
206 } 206 }
207 bool send_queue_full = 207 bool send_queue_ready = pacer_->CanSendMorePackets();
208 pacer_->ExpectedQueueTimeMs() > PacedSender::kMaxQueueLengthMs;
209 208
210 bitrate_bps = send_queue_full ? 0 : bitrate_bps; 209 bitrate_bps = send_queue_ready ? bitrate_bps : 0;
211 if (UpdateSendQueueStatus(send_queue_full) || 210 if (UpdateSendQueueStatus(send_queue_ready) ||
212 (network_changed && !send_queue_full)) { 211 (network_changed && send_queue_ready)) {
213 observer_->OnNetworkChanged(bitrate_bps, fraction_loss, rtt); 212 observer_->OnNetworkChanged(bitrate_bps, fraction_loss, rtt);
214 return; 213 return;
215 } 214 }
216 } 215 }
217 216
218 bool BitrateControllerImpl::GetNetworkParameters(uint32_t* bitrate, 217 bool BitrateControllerImpl::GetNetworkParameters(uint32_t* bitrate,
219 uint8_t* fraction_loss, 218 uint8_t* fraction_loss,
220 int64_t* rtt) { 219 int64_t* rtt) {
221 rtc::CritScope cs(&critsect_); 220 rtc::CritScope cs(&critsect_);
222 int current_bitrate; 221 int current_bitrate;
(...skipping 10 matching lines...) Expand all
233 last_bitrate_bps_ = *bitrate; 232 last_bitrate_bps_ = *bitrate;
234 last_fraction_loss_ = *fraction_loss; 233 last_fraction_loss_ = *fraction_loss;
235 last_rtt_ms_ = *rtt; 234 last_rtt_ms_ = *rtt;
236 last_reserved_bitrate_bps_ = reserved_bitrate_bps_; 235 last_reserved_bitrate_bps_ = reserved_bitrate_bps_;
237 new_bitrate = true; 236 new_bitrate = true;
238 } 237 }
239 238
240 return new_bitrate; 239 return new_bitrate;
241 } 240 }
242 241
243 bool BitrateControllerImpl::UpdateSendQueueStatus(bool is_full) { 242 bool BitrateControllerImpl::UpdateSendQueueStatus(bool is_ready) {
244 rtc::CritScope cs(&critsect_); 243 rtc::CritScope cs(&critsect_);
245 bool changed = is_full != send_queue_full_; 244 bool changed = is_ready != send_queue_ready_;
246 send_queue_full_ = is_full; 245 send_queue_ready_ = is_ready;
247 if (changed) { 246 if (changed) {
248 LOG(LS_INFO) << "Send queue status changed state. " 247 LOG(LS_INFO) << "Send queue status changed state. "
249 << " Queue is " << (changed ? "full" : "not full."); 248 << " Queue is "
249 << (send_queue_ready_ ? "ready." : " not ready.");
250 } 250 }
251 return changed; 251 return changed;
252 } 252 }
253 253
254 bool BitrateControllerImpl::AvailableBandwidth(uint32_t* bandwidth) const { 254 bool BitrateControllerImpl::AvailableBandwidth(uint32_t* bandwidth) const {
255 rtc::CritScope cs(&critsect_); 255 rtc::CritScope cs(&critsect_);
256 int bitrate; 256 int bitrate;
257 uint8_t fraction_loss; 257 uint8_t fraction_loss;
258 int64_t rtt; 258 int64_t rtt;
259 bandwidth_estimation_.CurrentEstimate(&bitrate, &fraction_loss, &rtt); 259 bandwidth_estimation_.CurrentEstimate(&bitrate, &fraction_loss, &rtt);
260 if (bitrate > 0) { 260 if (bitrate > 0) {
261 bitrate = bitrate - std::min<int>(bitrate, reserved_bitrate_bps_); 261 bitrate = bitrate - std::min<int>(bitrate, reserved_bitrate_bps_);
262 bitrate = std::max(bitrate, bandwidth_estimation_.GetMinBitrate()); 262 bitrate = std::max(bitrate, bandwidth_estimation_.GetMinBitrate());
263 *bandwidth = bitrate; 263 *bandwidth = bitrate;
264 return true; 264 return true;
265 } 265 }
266 return false; 266 return false;
267 } 267 }
268 } // namespace webrtc 268 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698