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);