Add audio energy metric.
More details on audio energy can be found here: https://w3c.github.io/webrtc-stats/#dom-rtcaudiosourcestats-totalaudioenergy Change-Id: Ie8b543c0c3d2136f453c6731945f93de4c38218c Bug: b/272781101 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/310121 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Jeremy Leconte <jleconte@google.com> Cr-Commit-Position: refs/heads/main@{#40352}
This commit is contained in:
parent
38aa4ef5f4
commit
34589929fe
@ -62,6 +62,9 @@ void DefaultAudioQualityAnalyzer::OnStatsReports(
|
||||
TimeDelta::Seconds(stat->jitter_buffer_target_delay.ValueOrDefault(0.));
|
||||
sample.jitter_buffer_emitted_count =
|
||||
stat->jitter_buffer_emitted_count.ValueOrDefault(0ul);
|
||||
sample.total_samples_duration =
|
||||
stat->total_samples_duration.ValueOrDefault(0.);
|
||||
sample.total_audio_energy = stat->total_audio_energy.ValueOrDefault(0.);
|
||||
|
||||
TrackIdStreamInfoMap::StreamInfo stream_info =
|
||||
analyzer_helper_->GetStreamInfoFromTrackId(*stat->track_identifier);
|
||||
@ -115,6 +118,9 @@ void DefaultAudioQualityAnalyzer::OnStatsReports(
|
||||
jitter_buffer_target_delay_diff.ms<double>() /
|
||||
jitter_buffer_emitted_count_diff);
|
||||
}
|
||||
audio_stream_stats.energy.AddSample(sqrt(
|
||||
(sample.total_audio_energy - prev_sample.total_audio_energy) /
|
||||
(sample.total_samples_duration - prev_sample.total_samples_duration)));
|
||||
|
||||
last_stats_sample_[stream_info.stream_label] = sample;
|
||||
}
|
||||
@ -161,6 +167,10 @@ void DefaultAudioQualityAnalyzer::Stop() {
|
||||
"preferred_buffer_size_ms", GetTestCaseName(item.first),
|
||||
item.second.preferred_buffer_size_ms, Unit::kMilliseconds,
|
||||
ImprovementDirection::kNeitherIsBetter, metric_metadata);
|
||||
metrics_logger_->LogMetric("energy", GetTestCaseName(item.first),
|
||||
item.second.energy, Unit::kUnitless,
|
||||
ImprovementDirection::kNeitherIsBetter,
|
||||
metric_metadata);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ struct AudioStreamStats {
|
||||
SamplesStatsCounter speech_expand_rate;
|
||||
SamplesStatsCounter average_jitter_buffer_delay_ms;
|
||||
SamplesStatsCounter preferred_buffer_size_ms;
|
||||
SamplesStatsCounter energy;
|
||||
};
|
||||
|
||||
class DefaultAudioQualityAnalyzer : public AudioQualityAnalyzerInterface {
|
||||
@ -59,6 +60,8 @@ class DefaultAudioQualityAnalyzer : public AudioQualityAnalyzerInterface {
|
||||
TimeDelta jitter_buffer_delay = TimeDelta::Zero();
|
||||
TimeDelta jitter_buffer_target_delay = TimeDelta::Zero();
|
||||
uint64_t jitter_buffer_emitted_count = 0;
|
||||
double total_samples_duration = 0.0;
|
||||
double total_audio_energy = 0.0;
|
||||
};
|
||||
|
||||
std::string GetTestCaseName(const std::string& stream_label) const;
|
||||
|
||||
@ -1090,10 +1090,32 @@ TEST(PeerConnectionE2EQualityTestMetricNamesTest,
|
||||
.name = "video_ahead_ms",
|
||||
.unit = Unit::kMilliseconds,
|
||||
.improvement_direction = ImprovementDirection::kSmallerIsBetter,
|
||||
.metadata =
|
||||
{{MetricMetadataKey::kAudioStreamMetadataKey, "bob_video"},
|
||||
{MetricMetadataKey::kPeerMetadataKey, "alice"},
|
||||
{MetricMetadataKey::kPeerSyncGroupMetadataKey, "bob"},
|
||||
{MetricMetadataKey::kReceiverMetadataKey, "alice"},
|
||||
{MetricMetadataKey::kExperimentalTestNameMetadataKey,
|
||||
"test_case"}}},
|
||||
MetricValidationInfo{
|
||||
.test_case = "test_case/alice_audio",
|
||||
.name = "energy",
|
||||
.unit = Unit::kUnitless,
|
||||
.improvement_direction = ImprovementDirection::kNeitherIsBetter,
|
||||
.metadata = {{MetricMetadataKey::kAudioStreamMetadataKey,
|
||||
"alice_audio"},
|
||||
{MetricMetadataKey::kPeerMetadataKey, "bob"},
|
||||
{MetricMetadataKey::kReceiverMetadataKey, "bob"},
|
||||
{MetricMetadataKey::kExperimentalTestNameMetadataKey,
|
||||
"test_case"}}},
|
||||
MetricValidationInfo{
|
||||
.test_case = "test_case/bob_audio",
|
||||
.name = "energy",
|
||||
.unit = Unit::kUnitless,
|
||||
.improvement_direction = ImprovementDirection::kNeitherIsBetter,
|
||||
.metadata = {
|
||||
{MetricMetadataKey::kAudioStreamMetadataKey, "bob_video"},
|
||||
{MetricMetadataKey::kAudioStreamMetadataKey, "bob_audio"},
|
||||
{MetricMetadataKey::kPeerMetadataKey, "alice"},
|
||||
{MetricMetadataKey::kPeerSyncGroupMetadataKey, "bob"},
|
||||
{MetricMetadataKey::kReceiverMetadataKey, "alice"},
|
||||
{MetricMetadataKey::kExperimentalTestNameMetadataKey,
|
||||
"test_case"}}}));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user