Chromium Code Reviews| Index: webrtc/pc/rtcstatscollector.cc |
| diff --git a/webrtc/pc/rtcstatscollector.cc b/webrtc/pc/rtcstatscollector.cc |
| index d9da0729eda2275986ded8535f334a5816c82d4b..b12cff99ae4cac464bb32259fefb9de7dc80ebd7 100644 |
| --- a/webrtc/pc/rtcstatscollector.cc |
| +++ b/webrtc/pc/rtcstatscollector.cc |
| @@ -652,9 +652,13 @@ void RTCStatsCollector::GetStatsReport( |
| // implemented to invoke on the signaling thread. |
| track_to_id_ = PrepareTrackToID_s(); |
| - invoker_.AsyncInvoke<void>(RTC_FROM_HERE, network_thread_, |
| + Call::Stats call_stats = pc_->session()->GetCallStats(); |
|
Taylor Brandstetter
2017/05/31 17:50:28
This is still resulting in a new, blocking worker
hbos
2017/06/01 11:40:39
Yes, add a TODO.
Other things that are prepared h
|
| + |
| + invoker_.AsyncInvoke<void>( |
| + RTC_FROM_HERE, network_thread_, |
| rtc::Bind(&RTCStatsCollector::ProducePartialResultsOnNetworkThread, |
| - rtc::scoped_refptr<RTCStatsCollector>(this), timestamp_us)); |
| + rtc::scoped_refptr<RTCStatsCollector>(this), timestamp_us, |
| + call_stats)); |
| ProducePartialResultsOnSignalingThread(timestamp_us); |
| } |
| } |
| @@ -689,7 +693,8 @@ void RTCStatsCollector::ProducePartialResultsOnSignalingThread( |
| } |
| void RTCStatsCollector::ProducePartialResultsOnNetworkThread( |
| - int64_t timestamp_us) { |
| + int64_t timestamp_us, |
| + const Call::Stats& call_stats) { |
| RTC_DCHECK(network_thread_->IsCurrent()); |
| rtc::scoped_refptr<RTCStatsReport> report = RTCStatsReport::Create( |
| timestamp_us); |
| @@ -704,9 +709,9 @@ void RTCStatsCollector::ProducePartialResultsOnNetworkThread( |
| timestamp_us, transport_cert_stats, report.get()); |
| ProduceCodecStats_n( |
| timestamp_us, *track_media_info_map_, report.get()); |
| - ProduceIceCandidateAndPairStats_n( |
| - timestamp_us, *session_stats, track_media_info_map_->video_media_info(), |
| - report.get()); |
| + ProduceIceCandidateAndPairStats_n(timestamp_us, *session_stats, |
| + track_media_info_map_->video_media_info(), |
| + call_stats, report.get()); |
| ProduceRTPStreamStats_n( |
| timestamp_us, *session_stats, *track_media_info_map_, report.get()); |
| ProduceTransportStats_n( |
| @@ -835,9 +840,11 @@ 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 { |
| + int64_t timestamp_us, |
| + const SessionStats& session_stats, |
| + const cricket::VideoMediaInfo* video_media_info, |
| + const Call::Stats& call_stats, |
| + RTCStatsReport* report) const { |
| RTC_DCHECK(network_thread_->IsCurrent()); |
| for (const auto& transport_stats : session_stats.transport_stats) { |
| for (const auto& channel_stats : transport_stats.second.channel_stats) { |
| @@ -879,24 +886,18 @@ void RTCStatsCollector::ProduceIceCandidateAndPairStats_n( |
| static_cast<double>(*info.current_round_trip_time_ms) / |
| rtc::kNumMillisecsPerSec; |
| } |
| - if (info.best_connection && video_media_info && |
| - !video_media_info->bw_estimations.empty()) { |
| + if (info.best_connection) { |
| // 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) { |
| + RTC_DCHECK_GE(call_stats.send_bandwidth_bps, 0); |
| + RTC_DCHECK_GE(call_stats.recv_bandwidth_bps, 0); |
| + if (call_stats.send_bandwidth_bps > 0) { |
| candidate_pair_stats->available_outgoing_bitrate = |
| - static_cast<double>(video_media_info->bw_estimations[0] |
| - .available_send_bandwidth); |
| + static_cast<double>(call_stats.send_bandwidth_bps); |
| } |
| - if (video_media_info->bw_estimations[0].available_recv_bandwidth) { |
| + if (call_stats.recv_bandwidth_bps > 0) { |
| candidate_pair_stats->available_incoming_bitrate = |
| - static_cast<double>(video_media_info->bw_estimations[0] |
| - .available_recv_bandwidth); |
| + static_cast<double>(call_stats.recv_bandwidth_bps); |
| } |
| } |
| candidate_pair_stats->requests_received = |