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

Unified Diff: webrtc/modules/congestion_controller/congestion_controller.cc

Issue 2458863002: Start probes only after network is connected. (Closed)
Patch Set: . Created 4 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/congestion_controller/congestion_controller.cc
diff --git a/webrtc/modules/congestion_controller/congestion_controller.cc b/webrtc/modules/congestion_controller/congestion_controller.cc
index f7e7e5625a2984500bbb8a8231935181c3f42dc5..ac166164c9ef2b3b0901738ff4478d1a97408da9 100644
--- a/webrtc/modules/congestion_controller/congestion_controller.cc
+++ b/webrtc/modules/congestion_controller/congestion_controller.cc
@@ -17,6 +17,7 @@
#include "webrtc/base/checks.h"
#include "webrtc/base/constructormagic.h"
#include "webrtc/base/logging.h"
+#include "webrtc/base/networkroute.h"
#include "webrtc/base/rate_limiter.h"
#include "webrtc/base/socket.h"
#include "webrtc/base/thread_annotations.h"
@@ -171,12 +172,13 @@ CongestionController::CongestionController(
new RateLimiter(clock, kRetransmitWindowSizeMs)),
remote_estimator_proxy_(clock_, packet_router_.get()),
transport_feedback_adapter_(clock_, bitrate_controller_.get()),
+ start_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
max_bitrate_bps_(0),
last_reported_bitrate_bps_(0),
last_reported_fraction_loss_(0),
last_reported_rtt_(0),
- network_state_(kNetworkUp) {
+ network_state_(kNetworkDown) {
Init();
}
@@ -202,12 +204,13 @@ CongestionController::CongestionController(
new RateLimiter(clock, kRetransmitWindowSizeMs)),
remote_estimator_proxy_(clock_, packet_router_.get()),
transport_feedback_adapter_(clock_, bitrate_controller_.get()),
+ start_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
max_bitrate_bps_(0),
last_reported_bitrate_bps_(0),
last_reported_fraction_loss_(0),
last_reported_rtt_(0),
- network_state_(kNetworkUp) {
+ network_state_(kNetworkDown) {
Init();
}
@@ -218,42 +221,53 @@ void CongestionController::Init() {
transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps_);
}
-void CongestionController::SetBweBitrates(int min_bitrate_bps,
- int start_bitrate_bps,
+void CongestionController::SetBweBitrates(int start_bitrate_bps,
+ int min_bitrate_bps,
int max_bitrate_bps) {
ClampBitrates(&start_bitrate_bps, &min_bitrate_bps, &max_bitrate_bps);
- bitrate_controller_->SetBitrates(start_bitrate_bps,
- min_bitrate_bps,
+ bitrate_controller_->SetBitrates(start_bitrate_bps, min_bitrate_bps,
max_bitrate_bps);
- probe_controller_->SetBitrates(min_bitrate_bps, start_bitrate_bps,
+ probe_controller_->SetBitrates(start_bitrate_bps, min_bitrate_bps,
max_bitrate_bps);
+
+ start_bitrate_bps_ = start_bitrate_bps;
+ min_bitrate_bps_ = min_bitrate_bps;
max_bitrate_bps_ = max_bitrate_bps;
if (remote_bitrate_estimator_)
- remote_bitrate_estimator_->SetMinBitrate(min_bitrate_bps);
- min_bitrate_bps_ = min_bitrate_bps;
+ remote_bitrate_estimator_->SetMinBitrate(min_bitrate_bps_);
transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps_);
MaybeTriggerOnNetworkChanged();
}
-void CongestionController::ResetBweAndBitrates(int bitrate_bps,
- int min_bitrate_bps,
- int max_bitrate_bps) {
- ClampBitrates(&bitrate_bps, &min_bitrate_bps, &max_bitrate_bps);
+void CongestionController::OnNetworkRouteChanged(
+ const rtc::NetworkRoute& route) {
+ LOG(LS_INFO) << "OnNetworkRouteChanged, " << (route.connected ? "" : "not ")
+ << "connected.";
+
+ if (route.connected) {
+ pacer_->Resume();
+ } else {
+ pacer_->Pause();
+ }
+ {
+ rtc::CritScope cs(&critsect_);
+ network_state_ = route.connected ? kNetworkUp : kNetworkDown;
+ }
+
// TODO(honghaiz): Recreate this object once the bitrate controller is
// no longer exposed outside CongestionController.
- bitrate_controller_->ResetBitrates(bitrate_bps, min_bitrate_bps,
- max_bitrate_bps);
- min_bitrate_bps_ = min_bitrate_bps;
- max_bitrate_bps_ = max_bitrate_bps;
- // TODO(honghaiz): Recreate this object once the remote bitrate estimator is
- // no longer exposed outside CongestionController.
- if (remote_bitrate_estimator_)
- remote_bitrate_estimator_->SetMinBitrate(min_bitrate_bps);
+ bitrate_controller_->ResetBitrates(start_bitrate_bps_, min_bitrate_bps_,
+ max_bitrate_bps_);
+
+ // TODO(honghaiz): Recreate |remote_bitrate_estimator_| once the remote
+ // bitrate estimator is no longer exposed outside CongestionController.
transport_feedback_adapter_.InitBwe();
- transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps);
+
+ probe_controller_->OnNetworkRouteChanged(route);
+
// TODO(holmer): Trigger a new probe once mid-call probing is implemented.
MaybeTriggerOnNetworkChanged();
}
@@ -290,21 +304,6 @@ int64_t CongestionController::GetPacerQueuingDelayMs() const {
return IsNetworkDown() ? 0 : pacer_->QueueInMs();
}
-void CongestionController::SignalNetworkState(NetworkState state) {
- LOG(LS_INFO) << "SignalNetworkState "
- << (state == kNetworkUp ? "Up" : "Down");
- if (state == kNetworkUp) {
- pacer_->Resume();
- } else {
- pacer_->Pause();
- }
- {
- rtc::CritScope cs(&critsect_);
- network_state_ = state;
- }
- MaybeTriggerOnNetworkChanged();
-}
-
void CongestionController::OnSentPacket(const rtc::SentPacket& sent_packet) {
transport_feedback_adapter_.OnSentPacket(sent_packet.packet_id,
sent_packet.send_time_ms);

Powered by Google App Engine
This is Rietveld 408576698