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]