Index: webrtc/pc/rtcstatscollector.cc |
diff --git a/webrtc/pc/rtcstatscollector.cc b/webrtc/pc/rtcstatscollector.cc |
index 6344d87c105d8a7dd3c0334315c00be85d09acb0..bc69f701e27e18f9cd9fea7b1d2813acdf5d0227 100644 |
--- a/webrtc/pc/rtcstatscollector.cc |
+++ b/webrtc/pc/rtcstatscollector.cc |
@@ -687,7 +687,8 @@ void RTCStatsCollector::ProducePartialResultsOnNetworkThread( |
ProduceCodecStats_n( |
timestamp_us, *track_media_info_map_, report.get()); |
ProduceIceCandidateAndPairStats_n( |
- timestamp_us, *session_stats, report.get()); |
+ timestamp_us, *session_stats, track_media_info_map_->video_media_info(), |
+ report.get()); |
ProduceRTPStreamStats_n( |
timestamp_us, *session_stats, *track_media_info_map_, report.get()); |
ProduceTransportStats_n( |
@@ -817,6 +818,7 @@ void RTCStatsCollector::ProduceDataChannelStats_s( |
void RTCStatsCollector::ProduceIceCandidateAndPairStats_n( |
int64_t timestamp_us, const SessionStats& session_stats, |
+ const cricket::VideoMediaInfo* video_media_info, |
RTCStatsReport* report) const { |
RTC_DCHECK(network_thread_->IsCurrent()); |
for (const auto& transport_stats : session_stats.transport_stats) { |
@@ -855,6 +857,26 @@ void RTCStatsCollector::ProduceIceCandidateAndPairStats_n( |
// https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatepairstats-currentrtt |
candidate_pair_stats->current_round_trip_time = |
static_cast<double>(info.rtt) / rtc::kNumMillisecsPerSec; |
+ if (info.best_connection && video_media_info && |
stefan-webrtc
2017/02/06 16:08:17
Is best_connection always the connection in used?
hbos
2017/02/06 16:12:37
To my understanding, yes. +deadbeef, do you know?
Taylor Brandstetter
2017/02/06 19:32:13
Yes, it is. It was even renamed from "best_connect
|
+ !video_media_info->bw_estimations.empty()) { |
+ // The bandwidth estimations we have are for the selected candidate |
+ // pair ("info.best_connection"). |
+ RTC_DCHECK_EQ(video_media_info->bw_estimations.size(), 1); |
+ RTC_DCHECK_GE( |
+ video_media_info->bw_estimations[0].available_send_bandwidth, 0); |
+ RTC_DCHECK_GE( |
+ video_media_info->bw_estimations[0].available_recv_bandwidth, 0); |
+ if (video_media_info->bw_estimations[0].available_send_bandwidth) { |
+ candidate_pair_stats->available_outgoing_bitrate = |
+ static_cast<double>(video_media_info->bw_estimations[0] |
+ .available_send_bandwidth); |
+ } |
+ if (video_media_info->bw_estimations[0].available_recv_bandwidth) { |
+ candidate_pair_stats->available_incoming_bitrate = |
+ static_cast<double>(video_media_info->bw_estimations[0] |
+ .available_recv_bandwidth); |
+ } |
+ } |
candidate_pair_stats->requests_received = |
static_cast<uint64_t>(info.recv_ping_requests); |
candidate_pair_stats->requests_sent = static_cast<uint64_t>( |