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}
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc
index 77418b7..fe25e97 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc
@@ -234,6 +234,15 @@
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);
+ }
+ }
}
}
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc
index 2cfb0c3..436e877 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc
@@ -27,6 +27,7 @@
namespace {
using ::testing::Contains;
+using ::testing::Each;
using ::testing::Eq;
using ::testing::IsEmpty;
using ::testing::Pair;
@@ -150,6 +151,13 @@
<< 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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);