[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_;