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

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: 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 91c27c80ad99f16805b80ad45b2916c60812748d..f0c61a92fdc89543485fefb314e628cadf9d058b 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,39 @@ void Call::SignalChannelNetworkState(MediaType media, NetworkState state) {
}
}
+// TODO(honghaiz): Add tests for this method.
+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;
stefan-webrtc 2016/03/31 07:17:05 bool inserted = result.first.second?
honghaiz3 2016/03/31 17:42:52 No. The return value of map::insert: The single el
+ 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) {
stefan-webrtc 2016/03/31 07:17:05 if (kv->second != network_route) {
honghaiz3 2016/03/31 17:42:52 Done.
+ 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());
« webrtc/call.h ('K') | « webrtc/call.h ('k') | webrtc/media/engine/fakewebrtccall.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698