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}
This commit is contained in:
@ -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 @@ ApmTest::ApmTest()
|
||||
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 @@ TEST_F(ApmTest, NoProcessingWhenAllComponentsDisabledFloat) {
|
||||
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 @@ TEST_F(ApmTest, Process) {
|
||||
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 @@ TEST_F(ApmTest, NoErrorsWithKeyboardChannel) {
|
||||
{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 @@ class AudioProcessingTest
|
||||
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 @@ void RunApmRateAndChannelTest(
|
||||
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 @@ TEST(ApmConfiguration, EnablePostProcessing) {
|
||||
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 @@ TEST(ApmConfiguration, EnablePreProcessing) {
|
||||
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 @@ TEST(ApmConfiguration, EnableCaptureAnalyzer) {
|
||||
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 @@ TEST(ApmConfiguration, PreProcessingReceivesRuntimeSettings) {
|
||||
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 @@ TEST(ApmConfiguration, EchoControlInjection) {
|
||||
new MyEchoControlFactory());
|
||||
|
||||
rtc::scoped_refptr<AudioProcessing> apm =
|
||||
AudioProcessingBuilder()
|
||||
AudioProcessingBuilderForTesting()
|
||||
.SetEchoControlFactory(std::move(echo_control_factory))
|
||||
.Create(webrtc_config);
|
||||
|
||||
@ -2589,7 +2593,7 @@ TEST(ApmConfiguration, EchoControlInjection) {
|
||||
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 @@ TEST(ApmStatistics, ReportOutputRmsDbfs) {
|
||||
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 @@ TEST(ApmStatistics, ReportHasVoice) {
|
||||
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.
|
||||
|
Reference in New Issue
Block a user