Add calculation of actual encode bitrate into DefaultVideoQualityAnalyzer

Bug: webrtc:11381
Change-Id: Ic636412fef5e4134f47974fe24a24d8c7636bcdd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171107
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30860}
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
index 7f61a37..81a0448 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
@@ -192,6 +192,7 @@
     stream_frame_counters_[it->second.stream_label].encoded++;
   }
   it->second.encoded_time = Now();
+  it->second.encoded_image_size = encoded_image.size();
 }
 
 void DefaultVideoQualityAnalyzer::OnFrameDropped(
@@ -515,6 +516,7 @@
     stats->encode_time_ms.AddSample(
         (frame_stats.encoded_time - frame_stats.pre_encode_time).ms());
     stats->encode_frame_rate.AddEvent(frame_stats.encoded_time);
+    stats->total_encoded_images_payload += frame_stats.encoded_image_size;
   } else {
     if (frame_stats.pre_encode_time.IsFinite()) {
       stats->dropped_by_encoder++;
@@ -590,6 +592,7 @@
     const StreamStats& stats,
     const FrameCounters& frame_counters) {
   using ::webrtc::test::ImproveDirection;
+  TimeDelta test_duration = Now() - start_time_;
 
   double sum_squared_interframe_delays_secs = 0;
   Timestamp video_start_time = Timestamp::PlusInfinity();
@@ -667,6 +670,11 @@
                     /*important=*/false, ImproveDirection::kSmallerIsBetter);
   ReportResult("max_skipped", test_case_name, stats.skipped_between_rendered,
                "count", ImproveDirection::kSmallerIsBetter);
+  test::PrintResult(
+      "actual_encode_bitrate", "", test_case_name,
+      static_cast<double>(stats.total_encoded_images_payload) /
+          static_cast<double>(test_duration.us()) * kMicrosPerSecond,
+      "bytesPerSecond", /*important=*/false, ImproveDirection::kNone);
 }
 
 void DefaultVideoQualityAnalyzer::ReportResult(
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h
index 219a77b..31e4267 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h
@@ -102,6 +102,7 @@
   SamplesStatsCounter time_between_freezes_ms;
   SamplesStatsCounter resolution_of_rendered_frame;
 
+  int64_t total_encoded_images_payload = 0;
   int64_t dropped_by_encoder = 0;
   int64_t dropped_before_encoder = 0;
 };
@@ -182,6 +183,8 @@
 
     absl::optional<int> rendered_frame_width = absl::nullopt;
     absl::optional<int> rendered_frame_height = absl::nullopt;
+
+    int64_t encoded_image_size = 0;
   };
 
   // Describes why comparison was done in overloaded mode (without calculating
diff --git a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
index 2c7eb0e..b461c6a 100644
--- a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
+++ b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
@@ -42,16 +42,12 @@
     const webrtc::StatsReport::Value* transmission_bitrate =
         stats_report->FindValue(
             StatsReport::StatsValueName::kStatsValueNameTransmitBitrate);
-    const webrtc::StatsReport::Value* actual_encode_bitrate =
-        stats_report->FindValue(
-            StatsReport::StatsValueName::kStatsValueNameActualEncBitrate);
     const webrtc::StatsReport::Value* target_encode_bitrate =
         stats_report->FindValue(
             StatsReport::StatsValueName::kStatsValueNameTargetEncBitrate);
     RTC_CHECK(available_send_bandwidth);
     RTC_CHECK(retransmission_bitrate);
     RTC_CHECK(transmission_bitrate);
-    RTC_CHECK(actual_encode_bitrate);
     RTC_CHECK(target_encode_bitrate);
 
     rtc::CritScope crit(&video_bwe_stats_lock_);
@@ -62,8 +58,6 @@
         transmission_bitrate->int_val());
     video_bwe_stats.retransmission_bitrate.AddSample(
         retransmission_bitrate->int_val());
-    video_bwe_stats.actual_encode_bitrate.AddSample(
-        actual_encode_bitrate->int_val());
     video_bwe_stats.target_encode_bitrate.AddSample(
         target_encode_bitrate->int_val());
   }
@@ -93,9 +87,6 @@
   ReportResult("retransmission_bitrate", test_case_name,
                video_bwe_stats.retransmission_bitrate / kBitsInByte,
                "bytesPerSecond");
-  ReportResult("actual_encode_bitrate", test_case_name,
-               video_bwe_stats.actual_encode_bitrate / kBitsInByte,
-               "bytesPerSecond");
   ReportResult("target_encode_bitrate", test_case_name,
                video_bwe_stats.target_encode_bitrate / kBitsInByte,
                "bytesPerSecond");
diff --git a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h
index 28cb0d8..fe2f169 100644
--- a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h
+++ b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h
@@ -26,7 +26,6 @@
   SamplesStatsCounter available_send_bandwidth;
   SamplesStatsCounter transmission_bitrate;
   SamplesStatsCounter retransmission_bitrate;
-  SamplesStatsCounter actual_encode_bitrate;
   SamplesStatsCounter target_encode_bitrate;
 };