Chromium Code Reviews| Index: webrtc/call/call.cc |
| diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc |
| index 91c27c80ad99f16805b80ad45b2916c60812748d..a50c3e5cedd6bcd065c22d0f2ee6127ac9646ae7 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) { |
| } |
| } |
| +// 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. |
|
stefan-webrtc
2016/03/31 07:17:05
This makes me wonder if this method should replace
honghaiz3
2016/03/31 17:42:52
Currently SignalChannelNetworkState is triggered b
stefan-webrtc
2016/04/01 08:08:38
Sounds good, it would be nice to keep the number o
honghaiz3
2016/04/01 22:21:07
Not sure what you mean by that.
|
| + 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; |
| + // TODO(stefan@): Update the BWE bitrates. |
|
stefan-webrtc
2016/03/31 07:17:05
TODO(holmer) preferred
honghaiz3
2016/03/31 17:42:52
Done.
|
| + } |
| +} |
| + |
| void Call::UpdateAggregateNetworkState() { |
| RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |