Report interframe delay sum in old GetStats

BUG=webrtc:7420

Review-Url: https://codereview.webrtc.org/2965033002
Cr-Commit-Position: refs/heads/master@{#18924}
This commit is contained in:
ilnik 2017-07-07 01:26:24 -07:00 committed by Commit Bot
parent 5b361730d0
commit f04afde85a
8 changed files with 35 additions and 0 deletions

View File

@ -538,6 +538,8 @@ const char* StatsReport::Value::display_name() const {
return "googFrameWidthSent";
case kStatsValueNameInitiator:
return "googInitiator";
case kStatsValueNameInterframeDelaySumMs:
return "googInterframeDelaySum";
case kStatsValueNameIssuerId:
return "googIssuerId";
case kStatsValueNameJitterReceived:

View File

@ -107,6 +107,7 @@ class StatsReport {
kStatsValueNameDataChannelId,
kStatsValueNameFramesDecoded,
kStatsValueNameFramesEncoded,
kStatsValueNameInterframeDelaySumMs,
kStatsValueNameMediaType,
kStatsValueNamePacketsLost,
kStatsValueNamePacketsReceived,

View File

@ -741,6 +741,7 @@ struct VideoReceiverInfo : public MediaReceiverInfo {
frames_received(0),
frames_decoded(0),
frames_rendered(0),
interframe_delay_sum_ms(0),
decode_ms(0),
max_decode_ms(0),
jitter_buffer_ms(0),
@ -770,6 +771,7 @@ struct VideoReceiverInfo : public MediaReceiverInfo {
uint32_t frames_decoded;
uint32_t frames_rendered;
rtc::Optional<uint64_t> qp_sum;
uint64_t interframe_delay_sum_ms;
// All stats below are gathered per-VideoReceiver, but some will be correlated
// across MediaStreamTracks. NOTE(hta): when sinking stats into per-SSRC

View File

@ -2477,6 +2477,8 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::GetVideoReceiverInfo(
info.frames_rendered = stats.frames_rendered;
info.qp_sum = stats.qp_sum;
info.interframe_delay_sum_ms = stats.interframe_delay_sum_ms;
info.codec_name = GetCodecNameFromPayloadType(stats.current_payload_type);
info.firs_sent = stats.rtcp_packet_type_counts.fir_packets;

View File

@ -249,10 +249,14 @@ void ExtractStats(const cricket::VideoReceiverInfo& info, StatsReport* report) {
for (const auto& i : ints)
report->AddInt(i.name, i.value);
report->AddString(StatsReport::kStatsValueNameMediaType, "video");
if (info.timing_frame_info) {
report->AddString(StatsReport::kStatsValueNameTimingFrameInfo,
info.timing_frame_info->ToString());
}
report->AddInt64(StatsReport::kStatsValueNameInterframeDelaySumMs,
info.interframe_delay_sum_ms);
}
void ExtractStats(const cricket::VideoSenderInfo& info, StatsReport* report) {

View File

@ -573,6 +573,7 @@ void ReceiveStatisticsProxy::OnDecodedFrame(rtc::Optional<uint8_t> qp,
if (last_decoded_frame_time_ms_) {
int64_t interframe_delay_ms = now - *last_decoded_frame_time_ms_;
RTC_DCHECK_GE(interframe_delay_ms, 0);
stats_.interframe_delay_sum_ms += interframe_delay_ms;
if (last_content_type_ == VideoContentType::SCREENSHARE) {
interframe_delay_counter_screenshare_.Add(interframe_delay_ms);
if (interframe_delay_max_ms_screenshare_ < interframe_delay_ms) {

View File

@ -97,6 +97,28 @@ TEST_F(ReceiveStatisticsProxyTest, OnDecodedFrameIncreasesQpSum) {
statistics_proxy_->GetStats().qp_sum);
}
TEST_F(ReceiveStatisticsProxyTest,
OnDecodedFrameIncreasesInterframeDelayMsSum) {
const uint64_t kInterframeDelayMs1 = 100;
const uint64_t kInterframeDelayMs2 = 200;
EXPECT_EQ(0u, statistics_proxy_->GetStats().interframe_delay_sum_ms);
statistics_proxy_->OnDecodedFrame(rtc::Optional<uint8_t>(3u),
VideoContentType::UNSPECIFIED);
EXPECT_EQ(0u, statistics_proxy_->GetStats().interframe_delay_sum_ms);
fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs1);
statistics_proxy_->OnDecodedFrame(rtc::Optional<uint8_t>(127u),
VideoContentType::UNSPECIFIED);
EXPECT_EQ(kInterframeDelayMs1,
statistics_proxy_->GetStats().interframe_delay_sum_ms);
fake_clock_.AdvanceTimeMilliseconds(kInterframeDelayMs2);
statistics_proxy_->OnDecodedFrame(rtc::Optional<uint8_t>(127u),
VideoContentType::UNSPECIFIED);
EXPECT_EQ(kInterframeDelayMs1 + kInterframeDelayMs2,
statistics_proxy_->GetStats().interframe_delay_sum_ms);
}
TEST_F(ReceiveStatisticsProxyTest, OnDecodedFrameWithoutQpQpSumWontExist) {
EXPECT_EQ(rtc::Optional<uint64_t>(), statistics_proxy_->GetStats().qp_sum);
statistics_proxy_->OnDecodedFrame(rtc::Optional<uint8_t>(),

View File

@ -69,6 +69,7 @@ class VideoReceiveStream {
int jitter_buffer_ms = 0;
int min_playout_delay_ms = 0;
int render_delay_ms = 10;
uint64_t interframe_delay_sum_ms = 0;
uint32_t frames_decoded = 0;
rtc::Optional<uint64_t> qp_sum;