From af998e2fdcff0f71128a2d12bf3363a9b7fd702d Mon Sep 17 00:00:00 2001 From: Sam Zackrisson Date: Mon, 18 Jun 2018 16:52:25 +0200 Subject: [PATCH] Remove non-API beamformer references This removes beamformer references from audioproc_f, some non-beamformer tests, and a few other bits and bobs. The beamformer is, after this, very decoupled from the remaining APM code. Bug: webrtc:9402 Change-Id: Iaafc95517013d7a17723ef2329f17b5e09069bc9 Reviewed-on: https://webrtc-review.googlesource.com/83983 Reviewed-by: Minyue Li Commit-Queue: Sam Zackrisson Cr-Commit-Position: refs/heads/master@{#23649} --- .../audio_processing/audio_processing_impl.h | 2 - .../audio_processing_performance_unittest.cc | 38 ------------------- .../audio_processing_unittest.cc | 1 - .../beamformer/nonlinear_beamformer_test.cc | 23 +++++++++++ .../test/audio_processing_simulator.cc | 6 --- .../test/audio_processing_simulator.h | 2 - .../test/audioproc_float_impl.cc | 26 ------------- modules/audio_processing/test/test_utils.cc | 23 ----------- modules/audio_processing/test/test_utils.h | 10 ----- 9 files changed, 23 insertions(+), 108 deletions(-) diff --git a/modules/audio_processing/audio_processing_impl.h b/modules/audio_processing/audio_processing_impl.h index ff6448fa5d..f0f823f489 100644 --- a/modules/audio_processing/audio_processing_impl.h +++ b/modules/audio_processing/audio_processing_impl.h @@ -244,8 +244,6 @@ class AudioProcessingImpl : public AudioProcessing { // acquired. void InitializeTransient() RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); - void InitializeBeamformer() - RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); void InitializeIntelligibility() RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); int InitializeLocked(const ProcessingConfig& config) diff --git a/modules/audio_processing/audio_processing_performance_unittest.cc b/modules/audio_processing/audio_processing_performance_unittest.cc index d3121370e7..2e985cef8f 100644 --- a/modules/audio_processing/audio_processing_performance_unittest.cc +++ b/modules/audio_processing/audio_processing_performance_unittest.cc @@ -49,7 +49,6 @@ enum class ProcessorType { kRender, kCapture }; enum class SettingsType { kDefaultApmDesktop, kDefaultApmMobile, - kDefaultApmDesktopAndBeamformer, kDefaultApmDesktopAndIntelligibilityEnhancer, kAllSubmodulesTurnedOff, kDefaultApmDesktopWithoutDelayAgnostic, @@ -114,17 +113,6 @@ struct SimulationConfig { } } #endif - - const SettingsType beamformer_settings[] = { - SettingsType::kDefaultApmDesktopAndBeamformer}; - - const int beamformer_sample_rates[] = {8000, 16000, 32000, 48000}; - - for (auto sample_rate : beamformer_sample_rates) { - for (auto settings : beamformer_settings) { - simulation_configs.push_back(SimulationConfig(sample_rate, settings)); - } - } #endif const SettingsType mobile_settings[] = {SettingsType::kDefaultApmMobile}; @@ -149,9 +137,6 @@ struct SimulationConfig { case SettingsType::kDefaultApmDesktop: description = "DefaultApmDesktop"; break; - case SettingsType::kDefaultApmDesktopAndBeamformer: - description = "DefaultApmDesktopAndBeamformer"; - break; case SettingsType::kDefaultApmDesktopAndIntelligibilityEnhancer: description = "DefaultApmDesktopAndIntelligibilityEnhancer"; break; @@ -543,18 +528,6 @@ class CallSimulator : public ::testing::TestWithParam { config->Set(new DelayAgnostic(true)); }; - // Lambda function for adding beamformer settings to a config. - auto add_beamformer_config = [](Config* config) { - const size_t num_mics = 2; - const std::vector array_geometry = - ParseArrayGeometry("0 0 0 0.05 0 0", num_mics); - RTC_CHECK_EQ(array_geometry.size(), num_mics); - - config->Set( - new Beamforming(true, array_geometry, - SphericalPointf(DegreesToRadians(90), 0.f, 1.f))); - }; - int num_capture_channels = 1; switch (simulation_config_.simulation_settings) { case SettingsType::kDefaultApmMobile: { @@ -572,17 +545,6 @@ class CallSimulator : public ::testing::TestWithParam { apm_->SetExtraOptions(config); break; } - case SettingsType::kDefaultApmDesktopAndBeamformer: { - Config config; - add_beamformer_config(&config); - add_default_desktop_config(&config); - apm_.reset(AudioProcessingBuilder().Create(config)); - ASSERT_TRUE(!!apm_); - set_default_desktop_apm_runtime_settings(apm_.get()); - apm_->SetExtraOptions(config); - num_capture_channels = 2; - break; - } case SettingsType::kDefaultApmDesktopAndIntelligibilityEnhancer: { Config config; config.Set(new Intelligibility(true)); diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc index 0954190130..4b244fc8ab 100644 --- a/modules/audio_processing/audio_processing_unittest.cc +++ b/modules/audio_processing/audio_processing_unittest.cc @@ -21,7 +21,6 @@ #include "common_audio/signal_processing/include/signal_processing_library.h" #include "modules/audio_processing/aec_dump/aec_dump_factory.h" #include "modules/audio_processing/audio_processing_impl.h" -#include "modules/audio_processing/beamformer/mock_nonlinear_beamformer.h" #include "modules/audio_processing/common.h" #include "modules/audio_processing/include/audio_processing.h" #include "modules/audio_processing/include/mock_audio_processing.h" diff --git a/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc b/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc index 296cd6d4ae..7db5b9f38f 100644 --- a/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc +++ b/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc @@ -37,6 +37,29 @@ const char kUsage[] = "in as a single band, unlike the audio processing interface which splits\n" "signals into multiple bands.\n"; +std::vector ParseArrayGeometry(const std::string& mic_positions) { + const std::vector values = ParseList(mic_positions); + const size_t num_mics = + rtc::CheckedDivExact(values.size(), static_cast(3)); + RTC_CHECK_GT(num_mics, 0) << "mic_positions is not large enough."; + + std::vector result; + result.reserve(num_mics); + for (size_t i = 0; i < values.size(); i += 3) { + result.push_back(Point(values[i + 0], values[i + 1], values[i + 2])); + } + + return result; +} + +std::vector ParseArrayGeometry(const std::string& mic_positions, + size_t num_mics) { + std::vector result = ParseArrayGeometry(mic_positions); + RTC_CHECK_EQ(result.size(), num_mics) + << "Could not parse mic_positions or incorrect number of points."; + return result; +} + } // namespace int main(int argc, char* argv[]) { diff --git a/modules/audio_processing/test/audio_processing_simulator.cc b/modules/audio_processing/test/audio_processing_simulator.cc index ed30230748..a0740cf0c8 100644 --- a/modules/audio_processing/test/audio_processing_simulator.cc +++ b/modules/audio_processing/test/audio_processing_simulator.cc @@ -579,12 +579,6 @@ void AudioProcessingSimulator::CreateAudioProcessor() { Config config; AudioProcessing::Config apm_config; std::unique_ptr echo_control_factory; - if (settings_.use_bf && *settings_.use_bf) { - config.Set(new Beamforming( - true, ParseArrayGeometry(*settings_.microphone_positions), - SphericalPointf(DegreesToRadians(settings_.target_angle_degrees), 0.f, - 1.f))); - } if (settings_.use_ts) { config.Set(new ExperimentalNs(*settings_.use_ts)); } diff --git a/modules/audio_processing/test/audio_processing_simulator.h b/modules/audio_processing/test/audio_processing_simulator.h index 996df71710..a98f8fc4ce 100644 --- a/modules/audio_processing/test/audio_processing_simulator.h +++ b/modules/audio_processing/test/audio_processing_simulator.h @@ -41,8 +41,6 @@ struct SimulationSettings { rtc::Optional output_num_channels; rtc::Optional reverse_output_sample_rate_hz; rtc::Optional reverse_output_num_channels; - rtc::Optional microphone_positions; - float target_angle_degrees = 90.f; rtc::Optional output_filename; rtc::Optional reverse_output_filename; rtc::Optional input_filename; diff --git a/modules/audio_processing/test/audioproc_float_impl.cc b/modules/audio_processing/test/audioproc_float_impl.cc index 57fcdfb975..bfaa13620a 100644 --- a/modules/audio_processing/test/audioproc_float_impl.cc +++ b/modules/audio_processing/test/audioproc_float_impl.cc @@ -56,15 +56,6 @@ DEFINE_int(output_sample_rate_hz, DEFINE_int(reverse_output_sample_rate_hz, kParameterNotSpecifiedValue, "Reverse stream output sample rate in Hz"); -DEFINE_string(mic_positions, - "", - "Space delimited cartesian coordinates of microphones in " - "meters. The coordinates of each point are contiguous. For a " - "two element array: \"x1 y1 z1 x2 y2 z2\""); -DEFINE_float(target_angle_degrees, - 90.f, - "The azimuth of the target in degrees (0-360). Only applies to " - "beamforming."); DEFINE_bool(fixed_interface, false, "Use the fixed interface when operating on wav files"); @@ -96,9 +87,6 @@ DEFINE_int(ns, DEFINE_int(ts, kParameterNotSpecifiedValue, "Activate (1) or deactivate(0) the transient suppressor"); -DEFINE_int(bf, - kParameterNotSpecifiedValue, - "Activate (1) or deactivate(0) the beamformer"); DEFINE_int(ie, kParameterNotSpecifiedValue, "Activate (1) or deactivate(0) the intelligibility enhancer"); @@ -222,7 +210,6 @@ SimulationSettings CreateSettings() { settings.use_le = true; settings.use_vad = true; settings.use_ie = false; - settings.use_bf = false; settings.use_ts = true; settings.use_ns = true; settings.use_hpf = true; @@ -249,8 +236,6 @@ SimulationSettings CreateSettings() { &settings.output_sample_rate_hz); SetSettingIfSpecified(FLAG_reverse_output_sample_rate_hz, &settings.reverse_output_sample_rate_hz); - SetSettingIfSpecified(FLAG_mic_positions, &settings.microphone_positions); - settings.target_angle_degrees = FLAG_target_angle_degrees; SetSettingIfFlagSet(FLAG_aec, &settings.use_aec); SetSettingIfFlagSet(FLAG_aecm, &settings.use_aecm); SetSettingIfFlagSet(FLAG_ed, &settings.use_ed); @@ -261,7 +246,6 @@ SimulationSettings CreateSettings() { SetSettingIfFlagSet(FLAG_hpf, &settings.use_hpf); SetSettingIfFlagSet(FLAG_ns, &settings.use_ns); SetSettingIfFlagSet(FLAG_ts, &settings.use_ts); - SetSettingIfFlagSet(FLAG_bf, &settings.use_bf); SetSettingIfFlagSet(FLAG_ie, &settings.use_ie); SetSettingIfFlagSet(FLAG_vad, &settings.use_vad); SetSettingIfFlagSet(FLAG_le, &settings.use_le); @@ -364,16 +348,6 @@ void PerformBasicParameterSanityChecks(const SimulationSettings& settings) { *settings.reverse_output_num_channels <= 0, "Error: --reverse_output_num_channels must be positive!\n"); - ReportConditionalErrorAndExit( - settings.use_bf && *settings.use_bf && !settings.microphone_positions, - "Error: --mic_positions must be specified when the beamformer is " - "activated.\n"); - - ReportConditionalErrorAndExit( - settings.target_angle_degrees < 0.f || - settings.target_angle_degrees >= 360.f, - "Error: -target_angle_degrees must be specified between 0 and 360.\n"); - ReportConditionalErrorAndExit( settings.aec_suppression_level && ((*settings.aec_suppression_level) < 0 || diff --git a/modules/audio_processing/test/test_utils.cc b/modules/audio_processing/test/test_utils.cc index 42ba7ebb5a..846ce2b647 100644 --- a/modules/audio_processing/test/test_utils.cc +++ b/modules/audio_processing/test/test_utils.cc @@ -132,27 +132,4 @@ AudioProcessing::ChannelLayout LayoutFromChannels(size_t num_channels) { } } -std::vector ParseArrayGeometry(const std::string& mic_positions) { - const std::vector values = ParseList(mic_positions); - const size_t num_mics = - rtc::CheckedDivExact(values.size(), static_cast(3)); - RTC_CHECK_GT(num_mics, 0) << "mic_positions is not large enough."; - - std::vector result; - result.reserve(num_mics); - for (size_t i = 0; i < values.size(); i += 3) { - result.push_back(Point(values[i + 0], values[i + 1], values[i + 2])); - } - - return result; -} - -std::vector ParseArrayGeometry(const std::string& mic_positions, - size_t num_mics) { - std::vector result = ParseArrayGeometry(mic_positions); - RTC_CHECK_EQ(result.size(), num_mics) - << "Could not parse mic_positions or incorrect number of points."; - return result; -} - } // namespace webrtc diff --git a/modules/audio_processing/test/test_utils.h b/modules/audio_processing/test/test_utils.h index 81684f210b..43f907a358 100644 --- a/modules/audio_processing/test/test_utils.h +++ b/modules/audio_processing/test/test_utils.h @@ -143,16 +143,6 @@ std::vector ParseList(const std::string& to_parse) { return values; } -// Parses the array geometry from the command line. -// -// If a vector with size != num_mics is returned, an error has occurred and an -// appropriate error message has been printed to stdout. -std::vector ParseArrayGeometry(const std::string& mic_positions, - size_t num_mics); - -// Same as above, but without the num_mics check for when it isn't available. -std::vector ParseArrayGeometry(const std::string& mic_positions); - } // namespace webrtc #endif // MODULES_AUDIO_PROCESSING_TEST_TEST_UTILS_H_