Add a placeholder stat for logging the estimated residual echo likelihood.
The stat is currently always set to zero until the residual echo detector has landed.
BUG=webrtc:6525
Review-Url: https://codereview.webrtc.org/2431443003
Cr-Commit-Position: refs/heads/master@{#14721}
diff --git a/webrtc/api/call/audio_send_stream.h b/webrtc/api/call/audio_send_stream.h
index ae7531c..1956b97 100644
--- a/webrtc/api/call/audio_send_stream.h
+++ b/webrtc/api/call/audio_send_stream.h
@@ -46,6 +46,7 @@
int32_t echo_delay_std_ms = -1;
int32_t echo_return_loss = -100;
int32_t echo_return_loss_enhancement = -100;
+ float residual_echo_likelihood = -1.0f;
bool typing_noise_detected = false;
};
diff --git a/webrtc/api/mediastreaminterface.h b/webrtc/api/mediastreaminterface.h
index 988ee84..f813dda 100644
--- a/webrtc/api/mediastreaminterface.h
+++ b/webrtc/api/mediastreaminterface.h
@@ -195,8 +195,9 @@
echo_return_loss(0),
echo_return_loss_enhancement(0),
echo_delay_median_ms(0),
- aec_quality_min(0.0),
echo_delay_std_ms(0),
+ aec_quality_min(0.0),
+ residual_echo_likelihood(0.0f),
aec_divergent_filter_fraction(0.0) {}
~AudioProcessorStats() {}
@@ -204,8 +205,9 @@
int echo_return_loss;
int echo_return_loss_enhancement;
int echo_delay_median_ms;
- float aec_quality_min;
int echo_delay_std_ms;
+ float aec_quality_min;
+ float residual_echo_likelihood;
float aec_divergent_filter_fraction;
};
diff --git a/webrtc/api/statscollector.cc b/webrtc/api/statscollector.cc
index 766e949..d150045 100644
--- a/webrtc/api/statscollector.cc
+++ b/webrtc/api/statscollector.cc
@@ -103,7 +103,8 @@
int echo_return_loss_enhancement,
int echo_delay_median_ms,
float aec_quality_min,
- int echo_delay_std_ms) {
+ int echo_delay_std_ms,
+ float residual_echo_likelihood) {
report->AddBoolean(StatsReport::kStatsValueNameTypingNoiseState,
typing_noise_detected);
if (aec_quality_min >= 0.0f) {
@@ -123,6 +124,10 @@
report->AddInt(StatsReport::kStatsValueNameEchoReturnLoss, echo_return_loss);
report->AddInt(StatsReport::kStatsValueNameEchoReturnLossEnhancement,
echo_return_loss_enhancement);
+ if (residual_echo_likelihood >= 0.0f) {
+ report->AddFloat(StatsReport::kStatsValueNameResidualEchoLikelihood,
+ residual_echo_likelihood);
+ }
}
void ExtractStats(const cricket::VoiceReceiverInfo& info, StatsReport* report) {
@@ -181,7 +186,8 @@
SetAudioProcessingStats(
report, info.typing_noise_detected, info.echo_return_loss,
info.echo_return_loss_enhancement, info.echo_delay_median_ms,
- info.aec_quality_min, info.echo_delay_std_ms);
+ info.aec_quality_min, info.echo_delay_std_ms,
+ info.residual_echo_likelihood);
RTC_DCHECK_GE(info.audio_level, 0);
const IntForAdd ints[] = {
@@ -926,7 +932,8 @@
SetAudioProcessingStats(
report, stats.typing_noise_detected, stats.echo_return_loss,
stats.echo_return_loss_enhancement, stats.echo_delay_median_ms,
- stats.aec_quality_min, stats.echo_delay_std_ms);
+ stats.aec_quality_min, stats.echo_delay_std_ms,
+ stats.residual_echo_likelihood);
report->AddFloat(StatsReport::kStatsValueNameAecDivergentFilterFraction,
stats.aec_divergent_filter_fraction);
diff --git a/webrtc/api/statscollector_unittest.cc b/webrtc/api/statscollector_unittest.cc
index 8d5978f..866e76f 100644
--- a/webrtc/api/statscollector_unittest.cc
+++ b/webrtc/api/statscollector_unittest.cc
@@ -402,8 +402,13 @@
&value_in_report));
EXPECT_EQ(rtc::ToString<int>(sinfo.echo_return_loss_enhancement),
value_in_report);
- EXPECT_TRUE(GetValue(
- report, StatsReport::kStatsValueNameAudioInputLevel, &value_in_report));
+ EXPECT_TRUE(GetValue(report,
+ StatsReport::kStatsValueNameResidualEchoLikelihood,
+ &value_in_report));
+ EXPECT_EQ(rtc::ToString<float>(sinfo.residual_echo_likelihood),
+ value_in_report);
+ EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameAudioInputLevel,
+ &value_in_report));
EXPECT_EQ(rtc::ToString<int>(sinfo.audio_level), value_in_report);
EXPECT_TRUE(GetValue(
report, StatsReport::kStatsValueNameTypingNoiseState, &value_in_report));
diff --git a/webrtc/api/statstypes.cc b/webrtc/api/statstypes.cc
index 339d5bb..391a938 100644
--- a/webrtc/api/statstypes.cc
+++ b/webrtc/api/statstypes.cc
@@ -568,6 +568,8 @@
return "googRemoteCandidateType";
case kStatsValueNameRemoteCertificateId:
return "remoteCertificateId";
+ case kStatsValueNameResidualEchoLikelihood:
+ return "googResidualEchoLikelihood";
case kStatsValueNameRetransmitBitrate:
return "googRetransmitBitrate";
case kStatsValueNameRtt:
diff --git a/webrtc/api/statstypes.h b/webrtc/api/statstypes.h
index a0a85c9..edcfcfd 100644
--- a/webrtc/api/statstypes.h
+++ b/webrtc/api/statstypes.h
@@ -198,6 +198,7 @@
kStatsValueNameRemoteCandidateType,
kStatsValueNameRemoteCertificateId,
kStatsValueNameRenderDelayMs,
+ kStatsValueNameResidualEchoLikelihood,
kStatsValueNameRetransmitBitrate,
kStatsValueNameRtt,
kStatsValueNameSecondaryDecodedRate,