APM: Add build flag to allow building WebRTC without APM
This CL adds a build flag to allow building the non-test parts
of WebRTC without the audio processing module.
The CL also ensures that the WebRTC code correctly handles
the case when no APM is available.
Bug: webrtc:5298
Change-Id: I5c8b5d1f7115e5cce2af4c2b5ff701fa1c54e49e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171509
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31133}
diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc
index cdca7c3..90413a8 100644
--- a/modules/audio_processing/audio_processing_unittest.cc
+++ b/modules/audio_processing/audio_processing_unittest.cc
@@ -28,6 +28,7 @@
#include "modules/audio_processing/audio_processing_impl.h"
#include "modules/audio_processing/common.h"
#include "modules/audio_processing/include/mock_audio_processing.h"
+#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
#include "modules/audio_processing/test/protobuf_utils.h"
#include "modules/audio_processing/test/test_utils.h"
#include "rtc_base/arraysize.h"
@@ -426,7 +427,7 @@
far_file_(NULL),
near_file_(NULL),
out_file_(NULL) {
- apm_.reset(AudioProcessingBuilder().Create());
+ apm_.reset(AudioProcessingBuilderForTesting().Create());
AudioProcessing::Config apm_config = apm_->GetConfig();
apm_config.gain_controller1.analog_gain_controller.enabled = false;
apm_config.pipeline.maximum_internal_processing_rate = 48000;
@@ -1176,7 +1177,7 @@
auto src_channels = &src[0];
auto dest_channels = &dest[0];
- apm_.reset(AudioProcessingBuilder().Create());
+ apm_.reset(AudioProcessingBuilderForTesting().Create());
EXPECT_NOERR(apm_->ProcessStream(&src_channels, StreamConfig(sample_rate, 1),
StreamConfig(sample_rate, 1),
&dest_channels));
@@ -1637,7 +1638,7 @@
if (test->num_input_channels() != test->num_output_channels())
continue;
- apm_.reset(AudioProcessingBuilder().Create());
+ apm_.reset(AudioProcessingBuilderForTesting().Create());
AudioProcessing::Config apm_config = apm_->GetConfig();
apm_config.gain_controller1.analog_gain_controller.enabled = false;
apm_->ApplyConfig(apm_config);
@@ -1806,7 +1807,8 @@
{AudioProcessing::kStereoAndKeyboard, AudioProcessing::kStereo},
};
- std::unique_ptr<AudioProcessing> ap(AudioProcessingBuilder().Create());
+ std::unique_ptr<AudioProcessing> ap(
+ AudioProcessingBuilderForTesting().Create());
// Enable one component just to ensure some processing takes place.
AudioProcessing::Config config;
config.noise_suppression.enabled = true;
@@ -1932,7 +1934,8 @@
size_t num_reverse_input_channels,
size_t num_reverse_output_channels,
const std::string& output_file_prefix) {
- std::unique_ptr<AudioProcessing> ap(AudioProcessingBuilder().Create());
+ std::unique_ptr<AudioProcessing> ap(
+ AudioProcessingBuilderForTesting().Create());
AudioProcessing::Config apm_config = ap->GetConfig();
apm_config.gain_controller1.analog_gain_controller.enabled = false;
ap->ApplyConfig(apm_config);
@@ -2316,7 +2319,8 @@
rtc::ArrayView<const int> sample_rates_hz,
rtc::ArrayView<const int> render_channel_counts,
rtc::ArrayView<const int> capture_channel_counts) {
- std::unique_ptr<AudioProcessing> apm(AudioProcessingBuilder().Create());
+ std::unique_ptr<AudioProcessing> apm(
+ AudioProcessingBuilderForTesting().Create());
webrtc::AudioProcessing::Config apm_config;
apm_config.echo_canceller.enabled = true;
apm->ApplyConfig(apm_config);
@@ -2455,7 +2459,7 @@
auto mock_post_processor =
std::unique_ptr<CustomProcessing>(mock_post_processor_ptr);
rtc::scoped_refptr<AudioProcessing> apm =
- AudioProcessingBuilder()
+ AudioProcessingBuilderForTesting()
.SetCapturePostProcessing(std::move(mock_post_processor))
.Create();
@@ -2477,7 +2481,7 @@
auto mock_pre_processor =
std::unique_ptr<CustomProcessing>(mock_pre_processor_ptr);
rtc::scoped_refptr<AudioProcessing> apm =
- AudioProcessingBuilder()
+ AudioProcessingBuilderForTesting()
.SetRenderPreProcessing(std::move(mock_pre_processor))
.Create();
@@ -2499,7 +2503,7 @@
auto mock_capture_analyzer =
std::unique_ptr<CustomAudioAnalyzer>(mock_capture_analyzer_ptr);
rtc::scoped_refptr<AudioProcessing> apm =
- AudioProcessingBuilder()
+ AudioProcessingBuilderForTesting()
.SetCaptureAnalyzer(std::move(mock_capture_analyzer))
.Create();
@@ -2520,7 +2524,7 @@
auto mock_pre_processor =
std::unique_ptr<CustomProcessing>(mock_pre_processor_ptr);
rtc::scoped_refptr<AudioProcessing> apm =
- AudioProcessingBuilder()
+ AudioProcessingBuilderForTesting()
.SetRenderPreProcessing(std::move(mock_pre_processor))
.Create();
apm->SetRuntimeSetting(
@@ -2565,7 +2569,7 @@
new MyEchoControlFactory());
rtc::scoped_refptr<AudioProcessing> apm =
- AudioProcessingBuilder()
+ AudioProcessingBuilderForTesting()
.SetEchoControlFactory(std::move(echo_control_factory))
.Create(webrtc_config);
@@ -2589,7 +2593,7 @@
std::unique_ptr<AudioProcessing> CreateApm(bool mobile_aec) {
Config old_config;
std::unique_ptr<AudioProcessing> apm(
- AudioProcessingBuilder().Create(old_config));
+ AudioProcessingBuilderForTesting().Create(old_config));
if (!apm) {
return apm;
}
@@ -2740,7 +2744,8 @@
ptr[i] = 10000 * ((i % 3) - 1);
}
- std::unique_ptr<AudioProcessing> apm(AudioProcessingBuilder().Create());
+ std::unique_ptr<AudioProcessing> apm(
+ AudioProcessingBuilderForTesting().Create());
apm->Initialize(processing_config);
// If not enabled, no metric should be reported.
@@ -2793,7 +2798,8 @@
ptr[i] = 10000 * ((i % 3) - 1);
}
- std::unique_ptr<AudioProcessing> apm(AudioProcessingBuilder().Create());
+ std::unique_ptr<AudioProcessing> apm(
+ AudioProcessingBuilderForTesting().Create());
apm->Initialize(processing_config);
// If not enabled, no metric should be reported.