Add API to get raw stats value from DefaultAudioQualityAnalyzer
Bug: webrtc:10138
Change-Id: I60601a47c8dd8f669297d91825fe057f2b3da634
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133565
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27685}
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index e46f33d..7b9365b 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -385,6 +385,7 @@
"../../../api:libjingle_peerconnection_api",
"../../../api:stats_observer_interface",
"../../../api:track_id_stream_label_map",
+ "../../../rtc_base:criticalsection",
"../../../rtc_base:logging",
"../../../rtc_base:rtc_numerics",
"//third_party/abseil-cpp/absl/strings",
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 0c025a1..04bb7bf 100644
--- a/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.cc
+++ b/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.cc
@@ -10,8 +10,6 @@
#include "test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h"
-#include <string.h>
-
#include "api/stats_types.h"
#include "rtc_base/logging.h"
#include "test/testsupport/perf_test.h"
@@ -80,6 +78,8 @@
const std::string& stream_label =
GetStreamLabelFromStatsReport(stats_report);
+
+ rtc::CritScope crit(&lock_);
AudioStreamStats& audio_stream_stats = streams_stats_[stream_label];
audio_stream_stats.expand_rate.AddSample(expand_rate->float_val());
audio_stream_stats.accelerate_rate.AddSample(accelerate_rate->float_val());
@@ -106,6 +106,7 @@
}
void DefaultAudioQualityAnalyzer::Stop() {
+ rtc::CritScope crit(&lock_);
for (auto& item : streams_stats_) {
ReportResult("expand_rate", item.first, item.second.expand_rate,
"unitless");
@@ -120,6 +121,12 @@
}
}
+std::map<std::string, AudioStreamStats>
+DefaultAudioQualityAnalyzer::GetAudioStreamsStats() const {
+ rtc::CritScope crit(&lock_);
+ return streams_stats_;
+}
+
void DefaultAudioQualityAnalyzer::ReportResult(
const std::string& metric_name,
const std::string& stream_label,
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 75f9f34..019ab2e 100644
--- a/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h
+++ b/test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h
@@ -18,13 +18,13 @@
#include "api/stats_types.h"
#include "api/test/audio_quality_analyzer_interface.h"
#include "api/test/track_id_stream_label_map.h"
+#include "rtc_base/critical_section.h"
#include "rtc_base/numerics/samples_stats_counter.h"
namespace webrtc {
namespace webrtc_pc_e2e {
struct AudioStreamStats {
- public:
SamplesStatsCounter expand_rate;
SamplesStatsCounter accelerate_rate;
SamplesStatsCounter preemptive_rate;
@@ -42,6 +42,9 @@
const StatsReports& stats_reports) override;
void Stop() override;
+ // Returns audio quality stats per stream label.
+ std::map<std::string, AudioStreamStats> GetAudioStreamsStats() const;
+
private:
const std::string& GetStreamLabelFromStatsReport(
const StatsReport* stats_report) const;
@@ -53,7 +56,9 @@
std::string test_case_name_;
TrackIdStreamLabelMap* analyzer_helper_;
- std::map<std::string, AudioStreamStats> streams_stats_;
+
+ rtc::CriticalSection lock_;
+ std::map<std::string, AudioStreamStats> streams_stats_ RTC_GUARDED_BY(lock_);
};
} // namespace webrtc_pc_e2e