[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}
This commit is contained in:
Artem Titov 2022-09-21 09:28:56 +02:00 committed by WebRTC LUCI CQ
parent c9f66907fc
commit 2d1907bfd2
3 changed files with 53 additions and 15 deletions

View File

@ -644,6 +644,8 @@ if (!build_with_chromium) {
"../../../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",

View File

@ -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 @@ void DefaultAudioQualityAnalyzer::Stop() {
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);
}
}
}

View File

@ -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 @@ struct AudioStreamStats {
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 @@ class DefaultAudioQualityAnalyzer : public AudioQualityAnalyzerInterface {
const std::string& unit,
webrtc::test::ImproveDirection improve_direction) const;
test::MetricsLoggerAndExporter* const metrics_logger_;
std::string test_case_name_;
TrackIdStreamInfoMap* analyzer_helper_;