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

Unified Diff: webrtc/pc/rtcstatscollector.cc

Issue 2863123002: Wire up BWE stats through WebrtcSession so that they are filled in both for audio and video calls. (Closed)
Patch Set: Guard for call_->OnSentPacket. Created 3 years, 7 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/pc/rtcstatscollector.h ('k') | webrtc/pc/rtcstatscollector_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 =
« no previous file with comments | « webrtc/pc/rtcstatscollector.h ('k') | webrtc/pc/rtcstatscollector_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698