Rename AudioProcessingFactory to Builder

To stress there is no intention to use each instance more than once.

Bug: webrtc:369904700
Change-Id: Id53ad804f39f8ee596ec0b45ff15393009fdfab0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366640
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43324}
This commit is contained in:
Danil Chapovalov 2024-10-24 16:16:47 +02:00 committed by WebRTC LUCI CQ
parent 4a482a2160
commit dc03d8731f
36 changed files with 160 additions and 167 deletions

View File

@ -99,7 +99,7 @@ if (!build_with_chromium) {
"audio:audio_device", "audio:audio_device",
"audio:audio_mixer_api", "audio:audio_mixer_api",
"audio:audio_processing", "audio:audio_processing",
"audio:builtin_audio_processing_factory", "audio:builtin_audio_processing_builder",
"audio_codecs:audio_codecs_api", "audio_codecs:audio_codecs_api",
"video_codecs:video_codecs_api", "video_codecs:video_codecs_api",
] ]

View File

@ -85,12 +85,12 @@ rtc_source_set("audio_processing") {
] ]
} }
rtc_library("builtin_audio_processing_factory") { rtc_library("builtin_audio_processing_builder") {
visibility = [ "*" ] visibility = [ "*" ]
configs += [ "../../modules/audio_processing:apm_debug_dump" ] configs += [ "../../modules/audio_processing:apm_debug_dump" ]
sources = [ sources = [
"builtin_audio_processing_factory.cc", "builtin_audio_processing_builder.cc",
"builtin_audio_processing_factory.h", "builtin_audio_processing_builder.h",
] ]
deps = [ deps = [
":audio_processing", ":audio_processing",
@ -169,11 +169,11 @@ if (rtc_include_tests) {
testonly = true testonly = true
sources = [ sources = [
"audio_processing_unittest.cc", "audio_processing_unittest.cc",
"builtin_audio_processing_factory_unittest.cc", "builtin_audio_processing_builder_unittest.cc",
] ]
deps = [ deps = [
":audio_processing", ":audio_processing",
":builtin_audio_processing_factory", ":builtin_audio_processing_builder",
"..:make_ref_counted", "..:make_ref_counted",
"..:scoped_refptr", "..:scoped_refptr",
"../../modules/audio_processing:mocks", "../../modules/audio_processing:mocks",

View File

@ -214,16 +214,17 @@ std::string AudioProcessing::Config::ToString() const {
return builder.str(); return builder.str();
} }
absl::Nonnull<std::unique_ptr<AudioProcessingFactory>> CustomAudioProcessing( absl::Nonnull<std::unique_ptr<AudioProcessingBuilderInterface>>
CustomAudioProcessing(
absl::Nonnull<scoped_refptr<AudioProcessing>> audio_processing) { absl::Nonnull<scoped_refptr<AudioProcessing>> audio_processing) {
class Factory : public AudioProcessingFactory { class Builder : public AudioProcessingBuilderInterface {
public: public:
explicit Factory(absl::Nonnull<scoped_refptr<AudioProcessing>> ap) explicit Builder(absl::Nonnull<scoped_refptr<AudioProcessing>> ap)
: ap_(std::move(ap)) {} : ap_(std::move(ap)) {}
absl::Nullable<scoped_refptr<AudioProcessing>> Create( absl::Nullable<scoped_refptr<AudioProcessing>> Build(
const Environment& /*env*/) override { const Environment& /*env*/) override {
return ap_; return std::move(ap_);
} }
private: private:
@ -231,7 +232,7 @@ absl::Nonnull<std::unique_ptr<AudioProcessingFactory>> CustomAudioProcessing(
}; };
RTC_CHECK(audio_processing); RTC_CHECK(audio_processing);
return std::make_unique<Factory>(std::move(audio_processing)); return std::make_unique<Builder>(std::move(audio_processing));
} }
} // namespace webrtc } // namespace webrtc

View File

@ -734,20 +734,21 @@ class RTC_EXPORT AudioProcessing : public RefCountInterface {
static int GetFrameSize(int sample_rate_hz) { return sample_rate_hz / 100; } static int GetFrameSize(int sample_rate_hz) { return sample_rate_hz / 100; }
}; };
class AudioProcessingFactory { class AudioProcessingBuilderInterface {
public: public:
virtual ~AudioProcessingFactory() = default; virtual ~AudioProcessingBuilderInterface() = default;
virtual absl::Nullable<scoped_refptr<AudioProcessing>> Create( virtual absl::Nullable<scoped_refptr<AudioProcessing>> Build(
const Environment& env) = 0; const Environment& env) = 0;
}; };
// Returns factory that always returns the same `audio_processing` ignoring the // Returns builder that returns the `audio_processing` ignoring the extra
// extra construction parameter `env`. // construction parameter `env`.
// nullptr `audio_processing` is not supported as in some scenarios that imply // nullptr `audio_processing` is not supported as in some scenarios that imply
// no audio processing, while in others - default builtin audio processing. // no audio processing, while in others - default builtin audio processing.
// Callers should be explicit which of these two behaviors they want. // Callers should be explicit which of these two behaviors they want.
absl::Nonnull<std::unique_ptr<AudioProcessingFactory>> CustomAudioProcessing( absl::Nonnull<std::unique_ptr<AudioProcessingBuilderInterface>>
CustomAudioProcessing(
absl::Nonnull<scoped_refptr<AudioProcessing>> audio_processing); absl::Nonnull<scoped_refptr<AudioProcessing>> audio_processing);
// Experimental interface for a custom analysis submodule. // Experimental interface for a custom analysis submodule.
@ -780,7 +781,7 @@ class CustomProcessing {
}; };
// TODO: bugs.webrtc.org/369904700 - Deprecate and remove in favor of the // TODO: bugs.webrtc.org/369904700 - Deprecate and remove in favor of the
// BuiltinAudioProcessingFactory. // BuiltinAudioProcessingBuilder.
class RTC_EXPORT AudioProcessingBuilder { class RTC_EXPORT AudioProcessingBuilder {
public: public:
AudioProcessingBuilder(); AudioProcessingBuilder();

View File

@ -24,15 +24,15 @@ namespace webrtc {
using ::testing::_; using ::testing::_;
using ::testing::NotNull; using ::testing::NotNull;
TEST(CustomAudioProcessingTest, ReturnsTheSameAudioProcessing) { TEST(CustomAudioProcessingTest, ReturnsPassedAudioProcessing) {
scoped_refptr<AudioProcessing> ap = scoped_refptr<AudioProcessing> ap =
make_ref_counted<test::MockAudioProcessing>(); make_ref_counted<test::MockAudioProcessing>();
std::unique_ptr<AudioProcessingFactory> factory = CustomAudioProcessing(ap); std::unique_ptr<AudioProcessingBuilderInterface> builder =
CustomAudioProcessing(ap);
ASSERT_THAT(factory, NotNull()); ASSERT_THAT(builder, NotNull());
EXPECT_EQ(factory->Create(CreateEnvironment()), ap); EXPECT_EQ(builder->Build(CreateEnvironment()), ap);
EXPECT_EQ(factory->Create(CreateEnvironment()), ap);
} }
#if GTEST_HAS_DEATH_TEST #if GTEST_HAS_DEATH_TEST

View File

@ -7,7 +7,7 @@
* in the file PATENTS. All contributing project authors may * in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree. * be found in the AUTHORS file in the root of the source tree.
*/ */
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include <utility> #include <utility>
@ -22,14 +22,7 @@
namespace webrtc { namespace webrtc {
absl::Nullable<scoped_refptr<AudioProcessing>> absl::Nullable<scoped_refptr<AudioProcessing>>
BuiltinAudioProcessingFactory::Create(const Environment& /*env*/) { BuiltinAudioProcessingBuilder::Build(const Environment& /*env*/) {
if (called_create_) {
RTC_DLOG(LS_ERROR)
<< "Calling BuiltinAudioProcessingFactory::Create more than once "
"is currently unsupported.";
}
called_create_ = true;
// TODO: bugs.webrtc.org/369904700 - Pass `env` when AudioProcessingImpl gets // TODO: bugs.webrtc.org/369904700 - Pass `env` when AudioProcessingImpl gets
// constructor that accepts it. // constructor that accepts it.
return make_ref_counted<AudioProcessingImpl>( return make_ref_counted<AudioProcessingImpl>(

View File

@ -8,8 +8,8 @@
* be found in the AUTHORS file in the root of the source tree. * be found in the AUTHORS file in the root of the source tree.
*/ */
#ifndef API_AUDIO_BUILTIN_AUDIO_PROCESSING_FACTORY_H_ #ifndef API_AUDIO_BUILTIN_AUDIO_PROCESSING_BUILDER_H_
#define API_AUDIO_BUILTIN_AUDIO_PROCESSING_FACTORY_H_ #define API_AUDIO_BUILTIN_AUDIO_PROCESSING_BUILDER_H_
#include <memory> #include <memory>
#include <utility> #include <utility>
@ -23,53 +23,54 @@
namespace webrtc { namespace webrtc {
class RTC_EXPORT BuiltinAudioProcessingFactory : public AudioProcessingFactory { class RTC_EXPORT BuiltinAudioProcessingBuilder
: public AudioProcessingBuilderInterface {
public: public:
BuiltinAudioProcessingFactory() = default; BuiltinAudioProcessingBuilder() = default;
explicit BuiltinAudioProcessingFactory(const AudioProcessing::Config& config) explicit BuiltinAudioProcessingBuilder(const AudioProcessing::Config& config)
: config_(config) {} : config_(config) {}
BuiltinAudioProcessingFactory(const BuiltinAudioProcessingFactory&) = delete; BuiltinAudioProcessingBuilder(const BuiltinAudioProcessingBuilder&) = delete;
BuiltinAudioProcessingFactory& operator=( BuiltinAudioProcessingBuilder& operator=(
const BuiltinAudioProcessingFactory&) = delete; const BuiltinAudioProcessingBuilder&) = delete;
~BuiltinAudioProcessingFactory() override = default; ~BuiltinAudioProcessingBuilder() override = default;
// Sets the APM configuration. // Sets the APM configuration.
BuiltinAudioProcessingFactory& SetConfig( BuiltinAudioProcessingBuilder& SetConfig(
const AudioProcessing::Config& config) { const AudioProcessing::Config& config) {
config_ = config; config_ = config;
return *this; return *this;
} }
// Sets the echo controller factory to inject when APM is created. // Sets the echo controller factory to inject when APM is created.
BuiltinAudioProcessingFactory& SetEchoControlFactory( BuiltinAudioProcessingBuilder& SetEchoControlFactory(
std::unique_ptr<EchoControlFactory> echo_control_factory) { std::unique_ptr<EchoControlFactory> echo_control_factory) {
echo_control_factory_ = std::move(echo_control_factory); echo_control_factory_ = std::move(echo_control_factory);
return *this; return *this;
} }
// Sets the capture post-processing sub-module to inject when APM is created. // Sets the capture post-processing sub-module to inject when APM is created.
BuiltinAudioProcessingFactory& SetCapturePostProcessing( BuiltinAudioProcessingBuilder& SetCapturePostProcessing(
std::unique_ptr<CustomProcessing> capture_post_processing) { std::unique_ptr<CustomProcessing> capture_post_processing) {
capture_post_processing_ = std::move(capture_post_processing); capture_post_processing_ = std::move(capture_post_processing);
return *this; return *this;
} }
// Sets the render pre-processing sub-module to inject when APM is created. // Sets the render pre-processing sub-module to inject when APM is created.
BuiltinAudioProcessingFactory& SetRenderPreProcessing( BuiltinAudioProcessingBuilder& SetRenderPreProcessing(
std::unique_ptr<CustomProcessing> render_pre_processing) { std::unique_ptr<CustomProcessing> render_pre_processing) {
render_pre_processing_ = std::move(render_pre_processing); render_pre_processing_ = std::move(render_pre_processing);
return *this; return *this;
} }
// Sets the echo detector to inject when APM is created. // Sets the echo detector to inject when APM is created.
BuiltinAudioProcessingFactory& SetEchoDetector( BuiltinAudioProcessingBuilder& SetEchoDetector(
rtc::scoped_refptr<EchoDetector> echo_detector) { rtc::scoped_refptr<EchoDetector> echo_detector) {
echo_detector_ = std::move(echo_detector); echo_detector_ = std::move(echo_detector);
return *this; return *this;
} }
// Sets the capture analyzer sub-module to inject when APM is created. // Sets the capture analyzer sub-module to inject when APM is created.
BuiltinAudioProcessingFactory& SetCaptureAnalyzer( BuiltinAudioProcessingBuilder& SetCaptureAnalyzer(
std::unique_ptr<CustomAudioAnalyzer> capture_analyzer) { std::unique_ptr<CustomAudioAnalyzer> capture_analyzer) {
capture_analyzer_ = std::move(capture_analyzer); capture_analyzer_ = std::move(capture_analyzer);
return *this; return *this;
@ -77,14 +78,11 @@ class RTC_EXPORT BuiltinAudioProcessingFactory : public AudioProcessingFactory {
// Creates an APM instance with the specified config or the default one if // Creates an APM instance with the specified config or the default one if
// unspecified. Injects the specified components transferring the ownership // unspecified. Injects the specified components transferring the ownership
// to the newly created APM instance. This implementation of the // to the newly created APM instance.
// AudioProcessingFactory interface is not designed to be used more than once. absl::Nullable<scoped_refptr<AudioProcessing>> Build(
// Calling `Create` second time would return an unspecified object.
absl::Nullable<scoped_refptr<AudioProcessing>> Create(
const Environment& env) override; const Environment& env) override;
private: private:
bool called_create_ = false;
AudioProcessing::Config config_; AudioProcessing::Config config_;
std::unique_ptr<EchoControlFactory> echo_control_factory_; std::unique_ptr<EchoControlFactory> echo_control_factory_;
std::unique_ptr<CustomProcessing> capture_post_processing_; std::unique_ptr<CustomProcessing> capture_post_processing_;
@ -95,4 +93,4 @@ class RTC_EXPORT BuiltinAudioProcessingFactory : public AudioProcessingFactory {
} // namespace webrtc } // namespace webrtc
#endif // API_AUDIO_BUILTIN_AUDIO_PROCESSING_FACTORY_H_ #endif // API_AUDIO_BUILTIN_AUDIO_PROCESSING_BUILDER_H_

View File

@ -8,7 +8,7 @@
* be found in the AUTHORS file in the root of the source tree. * be found in the AUTHORS file in the root of the source tree.
*/ */
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/audio/audio_processing.h" #include "api/audio/audio_processing.h"
#include "api/environment/environment.h" #include "api/environment/environment.h"
@ -21,25 +21,25 @@ namespace webrtc {
using ::testing::NotNull; using ::testing::NotNull;
TEST(BuiltinAudioProcessingFactoryTest, CreatesWithDefaults) { TEST(BuiltinAudioProcessingBuilderTest, CreatesWithDefaults) {
EXPECT_THAT(BuiltinAudioProcessingFactory().Create(CreateEnvironment()), EXPECT_THAT(BuiltinAudioProcessingBuilder().Build(CreateEnvironment()),
NotNull()); NotNull());
} }
TEST(BuiltinAudioProcessingFactoryTest, CreatesWithConfig) { TEST(BuiltinAudioProcessingBuilderTest, CreatesWithConfig) {
const Environment env = CreateEnvironment(); const Environment env = CreateEnvironment();
AudioProcessing::Config config; AudioProcessing::Config config;
// Change a field to make config different to default one. // Change a field to make config different to default one.
config.gain_controller1.enabled = !config.gain_controller1.enabled; config.gain_controller1.enabled = !config.gain_controller1.enabled;
scoped_refptr<AudioProcessing> ap1 = scoped_refptr<AudioProcessing> ap1 =
BuiltinAudioProcessingFactory(config).Create(env); BuiltinAudioProcessingBuilder(config).Build(env);
ASSERT_THAT(ap1, NotNull()); ASSERT_THAT(ap1, NotNull());
EXPECT_EQ(ap1->GetConfig().gain_controller1.enabled, EXPECT_EQ(ap1->GetConfig().gain_controller1.enabled,
config.gain_controller1.enabled); config.gain_controller1.enabled);
scoped_refptr<AudioProcessing> ap2 = scoped_refptr<AudioProcessing> ap2 =
BuiltinAudioProcessingFactory().SetConfig(config).Create(env); BuiltinAudioProcessingBuilder().SetConfig(config).Build(env);
ASSERT_THAT(ap2, NotNull()); ASSERT_THAT(ap2, NotNull());
EXPECT_EQ(ap2->GetConfig().gain_controller1.enabled, EXPECT_EQ(ap2->GetConfig().gain_controller1.enabled,
config.gain_controller1.enabled); config.gain_controller1.enabled);

View File

@ -16,7 +16,7 @@
#include "api/audio/audio_device.h" #include "api/audio/audio_device.h"
#include "api/audio/audio_mixer.h" #include "api/audio/audio_mixer.h"
#include "api/audio/audio_processing.h" #include "api/audio/audio_processing.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/audio_codecs/audio_decoder_factory.h" #include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h" #include "api/audio_codecs/audio_encoder_factory.h"
#include "api/enable_media.h" #include "api/enable_media.h"
@ -59,12 +59,12 @@ rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
dependencies.audio_decoder_factory = std::move(audio_decoder_factory); dependencies.audio_decoder_factory = std::move(audio_decoder_factory);
dependencies.audio_frame_processor = std::move(audio_frame_processor); dependencies.audio_frame_processor = std::move(audio_frame_processor);
if (audio_processing != nullptr) { if (audio_processing != nullptr) {
dependencies.audio_processing_factory = dependencies.audio_processing_builder =
CustomAudioProcessing(std::move(audio_processing)); CustomAudioProcessing(std::move(audio_processing));
} else { } else {
#ifndef WEBRTC_EXCLUDE_AUDIO_PROCESSING_MODULE #ifndef WEBRTC_EXCLUDE_AUDIO_PROCESSING_MODULE
dependencies.audio_processing_factory = dependencies.audio_processing_builder =
std::make_unique<BuiltinAudioProcessingFactory>(); std::make_unique<BuiltinAudioProcessingBuilder>();
#endif #endif
} }
dependencies.audio_mixer = std::move(audio_mixer); dependencies.audio_mixer = std::move(audio_mixer);

View File

@ -47,8 +47,8 @@ class MediaFactoryImpl : public MediaFactory {
const Environment& env, const Environment& env,
PeerConnectionFactoryDependencies& deps) override { PeerConnectionFactoryDependencies& deps) override {
absl::Nullable<scoped_refptr<AudioProcessing>> audio_processing = absl::Nullable<scoped_refptr<AudioProcessing>> audio_processing =
deps.audio_processing_factory != nullptr deps.audio_processing_builder != nullptr
? deps.audio_processing_factory->Create(env) ? std::move(deps.audio_processing_builder)->Build(env)
: std::move(deps.audio_processing); : std::move(deps.audio_processing);
auto audio_engine = std::make_unique<WebRtcVoiceEngine>( auto audio_engine = std::make_unique<WebRtcVoiceEngine>(

View File

@ -35,8 +35,8 @@ void EnableMediaWithDefaults(PeerConnectionFactoryDependencies& deps) {
deps.audio_decoder_factory = CreateBuiltinAudioDecoderFactory(); deps.audio_decoder_factory = CreateBuiltinAudioDecoderFactory();
} }
if (deps.audio_processing == nullptr && if (deps.audio_processing == nullptr &&
deps.audio_processing_factory == nullptr) { deps.audio_processing_builder == nullptr) {
// TODO: bugs.webrtc.org/369904700 - set `deps.audio_processing_factory` // TODO: bugs.webrtc.org/369904700 - set `deps.audio_processing_builder`
// instead of `deps.audio_processing` when there is an implementation that // instead of `deps.audio_processing` when there is an implementation that
// can replace `AudioProcessingBuilder`. // can replace `AudioProcessingBuilder`.
deps.audio_processing = AudioProcessingBuilder().Create(); deps.audio_processing = AudioProcessingBuilder().Create();

View File

@ -1471,9 +1471,9 @@ struct RTC_EXPORT PeerConnectionFactoryDependencies final {
rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory; rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory;
rtc::scoped_refptr<AudioMixer> audio_mixer; rtc::scoped_refptr<AudioMixer> audio_mixer;
// TODO: bugs.webrtc.org/369904700 - Deprecate `audio_processing` in favor // TODO: bugs.webrtc.org/369904700 - Deprecate `audio_processing` in favor
// of `audio_processing_factory`. // of `audio_processing_builder`.
rtc::scoped_refptr<AudioProcessing> audio_processing; rtc::scoped_refptr<AudioProcessing> audio_processing;
std::unique_ptr<AudioProcessingFactory> audio_processing_factory; std::unique_ptr<AudioProcessingBuilderInterface> audio_processing_builder;
std::unique_ptr<AudioFrameProcessor> audio_frame_processor; std::unique_ptr<AudioFrameProcessor> audio_frame_processor;
std::unique_ptr<VideoEncoderFactory> video_encoder_factory; std::unique_ptr<VideoEncoderFactory> video_encoder_factory;
std::unique_ptr<VideoDecoderFactory> video_decoder_factory; std::unique_ptr<VideoDecoderFactory> video_decoder_factory;

View File

@ -33,8 +33,8 @@ TEST(VoipEngineFactoryTest, CreateEngineWithMockModules) {
config.encoder_factory = rtc::make_ref_counted<MockAudioEncoderFactory>(); config.encoder_factory = rtc::make_ref_counted<MockAudioEncoderFactory>();
config.decoder_factory = rtc::make_ref_counted<MockAudioDecoderFactory>(); config.decoder_factory = rtc::make_ref_counted<MockAudioDecoderFactory>();
config.task_queue_factory = CreateDefaultTaskQueueFactory(); config.task_queue_factory = CreateDefaultTaskQueueFactory();
config.audio_processing_factory = config.audio_processing_builder =
std::make_unique<NiceMock<test::MockAudioProcessingFactory>>(); std::make_unique<NiceMock<test::MockAudioProcessingBuilder>>();
config.audio_device_module = test::MockAudioDeviceModule::CreateNice(); config.audio_device_module = test::MockAudioDeviceModule::CreateNice();
auto voip_engine = CreateVoipEngine(std::move(config)); auto voip_engine = CreateVoipEngine(std::move(config));

View File

@ -35,12 +35,12 @@ std::unique_ptr<VoipEngine> CreateVoipEngine(VoipEngineConfig config) {
#pragma clang diagnostic push #pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations" #pragma clang diagnostic ignored "-Wdeprecated-declarations"
RTC_CHECK(config.audio_processing == nullptr || RTC_CHECK(config.audio_processing == nullptr ||
config.audio_processing_factory == nullptr); config.audio_processing_builder == nullptr);
scoped_refptr<AudioProcessing> audio_processing = scoped_refptr<AudioProcessing> audio_processing =
std::move(config.audio_processing); std::move(config.audio_processing);
#pragma clang diagnostic pop #pragma clang diagnostic pop
if (config.audio_processing_factory != nullptr) { if (config.audio_processing_builder != nullptr) {
audio_processing = config.audio_processing_factory->Create(env); audio_processing = std::move(config.audio_processing_builder)->Build(env);
} }
if (audio_processing == nullptr) { if (audio_processing == nullptr) {

View File

@ -61,16 +61,16 @@ struct VoipEngineConfig {
// play through its output device (e.g. speaker). // play through its output device (e.g. speaker).
scoped_refptr<AudioDeviceModule> audio_device_module; scoped_refptr<AudioDeviceModule> audio_device_module;
// Optional (e.g. api/audio/builtin_audio_processing_factory). // Optional (e.g. api/audio/builtin_audio_processing_builder).
// AudioProcessing provides audio procesing functionalities (e.g. acoustic // AudioProcessing provides audio procesing functionalities (e.g. acoustic
// echo cancellation, noise suppression, gain control, etc) on audio input // echo cancellation, noise suppression, gain control, etc) on audio input
// samples for VoipEngine. When optionally not set, VoipEngine will not have // samples for VoipEngine. When optionally not set, VoipEngine will not have
// such functionalities to perform on audio input samples received from // such functionalities to perform on audio input samples received from
// AudioDeviceModule. // AudioDeviceModule.
std::unique_ptr<AudioProcessingFactory> audio_processing_factory; std::unique_ptr<AudioProcessingBuilderInterface> audio_processing_builder;
// TODO: bugs.webrtc.org/369904700 - Remove when users are migrated to set // TODO: bugs.webrtc.org/369904700 - Remove when users are migrated to set
// `audio_processing_factory` instead. // `audio_processing_builder` instead.
[[deprecated]] scoped_refptr<AudioProcessing> audio_processing; [[deprecated]] scoped_refptr<AudioProcessing> audio_processing;
}; };

View File

@ -490,7 +490,7 @@ if (is_ios || (is_mac && target_cpu != "x86")) {
"../api:scoped_refptr", "../api:scoped_refptr",
"../api:sequence_checker", "../api:sequence_checker",
"../api/audio:audio_processing", "../api/audio:audio_processing",
"../api/audio:builtin_audio_processing_factory", "../api/audio:builtin_audio_processing_builder",
"../api/audio_codecs:builtin_audio_decoder_factory", "../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory", "../api/audio_codecs:builtin_audio_encoder_factory",
"../api/rtc_event_log:rtc_event_log_factory", "../api/rtc_event_log:rtc_event_log_factory",

View File

@ -56,7 +56,7 @@ if (is_android) {
deps = [ deps = [
":generated_jni", ":generated_jni",
"../../api/audio:builtin_audio_processing_factory", "../../api/audio:builtin_audio_processing_builder",
"../../rtc_base:async_packet_socket", "../../rtc_base:async_packet_socket",
"../../rtc_base:async_udp_socket", "../../rtc_base:async_udp_socket",
"../../rtc_base:logging", "../../rtc_base:logging",

View File

@ -20,7 +20,7 @@
#include <vector> #include <vector>
#include "absl/memory/memory.h" #include "absl/memory/memory.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h" #include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/task_queue/default_task_queue_factory.h" #include "api/task_queue/default_task_queue_factory.h"
@ -131,8 +131,8 @@ void AndroidVoipClient::Init(
config.task_queue_factory = webrtc::CreateDefaultTaskQueueFactory(); config.task_queue_factory = webrtc::CreateDefaultTaskQueueFactory();
config.audio_device_module = config.audio_device_module =
webrtc::CreateJavaAudioDeviceModule(env, application_context.obj()); webrtc::CreateJavaAudioDeviceModule(env, application_context.obj());
config.audio_processing_factory = config.audio_processing_builder =
std::make_unique<webrtc::BuiltinAudioProcessingFactory>(); std::make_unique<webrtc::BuiltinAudioProcessingBuilder>();
voip_thread_->Start(); voip_thread_->Start();

View File

@ -19,7 +19,7 @@
#import "sdk/objc/helpers/RTCCameraPreviewView.h" #import "sdk/objc/helpers/RTCCameraPreviewView.h"
#include "api/audio/audio_processing.h" #include "api/audio/audio_processing.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h" #include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/enable_media.h" #include "api/enable_media.h"
@ -125,7 +125,7 @@ void ObjCCallClient::CreatePeerConnectionFactory() {
[[RTC_OBJC_TYPE(RTCDefaultVideoEncoderFactory) alloc] init]); [[RTC_OBJC_TYPE(RTCDefaultVideoEncoderFactory) alloc] init]);
dependencies.video_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory( dependencies.video_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory(
[[RTC_OBJC_TYPE(RTCDefaultVideoDecoderFactory) alloc] init]); [[RTC_OBJC_TYPE(RTCDefaultVideoDecoderFactory) alloc] init]);
dependencies.audio_processing_factory = std::make_unique<webrtc::BuiltinAudioProcessingFactory>(); dependencies.audio_processing_builder = std::make_unique<webrtc::BuiltinAudioProcessingBuilder>();
webrtc::EnableMedia(dependencies); webrtc::EnableMedia(dependencies);
dependencies.event_log_factory = std::make_unique<webrtc::RtcEventLogFactory>(); dependencies.event_log_factory = std::make_unique<webrtc::RtcEventLogFactory>();
pcf_ = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies)); pcf_ = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies));

View File

@ -347,7 +347,7 @@ if (rtc_include_tests) {
"../../api/audio:aec3_factory", "../../api/audio:aec3_factory",
"../../api/audio:audio_frame_api", "../../api/audio:audio_frame_api",
"../../api/audio:audio_processing", "../../api/audio:audio_processing",
"../../api/audio:builtin_audio_processing_factory", "../../api/audio:builtin_audio_processing_builder",
"../../api/audio:echo_detector_creator", "../../api/audio:echo_detector_creator",
"../../api/environment:environment_factory", "../../api/environment:environment_factory",
"../../common_audio", "../../common_audio",
@ -459,7 +459,7 @@ if (rtc_include_tests) {
":audio_processing", ":audio_processing",
":audioproc_test_utils", ":audioproc_test_utils",
"../../api:array_view", "../../api:array_view",
"../../api/audio:builtin_audio_processing_factory", "../../api/audio:builtin_audio_processing_builder",
"../../api/environment:environment_factory", "../../api/environment:environment_factory",
"../../api/numerics", "../../api/numerics",
"../../api/test/metrics:global_metrics_logger_and_exporter", "../../api/test/metrics:global_metrics_logger_and_exporter",

View File

@ -48,7 +48,7 @@ if (rtc_include_tests) {
"..:audioproc_test_utils", "..:audioproc_test_utils",
"../", "../",
"../../../api/audio:audio_processing", "../../../api/audio:audio_processing",
"../../../api/audio:builtin_audio_processing_factory", "../../../api/audio:builtin_audio_processing_builder",
"../../../api/environment:environment_factory", "../../../api/environment:environment_factory",
"//testing/gtest", "//testing/gtest",
] ]

View File

@ -13,7 +13,7 @@
#include <utility> #include <utility>
#include "api/audio/audio_processing.h" #include "api/audio/audio_processing.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "modules/audio_processing/aec_dump/mock_aec_dump.h" #include "modules/audio_processing/aec_dump/mock_aec_dump.h"
#include "modules/audio_processing/audio_processing_impl.h" #include "modules/audio_processing/audio_processing_impl.h"
@ -26,7 +26,7 @@ using ::testing::StrictMock;
namespace { namespace {
webrtc::scoped_refptr<webrtc::AudioProcessing> CreateAudioProcessing() { webrtc::scoped_refptr<webrtc::AudioProcessing> CreateAudioProcessing() {
webrtc::scoped_refptr<webrtc::AudioProcessing> apm = webrtc::scoped_refptr<webrtc::AudioProcessing> apm =
webrtc::BuiltinAudioProcessingFactory().Create( webrtc::BuiltinAudioProcessingBuilder().Build(
webrtc::CreateEnvironment()); webrtc::CreateEnvironment());
RTC_DCHECK(apm); RTC_DCHECK(apm);
return apm; return apm;

View File

@ -13,7 +13,7 @@
#include <vector> #include <vector>
#include "api/array_view.h" #include "api/array_view.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "modules/audio_processing/audio_processing_impl.h" #include "modules/audio_processing/audio_processing_impl.h"
#include "modules/audio_processing/test/test_utils.h" #include "modules/audio_processing/test/test_utils.h"
@ -489,9 +489,9 @@ AudioProcessing::Config GetApmTestConfig(AecType aec_type) {
AudioProcessingImplLockTest::AudioProcessingImplLockTest() AudioProcessingImplLockTest::AudioProcessingImplLockTest()
: test_config_(GetParam()), : test_config_(GetParam()),
apm_(BuiltinAudioProcessingFactory() apm_(BuiltinAudioProcessingBuilder()
.SetConfig(GetApmTestConfig(test_config_.aec_type)) .SetConfig(GetApmTestConfig(test_config_.aec_type))
.Create(CreateEnvironment())), .Build(CreateEnvironment())),
render_thread_state_(kMaxFrameSize, render_thread_state_(kMaxFrameSize,
&rand_gen_, &rand_gen_,
&render_call_event_, &render_call_event_,

View File

@ -17,7 +17,7 @@
#include <tuple> #include <tuple>
#include "api/audio/audio_processing.h" #include "api/audio/audio_processing.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "api/make_ref_counted.h" #include "api/make_ref_counted.h"
#include "api/scoped_refptr.h" #include "api/scoped_refptr.h"
@ -200,7 +200,7 @@ TEST(AudioProcessingImplTest, AudioParameterChangeTriggersInit) {
TEST(AudioProcessingImplTest, UpdateCapturePreGainRuntimeSetting) { TEST(AudioProcessingImplTest, UpdateCapturePreGainRuntimeSetting) {
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
apm_config.pre_amplifier.enabled = true; apm_config.pre_amplifier.enabled = true;
apm_config.pre_amplifier.fixed_gain_factor = 1.f; apm_config.pre_amplifier.fixed_gain_factor = 1.f;
@ -233,7 +233,7 @@ TEST(AudioProcessingImplTest, UpdateCapturePreGainRuntimeSetting) {
TEST(AudioProcessingImplTest, TEST(AudioProcessingImplTest,
LevelAdjustmentUpdateCapturePreGainRuntimeSetting) { LevelAdjustmentUpdateCapturePreGainRuntimeSetting) {
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
apm_config.capture_level_adjustment.enabled = true; apm_config.capture_level_adjustment.enabled = true;
apm_config.capture_level_adjustment.pre_gain_factor = 1.f; apm_config.capture_level_adjustment.pre_gain_factor = 1.f;
@ -266,7 +266,7 @@ TEST(AudioProcessingImplTest,
TEST(AudioProcessingImplTest, TEST(AudioProcessingImplTest,
LevelAdjustmentUpdateCapturePostGainRuntimeSetting) { LevelAdjustmentUpdateCapturePostGainRuntimeSetting) {
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
apm_config.capture_level_adjustment.enabled = true; apm_config.capture_level_adjustment.enabled = true;
apm_config.capture_level_adjustment.post_gain_factor = 1.f; apm_config.capture_level_adjustment.post_gain_factor = 1.f;
@ -304,9 +304,9 @@ TEST(AudioProcessingImplTest, EchoControllerObservesSetCaptureUsageChange) {
echo_control_factory.get(); echo_control_factory.get();
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoControlFactory(std::move(echo_control_factory)) .SetEchoControlFactory(std::move(echo_control_factory))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
constexpr int16_t kAudioLevel = 10000; constexpr int16_t kAudioLevel = 10000;
constexpr int kSampleRateHz = 48000; constexpr int kSampleRateHz = 48000;
@ -386,9 +386,9 @@ TEST(AudioProcessingImplTest,
const auto* echo_control_factory_ptr = echo_control_factory.get(); const auto* echo_control_factory_ptr = echo_control_factory.get();
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoControlFactory(std::move(echo_control_factory)) .SetEchoControlFactory(std::move(echo_control_factory))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
// Disable AGC. // Disable AGC.
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
apm_config.gain_controller1.enabled = false; apm_config.gain_controller1.enabled = false;
@ -429,9 +429,9 @@ TEST(AudioProcessingImplTest,
const auto* echo_control_factory_ptr = echo_control_factory.get(); const auto* echo_control_factory_ptr = echo_control_factory.get();
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoControlFactory(std::move(echo_control_factory)) .SetEchoControlFactory(std::move(echo_control_factory))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
// Disable AGC. // Disable AGC.
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
apm_config.gain_controller1.enabled = false; apm_config.gain_controller1.enabled = false;
@ -472,9 +472,9 @@ TEST(AudioProcessingImplTest,
const auto* echo_control_factory_ptr = echo_control_factory.get(); const auto* echo_control_factory_ptr = echo_control_factory.get();
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoControlFactory(std::move(echo_control_factory)) .SetEchoControlFactory(std::move(echo_control_factory))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
// Enable AGC1. // Enable AGC1.
apm_config.gain_controller1.enabled = true; apm_config.gain_controller1.enabled = true;
@ -527,9 +527,9 @@ TEST(AudioProcessingImplTest, EchoControllerObservesPlayoutVolumeChange) {
const auto* echo_control_factory_ptr = echo_control_factory.get(); const auto* echo_control_factory_ptr = echo_control_factory.get();
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoControlFactory(std::move(echo_control_factory)) .SetEchoControlFactory(std::move(echo_control_factory))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
// Disable AGC. // Disable AGC.
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
apm_config.gain_controller1.enabled = false; apm_config.gain_controller1.enabled = false;
@ -584,10 +584,10 @@ TEST(AudioProcessingImplTest, RenderPreProcessorBeforeEchoDetector) {
new TestRenderPreProcessor()); new TestRenderPreProcessor());
// Create APM injecting the test echo detector and render pre-processor. // Create APM injecting the test echo detector and render pre-processor.
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoDetector(test_echo_detector) .SetEchoDetector(test_echo_detector)
.SetRenderPreProcessing(std::move(test_render_pre_processor)) .SetRenderPreProcessing(std::move(test_render_pre_processor))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
webrtc::AudioProcessing::Config apm_config; webrtc::AudioProcessing::Config apm_config;
apm_config.pre_amplifier.enabled = true; apm_config.pre_amplifier.enabled = true;
apm->ApplyConfig(apm_config); apm->ApplyConfig(apm_config);

View File

@ -16,7 +16,7 @@
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "api/array_view.h" #include "api/array_view.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "api/numerics/samples_stats_counter.h" #include "api/numerics/samples_stats_counter.h"
#include "api/test/metrics/global_metrics_logger_and_exporter.h" #include "api/test/metrics/global_metrics_logger_and_exporter.h"
@ -449,31 +449,31 @@ class CallSimulator : public ::testing::TestWithParam<SimulationConfig> {
int num_capture_channels = 1; int num_capture_channels = 1;
switch (simulation_config_.simulation_settings) { switch (simulation_config_.simulation_settings) {
case SettingsType::kDefaultApmMobile: { case SettingsType::kDefaultApmMobile: {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
ASSERT_TRUE(!!apm_); ASSERT_TRUE(!!apm_);
set_default_mobile_apm_runtime_settings(apm_.get()); set_default_mobile_apm_runtime_settings(apm_.get());
break; break;
} }
case SettingsType::kDefaultApmDesktop: { case SettingsType::kDefaultApmDesktop: {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
ASSERT_TRUE(!!apm_); ASSERT_TRUE(!!apm_);
set_default_desktop_apm_runtime_settings(apm_.get()); set_default_desktop_apm_runtime_settings(apm_.get());
break; break;
} }
case SettingsType::kAllSubmodulesTurnedOff: { case SettingsType::kAllSubmodulesTurnedOff: {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
ASSERT_TRUE(!!apm_); ASSERT_TRUE(!!apm_);
turn_off_default_apm_runtime_settings(apm_.get()); turn_off_default_apm_runtime_settings(apm_.get());
break; break;
} }
case SettingsType::kDefaultApmDesktopWithoutDelayAgnostic: { case SettingsType::kDefaultApmDesktopWithoutDelayAgnostic: {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
ASSERT_TRUE(!!apm_); ASSERT_TRUE(!!apm_);
set_default_desktop_apm_runtime_settings(apm_.get()); set_default_desktop_apm_runtime_settings(apm_.get());
break; break;
} }
case SettingsType::kDefaultApmDesktopWithoutExtendedFilter: { case SettingsType::kDefaultApmDesktopWithoutExtendedFilter: {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
ASSERT_TRUE(!!apm_); ASSERT_TRUE(!!apm_);
set_default_desktop_apm_runtime_settings(apm_.get()); set_default_desktop_apm_runtime_settings(apm_.get());
break; break;

View File

@ -22,7 +22,7 @@
#include "absl/flags/flag.h" #include "absl/flags/flag.h"
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/audio/echo_detector_creator.h" #include "api/audio/echo_detector_creator.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "api/make_ref_counted.h" #include "api/make_ref_counted.h"
@ -476,7 +476,7 @@ ApmTest::ApmTest()
far_file_(NULL), far_file_(NULL),
near_file_(NULL), near_file_(NULL),
out_file_(NULL) { out_file_(NULL) {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
AudioProcessing::Config apm_config = apm_->GetConfig(); AudioProcessing::Config apm_config = apm_->GetConfig();
apm_config.gain_controller1.analog_gain_controller.enabled = false; apm_config.gain_controller1.analog_gain_controller.enabled = false;
apm_config.pipeline.maximum_internal_processing_rate = 48000; apm_config.pipeline.maximum_internal_processing_rate = 48000;
@ -1334,7 +1334,7 @@ TEST_F(ApmTest, NoProcessingWhenAllComponentsDisabledFloat) {
auto src_channels = &src[0]; auto src_channels = &src[0];
auto dest_channels = &dest[0]; auto dest_channels = &dest[0];
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
EXPECT_NOERR(apm_->ProcessStream(&src_channels, StreamConfig(sample_rate, 1), EXPECT_NOERR(apm_->ProcessStream(&src_channels, StreamConfig(sample_rate, 1),
StreamConfig(sample_rate, 1), StreamConfig(sample_rate, 1),
&dest_channels)); &dest_channels));
@ -1755,9 +1755,9 @@ TEST_F(ApmTest, Process) {
if (test->num_input_channels() != test->num_output_channels()) if (test->num_input_channels() != test->num_output_channels())
continue; continue;
apm_ = BuiltinAudioProcessingFactory() apm_ = BuiltinAudioProcessingBuilder()
.SetEchoDetector(CreateEchoDetector()) .SetEchoDetector(CreateEchoDetector())
.Create(CreateEnvironment()); .Build(CreateEnvironment());
AudioProcessing::Config apm_config = apm_->GetConfig(); AudioProcessing::Config apm_config = apm_->GetConfig();
apm_config.gain_controller1.analog_gain_controller.enabled = false; apm_config.gain_controller1.analog_gain_controller.enabled = false;
apm_->ApplyConfig(apm_config); apm_->ApplyConfig(apm_config);
@ -1994,9 +1994,9 @@ class AudioProcessingTest
absl::string_view output_file_prefix) { absl::string_view output_file_prefix) {
AudioProcessing::Config apm_config; AudioProcessing::Config apm_config;
apm_config.gain_controller1.analog_gain_controller.enabled = false; apm_config.gain_controller1.analog_gain_controller.enabled = false;
scoped_refptr<AudioProcessing> ap = BuiltinAudioProcessingFactory() scoped_refptr<AudioProcessing> ap = BuiltinAudioProcessingBuilder()
.SetConfig(apm_config) .SetConfig(apm_config)
.Create(CreateEnvironment()); .Build(CreateEnvironment());
EnableAllAPComponents(ap.get()); EnableAllAPComponents(ap.get());
@ -2422,7 +2422,7 @@ void RunApmRateAndChannelTest(
apm_config.pipeline.multi_channel_capture = true; apm_config.pipeline.multi_channel_capture = true;
apm_config.echo_canceller.enabled = true; apm_config.echo_canceller.enabled = true;
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory(apm_config).Create(CreateEnvironment()); BuiltinAudioProcessingBuilder(apm_config).Build(CreateEnvironment());
StreamConfig render_input_stream_config; StreamConfig render_input_stream_config;
StreamConfig render_output_stream_config; StreamConfig render_output_stream_config;
@ -2532,9 +2532,9 @@ TEST(ApmConfiguration, EnablePostProcessing) {
auto mock_post_processor = auto mock_post_processor =
std::unique_ptr<CustomProcessing>(mock_post_processor_ptr); std::unique_ptr<CustomProcessing>(mock_post_processor_ptr);
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetCapturePostProcessing(std::move(mock_post_processor)) .SetCapturePostProcessing(std::move(mock_post_processor))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
Int16FrameData audio; Int16FrameData audio;
audio.num_channels = 1; audio.num_channels = 1;
@ -2554,9 +2554,9 @@ TEST(ApmConfiguration, EnablePreProcessing) {
auto mock_pre_processor = auto mock_pre_processor =
std::unique_ptr<CustomProcessing>(mock_pre_processor_ptr); std::unique_ptr<CustomProcessing>(mock_pre_processor_ptr);
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetRenderPreProcessing(std::move(mock_pre_processor)) .SetRenderPreProcessing(std::move(mock_pre_processor))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
Int16FrameData audio; Int16FrameData audio;
audio.num_channels = 1; audio.num_channels = 1;
@ -2576,9 +2576,9 @@ TEST(ApmConfiguration, EnableCaptureAnalyzer) {
auto mock_capture_analyzer = auto mock_capture_analyzer =
std::unique_ptr<CustomAudioAnalyzer>(mock_capture_analyzer_ptr); std::unique_ptr<CustomAudioAnalyzer>(mock_capture_analyzer_ptr);
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetCaptureAnalyzer(std::move(mock_capture_analyzer)) .SetCaptureAnalyzer(std::move(mock_capture_analyzer))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
Int16FrameData audio; Int16FrameData audio;
audio.num_channels = 1; audio.num_channels = 1;
@ -2597,9 +2597,9 @@ TEST(ApmConfiguration, PreProcessingReceivesRuntimeSettings) {
auto mock_pre_processor = auto mock_pre_processor =
std::unique_ptr<CustomProcessing>(mock_pre_processor_ptr); std::unique_ptr<CustomProcessing>(mock_pre_processor_ptr);
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetRenderPreProcessing(std::move(mock_pre_processor)) .SetRenderPreProcessing(std::move(mock_pre_processor))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
apm->SetRuntimeSetting( apm->SetRuntimeSetting(
AudioProcessing::RuntimeSetting::CreateCustomRenderSetting(0)); AudioProcessing::RuntimeSetting::CreateCustomRenderSetting(0));
@ -2641,9 +2641,9 @@ TEST(ApmConfiguration, EchoControlInjection) {
new MyEchoControlFactory()); new MyEchoControlFactory());
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoControlFactory(std::move(echo_control_factory)) .SetEchoControlFactory(std::move(echo_control_factory))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
Int16FrameData audio; Int16FrameData audio;
audio.num_channels = 1; audio.num_channels = 1;
@ -2670,9 +2670,9 @@ TEST(ApmConfiguration, EchoDetectorInjection) {
Initialize(/*capture_sample_rate_hz=*/16000, _, Initialize(/*capture_sample_rate_hz=*/16000, _,
/*render_sample_rate_hz=*/16000, _)) /*render_sample_rate_hz=*/16000, _))
.Times(1); .Times(1);
scoped_refptr<AudioProcessing> apm = BuiltinAudioProcessingFactory() scoped_refptr<AudioProcessing> apm = BuiltinAudioProcessingBuilder()
.SetEchoDetector(mock_echo_detector) .SetEchoDetector(mock_echo_detector)
.Create(CreateEnvironment()); .Build(CreateEnvironment());
// The echo detector is included in processing when enabled. // The echo detector is included in processing when enabled.
EXPECT_CALL(*mock_echo_detector, AnalyzeRenderAudio(_)) EXPECT_CALL(*mock_echo_detector, AnalyzeRenderAudio(_))
@ -2727,9 +2727,9 @@ TEST(ApmConfiguration, EchoDetectorInjection) {
rtc::scoped_refptr<AudioProcessing> CreateApm(bool mobile_aec) { rtc::scoped_refptr<AudioProcessing> CreateApm(bool mobile_aec) {
// Enable residual echo detection, for stats. // Enable residual echo detection, for stats.
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoDetector(CreateEchoDetector()) .SetEchoDetector(CreateEchoDetector())
.Create(CreateEnvironment()); .Build(CreateEnvironment());
if (!apm) { if (!apm) {
return apm; return apm;
} }
@ -2873,7 +2873,7 @@ TEST(ApmStatistics, DoNotReportVoiceDetectedStat) {
} }
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
apm->Initialize(processing_config); apm->Initialize(processing_config);
// No metric should be reported. // No metric should be reported.
@ -2888,7 +2888,7 @@ TEST(ApmStatistics, DoNotReportVoiceDetectedStat) {
TEST(ApmStatistics, GetStatisticsReportsNoEchoDetectorStatsWhenDisabled) { TEST(ApmStatistics, GetStatisticsReportsNoEchoDetectorStatsWhenDisabled) {
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
Int16FrameData frame; Int16FrameData frame;
frame.num_channels = 1; frame.num_channels = 1;
SetFrameSampleRate(&frame, AudioProcessing::NativeRate::kSampleRate32kHz); SetFrameSampleRate(&frame, AudioProcessing::NativeRate::kSampleRate32kHz);
@ -2907,9 +2907,9 @@ TEST(ApmStatistics, GetStatisticsReportsNoEchoDetectorStatsWhenDisabled) {
TEST(ApmStatistics, GetStatisticsReportsEchoDetectorStatsWhenEnabled) { TEST(ApmStatistics, GetStatisticsReportsEchoDetectorStatsWhenEnabled) {
// Create APM with an echo detector injected. // Create APM with an echo detector injected.
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoDetector(CreateEchoDetector()) .SetEchoDetector(CreateEchoDetector())
.Create(CreateEnvironment()); .Build(CreateEnvironment());
Int16FrameData frame; Int16FrameData frame;
frame.num_channels = 1; frame.num_channels = 1;
SetFrameSampleRate(&frame, AudioProcessing::NativeRate::kSampleRate32kHz); SetFrameSampleRate(&frame, AudioProcessing::NativeRate::kSampleRate32kHz);
@ -3284,7 +3284,7 @@ TEST_P(ApmFormatHandlingTest, IntApi) {
// Call APM. // Call APM.
scoped_refptr<AudioProcessing> ap = scoped_refptr<AudioProcessing> ap =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
int error; int error;
if (stream_direction_ == kForward) { if (stream_direction_ == kForward) {
error = ap->ProcessStream(input_block.data(), test_params_.input_config, error = ap->ProcessStream(input_block.data(), test_params_.input_config,
@ -3363,7 +3363,7 @@ TEST_P(ApmFormatHandlingTest, FloatApi) {
// Call APM. // Call APM.
scoped_refptr<AudioProcessing> ap = scoped_refptr<AudioProcessing> ap =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
int error; int error;
if (stream_direction_ == kForward) { if (stream_direction_ == kForward) {
error = error =
@ -3439,7 +3439,7 @@ TEST(ApmAnalyzeReverseStreamFormatTest, AnalyzeReverseStream) {
// Call APM. // Call APM.
scoped_refptr<AudioProcessing> ap = scoped_refptr<AudioProcessing> ap =
BuiltinAudioProcessingFactory().Create(CreateEnvironment()); BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
int error = ap->AnalyzeReverseStream(input_block.channels(), input_config); int error = ap->AnalyzeReverseStream(input_block.channels(), input_config);
// Check output. // Check output.

View File

@ -176,10 +176,10 @@ class MockAudioProcessing : public AudioProcessing {
MOCK_METHOD(AudioProcessing::Config, GetConfig, (), (const, override)); MOCK_METHOD(AudioProcessing::Config, GetConfig, (), (const, override));
}; };
class MockAudioProcessingFactory : public AudioProcessingFactory { class MockAudioProcessingBuilder : public AudioProcessingBuilderInterface {
public: public:
MOCK_METHOD(scoped_refptr<AudioProcessing>, MOCK_METHOD(scoped_refptr<AudioProcessing>,
Create, Build,
(const Environment&), (const Environment&),
(override)); (override));
}; };

View File

@ -13,7 +13,7 @@
#include <string> #include <string>
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "modules/audio_processing/test/protobuf_utils.h" #include "modules/audio_processing/test/protobuf_utils.h"
#include "modules/audio_processing/test/runtime_setting_util.h" #include "modules/audio_processing/test/runtime_setting_util.h"
@ -190,7 +190,7 @@ void DebugDumpReplayer::MaybeRecreateApm(const audioproc::Config& msg) {
// We only create APM once, since changes on these fields should not // We only create APM once, since changes on these fields should not
// happen in current implementation. // happen in current implementation.
if (apm_ == nullptr) { if (apm_ == nullptr) {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
} }
} }

View File

@ -15,7 +15,7 @@
#include <vector> #include <vector>
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/audio/echo_canceller3_factory.h" #include "api/audio/echo_canceller3_factory.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "modules/audio_coding/neteq/tools/resample_input_audio_file.h" #include "modules/audio_coding/neteq/tools/resample_input_audio_file.h"
@ -141,7 +141,7 @@ DebugDumpGenerator::DebugDumpGenerator(absl::string_view input_file_name,
enable_pre_amplifier_(enable_pre_amplifier), enable_pre_amplifier_(enable_pre_amplifier),
worker_queue_("debug_dump_generator_worker_queue"), worker_queue_("debug_dump_generator_worker_queue"),
dump_file_name_(dump_file_name) { dump_file_name_(dump_file_name) {
apm_ = BuiltinAudioProcessingFactory().Create(CreateEnvironment()); apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
} }
DebugDumpGenerator::DebugDumpGenerator( DebugDumpGenerator::DebugDumpGenerator(

View File

@ -2578,7 +2578,7 @@ if (rtc_include_tests && !build_with_chromium) {
"../api/audio:audio_device", "../api/audio:audio_device",
"../api/audio:audio_mixer_api", "../api/audio:audio_mixer_api",
"../api/audio:audio_processing", "../api/audio:audio_processing",
"../api/audio:builtin_audio_processing_factory", "../api/audio:builtin_audio_processing_builder",
"../api/crypto:frame_decryptor_interface", "../api/crypto:frame_decryptor_interface",
"../api/crypto:frame_encryptor_interface", "../api/crypto:frame_encryptor_interface",
"../api/crypto:options", "../api/crypto:options",

View File

@ -75,7 +75,7 @@ using ::testing::NiceMock;
using ::testing::Return; using ::testing::Return;
using ::testing::UnorderedElementsAre; using ::testing::UnorderedElementsAre;
using ::webrtc::test::MockAudioProcessing; using ::webrtc::test::MockAudioProcessing;
using ::webrtc::test::MockAudioProcessingFactory; using ::webrtc::test::MockAudioProcessingBuilder;
static const char kStunIceServer[] = "stun:stun.l.google.com:19302"; static const char kStunIceServer[] = "stun:stun.l.google.com:19302";
static const char kTurnIceServer[] = "turn:test.com:1234"; static const char kTurnIceServer[] = "turn:test.com:1234";
@ -726,17 +726,17 @@ TEST(PeerConnectionFactoryDependenciesTest, UsesPacketSocketFactory) {
TEST(PeerConnectionFactoryDependenciesTest, TEST(PeerConnectionFactoryDependenciesTest,
CreatesAudioProcessingWithProvidedFactory) { CreatesAudioProcessingWithProvidedFactory) {
auto ap_factory = std::make_unique<MockAudioProcessingFactory>(); auto ap_factory = std::make_unique<MockAudioProcessingBuilder>();
auto audio_processing = make_ref_counted<NiceMock<MockAudioProcessing>>(); auto audio_processing = make_ref_counted<NiceMock<MockAudioProcessing>>();
// Validate that provided audio_processing is used by expecting that a request // Validate that provided audio_processing is used by expecting that a request
// to start AEC Dump with unnatural size limit is propagated to the // to start AEC Dump with unnatural size limit is propagated to the
// `audio_processing`. // `audio_processing`.
EXPECT_CALL(*audio_processing, CreateAndAttachAecDump(A<FILE*>(), 24'242, _)); EXPECT_CALL(*audio_processing, CreateAndAttachAecDump(A<FILE*>(), 24'242, _));
EXPECT_CALL(*ap_factory, Create).WillOnce(Return(audio_processing)); EXPECT_CALL(*ap_factory, Build).WillOnce(Return(audio_processing));
PeerConnectionFactoryDependencies pcf_dependencies; PeerConnectionFactoryDependencies pcf_dependencies;
pcf_dependencies.adm = FakeAudioCaptureModule::Create(); pcf_dependencies.adm = FakeAudioCaptureModule::Create();
pcf_dependencies.audio_processing_factory = std::move(ap_factory); pcf_dependencies.audio_processing_builder = std::move(ap_factory);
EnableMediaWithDefaults(pcf_dependencies); EnableMediaWithDefaults(pcf_dependencies);
scoped_refptr<PeerConnectionFactoryInterface> pcf = scoped_refptr<PeerConnectionFactoryInterface> pcf =

View File

@ -10,7 +10,7 @@
#include "pc/test/integration_test_helpers.h" #include "pc/test/integration_test_helpers.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
namespace webrtc { namespace webrtc {
@ -230,8 +230,8 @@ bool PeerConnectionIntegrationWrapper::Init(
// Standard creation method for APM may return a null pointer when // Standard creation method for APM may return a null pointer when
// AudioProcessing is disabled with a build flag. Bypass that flag by // AudioProcessing is disabled with a build flag. Bypass that flag by
// explicitly injecting the factory. // explicitly injecting the factory.
pc_factory_dependencies.audio_processing_factory = pc_factory_dependencies.audio_processing_builder =
std::make_unique<BuiltinAudioProcessingFactory>(); std::make_unique<BuiltinAudioProcessingBuilder>();
EnableMediaWithDefaults(pc_factory_dependencies); EnableMediaWithDefaults(pc_factory_dependencies);
} }

View File

@ -512,7 +512,7 @@ webrtc_fuzzer_test("audio_processing_fuzzer") {
"../../api:scoped_refptr", "../../api:scoped_refptr",
"../../api/audio:aec3_factory", "../../api/audio:aec3_factory",
"../../api/audio:audio_processing", "../../api/audio:audio_processing",
"../../api/audio:builtin_audio_processing_factory", "../../api/audio:builtin_audio_processing_builder",
"../../api/audio:echo_detector_creator", "../../api/audio:echo_detector_creator",
"../../api/environment", "../../api/environment",
"../../api/environment:environment_factory", "../../api/environment:environment_factory",
@ -539,7 +539,7 @@ webrtc_fuzzer_test("audio_processing_sample_rate_fuzzer") {
"../../api:scoped_refptr", "../../api:scoped_refptr",
"../../api/audio:audio_frame_api", "../../api/audio:audio_frame_api",
"../../api/audio:audio_processing", "../../api/audio:audio_processing",
"../../api/audio:builtin_audio_processing_factory", "../../api/audio:builtin_audio_processing_builder",
"../../api/environment:environment_factory", "../../api/environment:environment_factory",
"../../modules/audio_processing", "../../modules/audio_processing",
"../../modules/audio_processing:audio_frame_proxies", "../../modules/audio_processing:audio_frame_proxies",

View File

@ -14,7 +14,7 @@
#include "absl/base/nullability.h" #include "absl/base/nullability.h"
#include "absl/memory/memory.h" #include "absl/memory/memory.h"
#include "api/audio/audio_processing.h" #include "api/audio/audio_processing.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/audio/echo_canceller3_factory.h" #include "api/audio/echo_canceller3_factory.h"
#include "api/audio/echo_detector_creator.h" #include "api/audio/echo_detector_creator.h"
#include "api/environment/environment.h" #include "api/environment/environment.h"
@ -113,11 +113,11 @@ rtc::scoped_refptr<AudioProcessing> CreateApm(
apm_config.transient_suppression.enabled = use_ts; apm_config.transient_suppression.enabled = use_ts;
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetEchoControlFactory(std::move(echo_control_factory)) .SetEchoControlFactory(std::move(echo_control_factory))
.SetEchoDetector(use_red ? CreateEchoDetector() : nullptr) .SetEchoDetector(use_red ? CreateEchoDetector() : nullptr)
.SetConfig(apm_config) .SetConfig(apm_config)
.Create(GetEnvironment()); .Build(GetEnvironment());
#ifdef WEBRTC_LINUX #ifdef WEBRTC_LINUX
apm->AttachAecDump(AecDumpFactory::Create("/dev/null", -1, worker_queue)); apm->AttachAecDump(AecDumpFactory::Create("/dev/null", -1, worker_queue));

View File

@ -14,7 +14,7 @@
#include <limits> #include <limits>
#include "api/audio/audio_processing.h" #include "api/audio/audio_processing.h"
#include "api/audio/builtin_audio_processing_factory.h" #include "api/audio/builtin_audio_processing_builder.h"
#include "api/environment/environment_factory.h" #include "api/environment/environment_factory.h"
#include "rtc_base/checks.h" #include "rtc_base/checks.h"
#include "test/fuzzers/fuzz_data_helper.h" #include "test/fuzzers/fuzz_data_helper.h"
@ -91,12 +91,12 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
? std::make_unique<NoopCustomProcessing>() ? std::make_unique<NoopCustomProcessing>()
: nullptr; : nullptr;
scoped_refptr<AudioProcessing> apm = scoped_refptr<AudioProcessing> apm =
BuiltinAudioProcessingFactory() BuiltinAudioProcessingBuilder()
.SetConfig({.pipeline = {.multi_channel_render = true, .SetConfig({.pipeline = {.multi_channel_render = true,
.multi_channel_capture = true}}) .multi_channel_capture = true}})
.SetCapturePostProcessing(std::move(capture_processor)) .SetCapturePostProcessing(std::move(capture_processor))
.SetRenderPreProcessing(std::move(render_processor)) .SetRenderPreProcessing(std::move(render_processor))
.Create(CreateEnvironment()); .Build(CreateEnvironment());
RTC_DCHECK(apm); RTC_DCHECK(apm);
std::array<int16_t, kMaxSamplesPerChannel * kMaxNumChannels> fixed_frame; std::array<int16_t, kMaxSamplesPerChannel * kMaxNumChannels> fixed_frame;

View File

@ -228,7 +228,7 @@ PeerConnectionFactoryDependencies CreatePCFDependencies(
// Media dependencies // Media dependencies
pcf_deps.adm = std::move(audio_device_module); pcf_deps.adm = std::move(audio_device_module);
if (pcf_dependencies->audio_processing != nullptr) { if (pcf_dependencies->audio_processing != nullptr) {
pcf_deps.audio_processing_factory = pcf_deps.audio_processing_builder =
CustomAudioProcessing(pcf_dependencies->audio_processing); CustomAudioProcessing(pcf_dependencies->audio_processing);
} }
pcf_deps.audio_mixer = pcf_dependencies->audio_mixer; pcf_deps.audio_mixer = pcf_dependencies->audio_mixer;