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

Unified Diff: webrtc/call/call.cc

Issue 1803063004: Reset the BWE when the network changes (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Add tests in p2ptransportchannel 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/call/call.cc
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc
index 5f9eb3fd93312ad657c6f9c19ce6eb1c758836a1..a9a002f42d9a73404f0d046289fbbf8f5627d3be 100644
--- a/webrtc/call/call.cc
+++ b/webrtc/call/call.cc
@@ -89,6 +89,10 @@ class Call : public webrtc::Call, public PacketReceiver,
void SignalChannelNetworkState(MediaType media, NetworkState state) override;
+ void OnNetworkRouteChanged(
+ const std::string& transport_name,
+ const cricket::NetworkRoute& network_route) override;
+
void OnSentPacket(const rtc::SentPacket& sent_packet) override;
// Implements BitrateObserver.
@@ -102,7 +106,6 @@ class Call : public webrtc::Call, public PacketReceiver,
const uint8_t* packet,
size_t length,
const PacketTime& packet_time);
-
void ConfigureSync(const std::string& sync_group)
EXCLUSIVE_LOCKS_REQUIRED(receive_crit_);
@@ -170,6 +173,8 @@ class Call : public webrtc::Call, public PacketReceiver,
int64_t pacer_bitrate_sum_kbits_ GUARDED_BY(&bitrate_crit_);
int64_t num_bitrate_updates_ GUARDED_BY(&bitrate_crit_);
+ std::map<std::string, cricket::NetworkRoute> network_routes_;
+
VieRemb remb_;
const std::unique_ptr<CongestionController> congestion_controller_;
@@ -591,6 +596,38 @@ void Call::SignalChannelNetworkState(MediaType media, NetworkState state) {
}
}
+void Call::OnNetworkRouteChanged(const std::string& transport_name,
+ const cricket::NetworkRoute& network_route) {
+ RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
+ // Check if the network route is connected.
+ if (!network_route.connected) {
+ LOG(LS_INFO) << "Transport " << transport_name << " is disconnected";
+ // TODO(honghaiz): Perhaps it should stop sending until a connected route is
+ // established.
+ return;
+ }
+
+ // Check whether the network route has changed on each transport.
+ auto result =
+ network_routes_.insert(std::make_pair(transport_name, network_route));
+ auto kv = result.first;
+ bool inserted = result.second;
+ if (inserted) {
+ // No need to reset BWE if this is the first time the network connects.
+ return;
+ }
+ bool changed = kv->second != network_route;
+ if (changed) {
+ kv->second = network_route;
+ LOG(LS_INFO) << "Network route changed on transport " << transport_name
+ << ": new local network id " << network_route.local_network_id
+ << " new remote network id "
+ << network_route.remote_network_id;
+ congestion_controller_->ResetBweBitrates(
+ config_.bitrate_config.start_bitrate_bps);
+ }
+}
+
void Call::UpdateAggregateNetworkState() {
RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
« no previous file with comments | « webrtc/call.h ('k') | webrtc/media/base/fakemediaengine.h » ('j') | webrtc/pc/channel.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698