diff --git a/api/DEPS b/api/DEPS index 1e92b12281..1212b43be8 100644 --- a/api/DEPS +++ b/api/DEPS @@ -246,6 +246,10 @@ specific_include_rules = { "+modules/audio_processing/include/audio_processing.h", ], + "echo_detector_creator\.h": [ + "+modules/audio_processing/include/audio_processing.h", + ], + "fake_frame_decryptor\.h": [ "+rtc_base/ref_counted_object.h", ], diff --git a/api/audio/BUILD.gn b/api/audio/BUILD.gn index 2405d9d041..4c8004ed2d 100644 --- a/api/audio/BUILD.gn +++ b/api/audio/BUILD.gn @@ -87,3 +87,17 @@ rtc_source_set("echo_control") { sources = [ "echo_control.h" ] 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", + ] +} diff --git a/api/audio/echo_detector_creator.cc b/api/audio/echo_detector_creator.cc new file mode 100644 index 0000000000..4c3d9e61fe --- /dev/null +++ b/api/audio/echo_detector_creator.cc @@ -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 CreateEchoDetector() { + return new rtc::RefCountedObject(); +} + +} // namespace webrtc diff --git a/api/audio/echo_detector_creator.h b/api/audio/echo_detector_creator.h new file mode 100644 index 0000000000..5ba171de97 --- /dev/null +++ b/api/audio/echo_detector_creator.h @@ -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 CreateEchoDetector(); + +} // namespace webrtc + +#endif // API_AUDIO_ECHO_DETECTOR_CREATOR_H_ diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn index a7aa058ecb..96376a2e83 100644 --- a/test/fuzzers/BUILD.gn +++ b/test/fuzzers/BUILD.gn @@ -373,7 +373,7 @@ webrtc_fuzzer_test("neteq_signal_fuzzer") { webrtc_fuzzer_test("residual_echo_detector_fuzzer") { sources = [ "residual_echo_detector_fuzzer.cc" ] deps = [ - "../../modules/audio_processing", + "../../api/audio:echo_detector_creator", "../../rtc_base:checks", "../../rtc_base:rtc_base_approved", ] diff --git a/test/fuzzers/residual_echo_detector_fuzzer.cc b/test/fuzzers/residual_echo_detector_fuzzer.cc index 99ea06a08e..da4b6ededf 100644 --- a/test/fuzzers/residual_echo_detector_fuzzer.cc +++ b/test/fuzzers/residual_echo_detector_fuzzer.cc @@ -15,7 +15,7 @@ #include #include -#include "modules/audio_processing/residual_echo_detector.h" +#include "api/audio/echo_detector_creator.h" #include "rtc_base/checks.h" #include "rtc_base/ref_counted_object.h" @@ -43,8 +43,7 @@ void FuzzOneInput(const uint8_t* data, size_t size) { read_idx += 2; std::bitset<16> call_order(call_order_int); - rtc::scoped_refptr echo_detector = - new rtc::RefCountedObject(); + rtc::scoped_refptr echo_detector = CreateEchoDetector(); std::vector input(1); // Call AnalyzeCaptureAudio once to prevent the flushing of the buffer. echo_detector->AnalyzeCaptureAudio(input);