From 3719a0c4e81282471c1c5312a46c1e09460d41d4 Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Mon, 4 Jul 2022 18:24:46 +0200 Subject: [PATCH] stats: use decoded framerate for inbound-rtp framesPerSecond MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit instead of the framerate received on the network. This is specified in https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-framespersecond BUG=webrtc:13765 Change-Id: I9a0a89d29de49ac5257254deae9b7e5212e09363 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/267409 Reviewed-by: Harald Alvestrand Reviewed-by: Henrik Boström Commit-Queue: Philipp Hancke Cr-Commit-Position: refs/heads/main@{#37422} --- pc/rtc_stats_collector.cc | 4 ++-- pc/rtc_stats_collector_unittest.cc | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc index 7f7218e2ab..63343888ac 100644 --- a/pc/rtc_stats_collector.cc +++ b/pc/rtc_stats_collector.cc @@ -550,8 +550,8 @@ void SetInboundRTPStreamStatsFromVideoReceiverInfo( inbound_video->frame_height = static_cast(video_receiver_info.frame_height); } - if (video_receiver_info.framerate_rcvd > 0) { - inbound_video->frames_per_second = video_receiver_info.framerate_rcvd; + if (video_receiver_info.framerate_decoded > 0) { + inbound_video->frames_per_second = video_receiver_info.framerate_decoded; } if (video_receiver_info.qp_sum) inbound_video->qp_sum = *video_receiver_info.qp_sum; diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc index 8a10a7ddae..8ea13cfb5b 100644 --- a/pc/rtc_stats_collector_unittest.cc +++ b/pc/rtc_stats_collector_unittest.cc @@ -2189,9 +2189,14 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { video_media_info.receivers[0].decoder_implementation_name = ""; video_media_info.receivers[0].min_playout_delay_ms = 50; + // Note: these two values intentionally differ, + // only the decoded one should show up. + video_media_info.receivers[0].framerate_rcvd = 15; + video_media_info.receivers[0].framerate_decoded = 5; + RtpCodecParameters codec_parameters; codec_parameters.payload_type = 42; - codec_parameters.kind = cricket::MEDIA_TYPE_AUDIO; + codec_parameters.kind = cricket::MEDIA_TYPE_VIDEO; codec_parameters.name = "dummy"; codec_parameters.clock_rate = 0; video_media_info.receive_codecs.insert( @@ -2239,6 +2244,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { // `expected_video.content_type` should be undefined. // `expected_video.decoder_implementation` should be undefined. expected_video.min_playout_delay = 0.05; + expected_video.frames_per_second = 5; ASSERT_TRUE(report->Get(expected_video.id())); EXPECT_EQ(