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

Unified Diff: webrtc/call/call.cc

Issue 1844773002: Update the call when the network route changes (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Merge with head Created 4 years, 8 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
« no previous file with comments | « webrtc/call.h ('k') | webrtc/media/base/fakemediaengine.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/call/call.cc
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc
index 91c27c80ad99f16805b80ad45b2916c60812748d..1572720248de200d4606b0fba140d0fb91874b74 100644
--- a/webrtc/call/call.cc
+++ b/webrtc/call/call.cc
@@ -89,6 +89,9 @@ class Call : public webrtc::Call, public PacketReceiver,
void SignalChannelNetworkState(MediaType media, NetworkState state) override;
+ void OnNetworkRouteChanged(const std::string& transport_name,
+ const rtc::NetworkRoute& network_route) override;
+
void OnSentPacket(const rtc::SentPacket& sent_packet) override;
// Implements BitrateObserver.
@@ -102,7 +105,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 +172,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, rtc::NetworkRoute> network_routes_;
+
VieRemb remb_;
const std::unique_ptr<CongestionController> congestion_controller_;
@@ -591,6 +595,37 @@ void Call::SignalChannelNetworkState(MediaType media, NetworkState state) {
}
}
+// TODO(honghaiz): Add tests for this method.
+void Call::OnNetworkRouteChanged(const std::string& transport_name,
+ const rtc::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 handle this in SignalChannelNetworkState and
+ // consider merging these two methods.
+ 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;
+ }
+ if (kv->second != network_route) {
+ 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;
+ // TODO(holmer): Update the BWE bitrates.
+ }
+}
+
void Call::UpdateAggregateNetworkState() {
RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
« no previous file with comments | « webrtc/call.h ('k') | webrtc/media/base/fakemediaengine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698