[PCLF] Add possibility to use new perf metrics api in DefaultAudioQualityAnalyzer

Bug: b/246095034
Change-Id: I045fd739ac31c0f13ee46adc831063d9773c39c7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276180
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38144}
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 93e8800..49897a3 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -644,6 +644,8 @@
       "../../../api:stats_observer_interface",
       "../../../api:track_id_stream_info_map",
       "../../../api/numerics",
+      "../../../api/test/metrics:metric",
+      "../../../api/test/metrics:metrics_logger_and_exporter",
       "../../../api/units:time_delta",
       "../../../api/units:timestamp",
       "../../../rtc_base:criticalsection",
diff --git a/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.cc b/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.cc
index 0577bcc..63b5960 100644
--- a/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.cc
+++ b/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.cc
@@ -12,11 +12,15 @@
 
 #include "api/stats/rtc_stats.h"
 #include "api/stats/rtcstats_objects.h"
+#include "api/test/metrics/metric.h"
 #include "rtc_base/logging.h"
 
 namespace webrtc {
 namespace webrtc_pc_e2e {
 
+using ::webrtc::test::ImprovementDirection;
+using ::webrtc::test::Unit;
+
 void DefaultAudioQualityAnalyzer::Start(std::string test_case_name,
                                         TrackIdStreamInfoMap* analyzer_helper) {
   test_case_name_ = std::move(test_case_name);
@@ -115,21 +119,44 @@
   using ::webrtc::test::ImproveDirection;
   MutexLock lock(&lock_);
   for (auto& item : streams_stats_) {
-    ReportResult("expand_rate", item.first, item.second.expand_rate, "unitless",
-                 ImproveDirection::kSmallerIsBetter);
-    ReportResult("accelerate_rate", item.first, item.second.accelerate_rate,
-                 "unitless", ImproveDirection::kSmallerIsBetter);
-    ReportResult("preemptive_rate", item.first, item.second.preemptive_rate,
-                 "unitless", ImproveDirection::kSmallerIsBetter);
-    ReportResult("speech_expand_rate", item.first,
-                 item.second.speech_expand_rate, "unitless",
-                 ImproveDirection::kSmallerIsBetter);
-    ReportResult("average_jitter_buffer_delay_ms", item.first,
-                 item.second.average_jitter_buffer_delay_ms, "ms",
-                 ImproveDirection::kNone);
-    ReportResult("preferred_buffer_size_ms", item.first,
-                 item.second.preferred_buffer_size_ms, "ms",
-                 ImproveDirection::kNone);
+    if (metrics_logger_ == nullptr) {
+      ReportResult("expand_rate", item.first, item.second.expand_rate,
+                   "unitless", ImproveDirection::kSmallerIsBetter);
+      ReportResult("accelerate_rate", item.first, item.second.accelerate_rate,
+                   "unitless", ImproveDirection::kSmallerIsBetter);
+      ReportResult("preemptive_rate", item.first, item.second.preemptive_rate,
+                   "unitless", ImproveDirection::kSmallerIsBetter);
+      ReportResult("speech_expand_rate", item.first,
+                   item.second.speech_expand_rate, "unitless",
+                   ImproveDirection::kSmallerIsBetter);
+      ReportResult("average_jitter_buffer_delay_ms", item.first,
+                   item.second.average_jitter_buffer_delay_ms, "ms",
+                   ImproveDirection::kNone);
+      ReportResult("preferred_buffer_size_ms", item.first,
+                   item.second.preferred_buffer_size_ms, "ms",
+                   ImproveDirection::kNone);
+    } else {
+      metrics_logger_->LogMetric("expand_rate", item.first,
+                                 item.second.expand_rate, Unit::kUnitless,
+                                 ImprovementDirection::kSmallerIsBetter);
+      metrics_logger_->LogMetric("accelerate_rate", item.first,
+                                 item.second.accelerate_rate, Unit::kUnitless,
+                                 ImprovementDirection::kSmallerIsBetter);
+      metrics_logger_->LogMetric("preemptive_rate", item.first,
+                                 item.second.preemptive_rate, Unit::kUnitless,
+                                 ImprovementDirection::kSmallerIsBetter);
+      metrics_logger_->LogMetric(
+          "speech_expand_rate", item.first, item.second.speech_expand_rate,
+          Unit::kUnitless, ImprovementDirection::kSmallerIsBetter);
+      metrics_logger_->LogMetric("average_jitter_buffer_delay_ms", item.first,
+                                 item.second.average_jitter_buffer_delay_ms,
+                                 Unit::kMilliseconds,
+                                 ImprovementDirection::kNeitherIsBetter);
+      metrics_logger_->LogMetric("preferred_buffer_size_ms", item.first,
+                                 item.second.preferred_buffer_size_ms,
+                                 Unit::kMilliseconds,
+                                 ImprovementDirection::kNeitherIsBetter);
+    }
   }
 }
 
diff --git a/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h b/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h
index 4ad0dd3..673f907 100644
--- a/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h
+++ b/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h
@@ -17,6 +17,7 @@
 #include "absl/strings/string_view.h"
 #include "api/numerics/samples_stats_counter.h"
 #include "api/test/audio_quality_analyzer_interface.h"
+#include "api/test/metrics/metrics_logger_and_exporter.h"
 #include "api/test/track_id_stream_info_map.h"
 #include "api/units/time_delta.h"
 #include "rtc_base/synchronization/mutex.h"
@@ -36,6 +37,12 @@
 
 class DefaultAudioQualityAnalyzer : public AudioQualityAnalyzerInterface {
  public:
+  DefaultAudioQualityAnalyzer()
+      : DefaultAudioQualityAnalyzer(/*metrics_logger=*/nullptr) {}
+  explicit DefaultAudioQualityAnalyzer(
+      test::MetricsLoggerAndExporter* const metrics_logger)
+      : metrics_logger_(metrics_logger) {}
+
   void Start(std::string test_case_name,
              TrackIdStreamInfoMap* analyzer_helper) override;
   void OnStatsReports(
@@ -65,6 +72,8 @@
                     const std::string& unit,
                     webrtc::test::ImproveDirection improve_direction) const;
 
+  test::MetricsLoggerAndExporter* const metrics_logger_;
+
   std::string test_case_name_;
   TrackIdStreamInfoMap* analyzer_helper_;