Use 0 as a default value for freeze_time_ms.

Bug: b/264376586
Change-Id: I694ad6cf1105dc335967a3bdb99c0bf52f08b7d1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290561
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39000}
This commit is contained in:
Mirko Bonadei 2023-01-04 16:33:51 +01:00 committed by WebRTC LUCI CQ
parent 17043b89ae
commit 5dbd1ed1b5
2 changed files with 32 additions and 15 deletions

View File

@ -234,6 +234,15 @@ void DefaultVideoQualityAnalyzerFramesComparator::Stop(
last_rendered_frame_time - stream_last_freeze_end_time_.at(stats_key),
Now(), /*metadata=*/{}));
}
// Freeze Time:
// If there were no freezes on a video stream, add only one sample with
// value 0 (0ms freezes time).
for (auto& [key, stream_stats] : stream_stats_) {
if (stream_stats.freeze_time_ms.IsEmpty()) {
stream_stats.freeze_time_ms.AddSample(0);
}
}
}
}

View File

@ -27,6 +27,7 @@ namespace webrtc {
namespace {
using ::testing::Contains;
using ::testing::Each;
using ::testing::Eq;
using ::testing::IsEmpty;
using ::testing::Pair;
@ -150,6 +151,13 @@ void expectEmpty(const SamplesRateCounter& counter) {
<< counter.GetEventsPerSecond();
}
void ExpectSizeAndAllElementsAre(const SamplesStatsCounter& counter,
int size,
double value) {
EXPECT_EQ(counter.NumSamples(), size);
EXPECT_THAT(counter.GetSamples(), Each(Eq(value)));
}
TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
StatsPresentedAfterAddingOneComparison) {
DefaultVideoQualityAnalyzerCpuMeasurer cpu_measurer;
@ -383,7 +391,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
expectEmpty(stats.target_encode_bitrate);
@ -443,7 +451,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
expectEmpty(stats.target_encode_bitrate);
@ -513,7 +521,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -584,7 +592,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -660,7 +668,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -743,7 +751,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.decode_time_ms), 10.0);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
EXPECT_GE(GetFirstOrDie(stats.resolution_of_decoded_frame), 200 * 100.0);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -824,7 +832,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -887,7 +895,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
expectEmpty(stats.target_encode_bitrate);
@ -947,7 +955,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
expectEmpty(stats.target_encode_bitrate);
@ -1017,7 +1025,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -1088,7 +1096,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -1162,7 +1170,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -1246,7 +1254,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -1327,7 +1335,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
expectEmpty(stats.decode_time_ms);
expectEmpty(stats.receive_to_render_time_ms);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
expectEmpty(stats.resolution_of_decoded_frame);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);
@ -1416,7 +1424,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest,
EXPECT_GE(GetFirstOrDie(stats.decode_time_ms), 10.0);
EXPECT_GE(GetFirstOrDie(stats.receive_to_render_time_ms), 30.0);
expectEmpty(stats.skipped_between_rendered);
expectEmpty(stats.freeze_time_ms);
ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0);
expectEmpty(stats.time_between_freezes_ms);
EXPECT_GE(GetFirstOrDie(stats.resolution_of_decoded_frame), 200 * 100.0);
EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);