From 3fd9cbc7a0683538b0fb70a4c1483e9e8552a7cb Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Mon, 10 Jan 2022 17:41:43 +0100 Subject: [PATCH] stats: convert qualitylimitationdurations to seconds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the internal value is defined milliseconds https://webrtc.googlesource.com/src/+/refs/heads/main/video/g3doc/stats.md while the specification defines it in seconds https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationdurations BUG=webrtc:13548,webrtc:10686 Change-Id: I901c84214c77dd5a6e59f6556a029c8e20cb7672 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/245482 Reviewed-by: Henrik Boström Reviewed-by: Harald Alvestrand Commit-Queue: Philipp Hancke Cr-Commit-Position: refs/heads/main@{#35657} --- pc/rtc_stats_collector.cc | 5 ++++- pc/rtc_stats_collector_unittest.cc | 2 +- video/quality_limitation_reason_tracker.h | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc index 4735805342..8b6a5fb6cf 100644 --- a/pc/rtc_stats_collector.cc +++ b/pc/rtc_stats_collector.cc @@ -269,9 +269,12 @@ std::map QualityLimitationDurationToRTCQualityLimitationDuration( std::map durations_ms) { std::map result; + // The internal duration is defined in milliseconds while the spec defines + // the value in seconds: + // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationdurations for (const auto& elem : durations_ms) { result[QualityLimitationReasonToRTCQualityLimitationReason(elem.first)] = - elem.second; + elem.second / static_cast(rtc::kNumMillisecsPerSec); } return result; } diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc index fb9ba96f92..971d8d3b7f 100644 --- a/pc/rtc_stats_collector_unittest.cc +++ b/pc/rtc_stats_collector_unittest.cc @@ -2329,7 +2329,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) { expected_video.total_packet_send_delay = 10.0; expected_video.quality_limitation_reason = "bandwidth"; expected_video.quality_limitation_durations = std::map{ - std::pair{"bandwidth", 300.0}, + std::pair{"bandwidth", 0.3}, }; expected_video.quality_limitation_resolution_changes = 56u; expected_video.frame_width = 200u; diff --git a/video/quality_limitation_reason_tracker.h b/video/quality_limitation_reason_tracker.h index 22816a8272..15bc90773a 100644 --- a/video/quality_limitation_reason_tracker.h +++ b/video/quality_limitation_reason_tracker.h @@ -24,6 +24,8 @@ namespace webrtc { // duration of time spent in each reason. See qualityLimitationReason[1], // qualityLimitationDurations[2], and qualityLimitationResolutionChanges[3] in // the webrtc-stats spec. +// Note that the specification defines the durations in seconds while the +// internal data structures defines it in milliseconds. // [1] // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationreason // [2]