Surface ResidualEchoDetector creation to API

This allows users to inject the residual echo detector, as a step toward making it an optional part of compilation.

Bug: webrtc:11292, webrtc:11539
Change-Id: I7fcc8dbaced67a82851cd6cdcbc115eb01c21fcf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174040
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31222}
This commit is contained in:
Sam Zackrisson
2020-05-12 10:48:19 +02:00
committed by Commit Bot
parent 5c1a56540b
commit b0bd0708d6
6 changed files with 68 additions and 4 deletions

View File

@ -246,6 +246,10 @@ specific_include_rules = {
"+modules/audio_processing/include/audio_processing.h", "+modules/audio_processing/include/audio_processing.h",
], ],
"echo_detector_creator\.h": [
"+modules/audio_processing/include/audio_processing.h",
],
"fake_frame_decryptor\.h": [ "fake_frame_decryptor\.h": [
"+rtc_base/ref_counted_object.h", "+rtc_base/ref_counted_object.h",
], ],

View File

@ -87,3 +87,17 @@ rtc_source_set("echo_control") {
sources = [ "echo_control.h" ] sources = [ "echo_control.h" ]
deps = [ "../../rtc_base:checks" ] deps = [ "../../rtc_base:checks" ]
} }
rtc_source_set("echo_detector_creator") {
visibility = [ "*" ]
sources = [
"echo_detector_creator.cc",
"echo_detector_creator.h",
]
deps = [
"../../api:scoped_refptr",
"../../modules/audio_processing:api",
"../../modules/audio_processing:audio_processing",
"../../rtc_base:refcount",
]
}

View File

@ -0,0 +1,21 @@
/*
* Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "api/audio/echo_detector_creator.h"
#include "modules/audio_processing/residual_echo_detector.h"
#include "rtc_base/ref_counted_object.h"
namespace webrtc {
rtc::scoped_refptr<EchoDetector> CreateEchoDetector() {
return new rtc::RefCountedObject<ResidualEchoDetector>();
}
} // namespace webrtc

View File

@ -0,0 +1,26 @@
/*
* Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef API_AUDIO_ECHO_DETECTOR_CREATOR_H_
#define API_AUDIO_ECHO_DETECTOR_CREATOR_H_
#include "api/scoped_refptr.h"
#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
// Returns an instance of the WebRTC implementation of a residual echo detector.
// It can be provided to the webrtc::AudioProcessingBuilder to obtain the
// usual residual echo metrics.
rtc::scoped_refptr<EchoDetector> CreateEchoDetector();
} // namespace webrtc
#endif // API_AUDIO_ECHO_DETECTOR_CREATOR_H_

View File

@ -373,7 +373,7 @@ webrtc_fuzzer_test("neteq_signal_fuzzer") {
webrtc_fuzzer_test("residual_echo_detector_fuzzer") { webrtc_fuzzer_test("residual_echo_detector_fuzzer") {
sources = [ "residual_echo_detector_fuzzer.cc" ] sources = [ "residual_echo_detector_fuzzer.cc" ]
deps = [ deps = [
"../../modules/audio_processing", "../../api/audio:echo_detector_creator",
"../../rtc_base:checks", "../../rtc_base:checks",
"../../rtc_base:rtc_base_approved", "../../rtc_base:rtc_base_approved",
] ]

View File

@ -15,7 +15,7 @@
#include <bitset> #include <bitset>
#include <vector> #include <vector>
#include "modules/audio_processing/residual_echo_detector.h" #include "api/audio/echo_detector_creator.h"
#include "rtc_base/checks.h" #include "rtc_base/checks.h"
#include "rtc_base/ref_counted_object.h" #include "rtc_base/ref_counted_object.h"
@ -43,8 +43,7 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
read_idx += 2; read_idx += 2;
std::bitset<16> call_order(call_order_int); std::bitset<16> call_order(call_order_int);
rtc::scoped_refptr<ResidualEchoDetector> echo_detector = rtc::scoped_refptr<EchoDetector> echo_detector = CreateEchoDetector();
new rtc::RefCountedObject<ResidualEchoDetector>();
std::vector<float> input(1); std::vector<float> input(1);
// Call AnalyzeCaptureAudio once to prevent the flushing of the buffer. // Call AnalyzeCaptureAudio once to prevent the flushing of the buffer.
echo_detector->AnalyzeCaptureAudio(input); echo_detector->AnalyzeCaptureAudio(input);