Add a method to log AnalyzingVideoSink metrics.

Change-Id: I19a954f4341c6581d89a8fecf8f2646bb3fe46f4
Bug: b/282154243
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/310140
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#40353}
diff --git a/test/pc/e2e/analyzer/video/BUILD.gn b/test/pc/e2e/analyzer/video/BUILD.gn
index 6ce0c49..17876e5 100644
--- a/test/pc/e2e/analyzer/video/BUILD.gn
+++ b/test/pc/e2e/analyzer/video/BUILD.gn
@@ -345,10 +345,13 @@
     ":analyzing_video_sinks_helper",
     ":simulcast_dummy_buffer_helper",
     ":video_dumping",
+    "../..:metric_metadata_keys",
     "../../../..:fixed_fps_video_frame_writer_adapter",
     "../../../..:test_renderer",
     "../../../../../api:video_quality_analyzer_api",
     "../../../../../api/numerics",
+    "../../../../../api/test/metrics:metric",
+    "../../../../../api/test/metrics:metrics_logger",
     "../../../../../api/test/pclf:media_configuration",
     "../../../../../api/test/video:video_frame_writer",
     "../../../../../api/units:timestamp",
diff --git a/test/pc/e2e/analyzer/video/analyzing_video_sink.cc b/test/pc/e2e/analyzer/video/analyzing_video_sink.cc
index fb221e6..2392483 100644
--- a/test/pc/e2e/analyzer/video/analyzing_video_sink.cc
+++ b/test/pc/e2e/analyzer/video/analyzing_video_sink.cc
@@ -16,6 +16,8 @@
 #include "absl/memory/memory.h"
 #include "absl/strings/string_view.h"
 #include "absl/types/optional.h"
+#include "api/test/metrics/metric.h"
+#include "api/test/metrics/metrics_logger.h"
 #include "api/test/pclf/media_configuration.h"
 #include "api/test/video/video_frame_writer.h"
 #include "api/units/timestamp.h"
@@ -26,6 +28,7 @@
 #include "rtc_base/synchronization/mutex.h"
 #include "test/pc/e2e/analyzer/video/simulcast_dummy_buffer_helper.h"
 #include "test/pc/e2e/analyzer/video/video_dumping.h"
+#include "test/pc/e2e/metric_metadata_keys.h"
 #include "test/testsupport/fixed_fps_video_frame_writer_adapter.h"
 #include "test/video_renderer.h"
 
@@ -108,6 +111,26 @@
   }
 }
 
+void AnalyzingVideoSink::LogMetrics(webrtc::test::MetricsLogger& metrics_logger,
+                                    absl::string_view test_case_name) const {
+  if (report_infra_stats_) {
+    MutexLock lock(&mutex_);
+    const std::string test_case(test_case_name);
+    // TODO(bugs.webrtc.org/14757): Remove kExperimentalTestNameMetadataKey.
+    std::map<std::string, std::string> metadata = {
+        {MetricMetadataKey::kPeerMetadataKey, peer_name_},
+        {MetricMetadataKey::kExperimentalTestNameMetadataKey, test_case}};
+    metrics_logger.LogMetric(
+        "analyzing_sink_processing_time_ms", test_case + "/" + peer_name_,
+        stats_.analyzing_sink_processing_time_ms, test::Unit::kMilliseconds,
+        test::ImprovementDirection::kSmallerIsBetter, metadata);
+    metrics_logger.LogMetric("scaling_tims_ms", test_case + "/" + peer_name_,
+                             stats_.scaling_tims_ms, test::Unit::kMilliseconds,
+                             test::ImprovementDirection::kSmallerIsBetter,
+                             metadata);
+  }
+}
+
 AnalyzingVideoSink::Stats AnalyzingVideoSink::stats() const {
   MutexLock lock(&mutex_);
   return stats_;
diff --git a/test/pc/e2e/analyzer/video/analyzing_video_sink.h b/test/pc/e2e/analyzer/video/analyzing_video_sink.h
index 1834bbe..4c7fbeb 100644
--- a/test/pc/e2e/analyzer/video/analyzing_video_sink.h
+++ b/test/pc/e2e/analyzer/video/analyzing_video_sink.h
@@ -18,6 +18,7 @@
 
 #include "absl/strings/string_view.h"
 #include "api/numerics/samples_stats_counter.h"
+#include "api/test/metrics/metrics_logger.h"
 #include "api/test/pclf/media_configuration.h"
 #include "api/test/video/video_frame_writer.h"
 #include "api/test/video_quality_analyzer_interface.h"
@@ -56,6 +57,9 @@
 
   void OnFrame(const VideoFrame& frame) override;
 
+  void LogMetrics(webrtc::test::MetricsLogger& metrics_logger,
+                  absl::string_view test_case_name) const;
+
   Stats stats() const;
 
  private: