diff --git a/webrtc/media/engine/fakewebrtcvoiceengine.h b/webrtc/media/engine/fakewebrtcvoiceengine.h index f1e63a557c..33ea7cafc5 100644 --- a/webrtc/media/engine/fakewebrtcvoiceengine.h +++ b/webrtc/media/engine/fakewebrtcvoiceengine.h @@ -70,7 +70,6 @@ class FakeAudioProcessing : public webrtc::AudioProcessing { WEBRTC_STUB(Initialize, ( const webrtc::ProcessingConfig& processing_config)); - WEBRTC_VOID_STUB(ApplyConfig, (const AudioProcessing::Config& config)); WEBRTC_VOID_FUNC(SetExtraOptions, (const webrtc::Config& config)) { experimental_ns_enabled_ = config.Get().enabled; } diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc index 43436128fd..29924114b4 100644 --- a/webrtc/media/engine/webrtcvoiceengine.cc +++ b/webrtc/media/engine/webrtcvoiceengine.cc @@ -868,9 +868,8 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) { LOG(LS_INFO) << "Level control: " << (!!level_control_ ? *level_control_ : -1); - webrtc::AudioProcessing::Config apm_config; if (level_control_) { - apm_config.level_controller.enabled = *level_control_; + config.Set(new webrtc::LevelControl(*level_control_)); } // We check audioproc for the benefit of tests, since FakeWebRtcVoiceEngine @@ -878,7 +877,6 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) { webrtc::AudioProcessing* audioproc = voe_wrapper_->base()->audio_processing(); if (audioproc) { audioproc->SetExtraOptions(config); - audioproc->ApplyConfig(apm_config); } if (options.recording_sample_rate) { diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc index 72f154a66d..bd311ad6b1 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.cc +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc @@ -241,15 +241,15 @@ struct AudioProcessingImpl::ApmPrivateSubmodules { }; AudioProcessing* AudioProcessing::Create() { - webrtc::Config config; + Config config; return Create(config, nullptr); } -AudioProcessing* AudioProcessing::Create(const webrtc::Config& config) { +AudioProcessing* AudioProcessing::Create(const Config& config) { return Create(config, nullptr); } -AudioProcessing* AudioProcessing::Create(const webrtc::Config& config, +AudioProcessing* AudioProcessing::Create(const Config& config, NonlinearBeamformer* beamformer) { AudioProcessingImpl* apm = new AudioProcessingImpl(config, beamformer); if (apm->Initialize() != kNoError) { @@ -260,10 +260,10 @@ AudioProcessing* AudioProcessing::Create(const webrtc::Config& config, return apm; } -AudioProcessingImpl::AudioProcessingImpl(const webrtc::Config& config) +AudioProcessingImpl::AudioProcessingImpl(const Config& config) : AudioProcessingImpl(config, nullptr) {} -AudioProcessingImpl::AudioProcessingImpl(const webrtc::Config& config, +AudioProcessingImpl::AudioProcessingImpl(const Config& config, NonlinearBeamformer* beamformer) : public_submodules_(new ApmPublicSubmodules()), private_submodules_(new ApmPrivateSubmodules(beamformer)), @@ -281,7 +281,8 @@ AudioProcessingImpl::AudioProcessingImpl(const webrtc::Config& config, config.Get().array_geometry, config.Get().target_direction), capture_nonlocked_(config.Get().enabled, - config.Get().enabled) { + config.Get().enabled, + config.Get().enabled) { { rtc::CritScope cs_render(&crit_render_); rtc::CritScope cs_capture(&crit_capture_); @@ -529,34 +530,7 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) { return InitializeLocked(); } -void AudioProcessingImpl::ApplyConfig(const AudioProcessing::Config& config) { - AudioProcessing::Config config_to_use = config; - - bool config_ok = LevelController::Validate(config_to_use.level_controller); - if (!config_ok) { - LOG(LS_ERROR) << "AudioProcessing module config error" << std::endl - << "level_controller: " - << LevelController::ToString(config_to_use.level_controller) - << std::endl - << "Reverting to default parameter set"; - config_to_use.level_controller = AudioProcessing::Config::LevelController(); - } - - // Run in a single-threaded manner when applying the settings. - rtc::CritScope cs_render(&crit_render_); - rtc::CritScope cs_capture(&crit_capture_); - - if (config.level_controller.enabled != - capture_nonlocked_.level_controller_enabled) { - InitializeLevelController(); - LOG(LS_INFO) << "Level controller activated: " - << capture_nonlocked_.level_controller_enabled; - capture_nonlocked_.level_controller_enabled = - config.level_controller.enabled; - } -} - -void AudioProcessingImpl::SetExtraOptions(const webrtc::Config& config) { +void AudioProcessingImpl::SetExtraOptions(const Config& config) { // Run in a single-threaded manner when setting the extra options. rtc::CritScope cs_render(&crit_render_); rtc::CritScope cs_capture(&crit_capture_); @@ -570,6 +544,16 @@ void AudioProcessingImpl::SetExtraOptions(const webrtc::Config& config) { InitializeTransient(); } + if (capture_nonlocked_.level_controller_enabled != + config.Get().enabled) { + capture_nonlocked_.level_controller_enabled = + config.Get().enabled; + LOG(LS_INFO) << "Level controller activated: " + << config.Get().enabled; + + InitializeLevelController(); + } + #if WEBRTC_INTELLIGIBILITY_ENHANCER if(capture_nonlocked_.intelligibility_enabled != config.Get().enabled) { diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h index fa07281852..f83f6adb07 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.h +++ b/webrtc/modules/audio_processing/audio_processing_impl.h @@ -42,10 +42,9 @@ class AudioProcessingImpl : public AudioProcessing { public: // Methods forcing APM to run in a single-threaded manner. // Acquires both the render and capture locks. - explicit AudioProcessingImpl(const webrtc::Config& config); + explicit AudioProcessingImpl(const Config& config); // AudioProcessingImpl takes ownership of beamformer. - AudioProcessingImpl(const webrtc::Config& config, - NonlinearBeamformer* beamformer); + AudioProcessingImpl(const Config& config, NonlinearBeamformer* beamformer); ~AudioProcessingImpl() override; int Initialize() override; int Initialize(int input_sample_rate_hz, @@ -55,8 +54,7 @@ class AudioProcessingImpl : public AudioProcessing { ChannelLayout output_layout, ChannelLayout reverse_layout) override; int Initialize(const ProcessingConfig& processing_config) override; - void ApplyConfig(const AudioProcessing::Config& config) override; - void SetExtraOptions(const webrtc::Config& config) override; + void SetExtraOptions(const Config& config) override; void UpdateHistogramsOnCallEnd() override; int StartDebugRecording(const char filename[kMaxFilenameSize], int64_t max_log_size_bytes) override; @@ -343,12 +341,14 @@ class AudioProcessingImpl : public AudioProcessing { struct ApmCaptureNonLockedState { ApmCaptureNonLockedState(bool beamformer_enabled, - bool intelligibility_enabled) + bool intelligibility_enabled, + bool level_controller_enabled) : fwd_proc_format(kSampleRate16kHz), split_rate(kSampleRate16kHz), stream_delay_ms(0), beamformer_enabled(beamformer_enabled), - intelligibility_enabled(intelligibility_enabled) {} + intelligibility_enabled(intelligibility_enabled), + level_controller_enabled(level_controller_enabled) {} // Only the rate and samples fields of fwd_proc_format_ are used because the // forward processing number of channels is mutable and is tracked by the // capture_audio_. @@ -357,7 +357,7 @@ class AudioProcessingImpl : public AudioProcessing { int stream_delay_ms; bool beamformer_enabled; bool intelligibility_enabled; - bool level_controller_enabled = false; + bool level_controller_enabled; } capture_nonlocked_; struct ApmRenderState { diff --git a/webrtc/modules/audio_processing/audio_processing_impl_unittest.cc b/webrtc/modules/audio_processing/audio_processing_impl_unittest.cc index a0c208ac79..cdb42a0038 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl_unittest.cc +++ b/webrtc/modules/audio_processing/audio_processing_impl_unittest.cc @@ -23,8 +23,8 @@ namespace webrtc { class MockInitialize : public AudioProcessingImpl { public: - explicit MockInitialize(const webrtc::Config& config) - : AudioProcessingImpl(config) {} + explicit MockInitialize(const Config& config) : AudioProcessingImpl(config) { + } MOCK_METHOD0(InitializeLocked, int()); int RealInitializeLocked() NO_THREAD_SAFETY_ANALYSIS { @@ -33,7 +33,7 @@ class MockInitialize : public AudioProcessingImpl { }; TEST(AudioProcessingImplTest, AudioParameterChangeTriggersInit) { - webrtc::Config config; + Config config; MockInitialize mock(config); ON_CALL(mock, InitializeLocked()) .WillByDefault(Invoke(&mock, &MockInitialize::RealInitializeLocked)); diff --git a/webrtc/modules/audio_processing/echo_cancellation_impl.cc b/webrtc/modules/audio_processing/echo_cancellation_impl.cc index 2de4d13f68..f18c1c3f8a 100644 --- a/webrtc/modules/audio_processing/echo_cancellation_impl.cc +++ b/webrtc/modules/audio_processing/echo_cancellation_impl.cc @@ -532,7 +532,7 @@ void EchoCancellationImpl::AllocateRenderQueue() { } } -void EchoCancellationImpl::SetExtraOptions(const webrtc::Config& config) { +void EchoCancellationImpl::SetExtraOptions(const Config& config) { { rtc::CritScope cs(crit_capture_); extended_filter_enabled_ = config.Get().enabled; diff --git a/webrtc/modules/audio_processing/echo_cancellation_impl.h b/webrtc/modules/audio_processing/echo_cancellation_impl.h index bab5e54f4b..b71c47f583 100644 --- a/webrtc/modules/audio_processing/echo_cancellation_impl.h +++ b/webrtc/modules/audio_processing/echo_cancellation_impl.h @@ -43,7 +43,7 @@ class EchoCancellationImpl : public EchoCancellation { size_t num_reverse_channels_, size_t num_output_channels_, size_t num_proc_channels_); - void SetExtraOptions(const webrtc::Config& config); + void SetExtraOptions(const Config& config); bool is_delay_agnostic_enabled() const; bool is_extended_filter_enabled() const; bool is_aec3_enabled() const; diff --git a/webrtc/modules/audio_processing/include/audio_processing.h b/webrtc/modules/audio_processing/include/audio_processing.h index 035fa32c7a..44ff7327ff 100644 --- a/webrtc/modules/audio_processing/include/audio_processing.h +++ b/webrtc/modules/audio_processing/include/audio_processing.h @@ -91,6 +91,14 @@ struct RefinedAdaptiveFilter { bool enabled; }; +// Enables the adaptive level controller. +struct LevelControl { + LevelControl() : enabled(false) {} + explicit LevelControl(bool enabled) : enabled(enabled) {} + static const ConfigOptionID identifier = ConfigOptionID::kLevelControl; + bool enabled; +}; + // Enables delay-agnostic echo cancellation. This feature relies on internally // estimated delays between the process and reverse streams, thus not relying // on reported system delays. This configuration only applies to @@ -197,10 +205,6 @@ struct Intelligibility { // Usage example, omitting error checking: // AudioProcessing* apm = AudioProcessing::Create(0); // -// AudioProcessing::Config config; -// config.level_controller.enabled = true; -// apm->ApplyConfig(config) -// // apm->high_pass_filter()->Enable(true); // // apm->echo_cancellation()->enable_drift_compensation(false); @@ -240,29 +244,14 @@ struct Intelligibility { // class AudioProcessing { public: - // The struct below constitutes the new parameter scheme for the audio - // processing. It is being introduced gradually and until it is fully - // introduced, it is prone to change. - // TODO(peah): Remove this comment once the new config scheme is fully rolled - // out. - // - // The parameters and behavior of the audio processing module are controlled - // by changing the default values in the AudioProcessing::Config struct. - // The config is applied by passing the struct to the ApplyConfig method. - struct Config { - struct LevelController { - bool enabled = false; - } level_controller; - }; - // TODO(mgraczyk): Remove once all methods that use ChannelLayout are gone. enum ChannelLayout { kMono, // Left, right. kStereo, - // Mono, keyboard, and mic. + // Mono, keyboard mic. kMonoAndKeyboard, - // Left, right, keyboard, and mic. + // Left, right, keyboard mic. kStereoAndKeyboard }; @@ -273,9 +262,9 @@ class AudioProcessing { // be one instance for every incoming stream. static AudioProcessing* Create(); // Allows passing in an optional configuration at create-time. - static AudioProcessing* Create(const webrtc::Config& config); + static AudioProcessing* Create(const Config& config); // Only for testing. - static AudioProcessing* Create(const webrtc::Config& config, + static AudioProcessing* Create(const Config& config, NonlinearBeamformer* beamformer); virtual ~AudioProcessing() {} @@ -311,13 +300,9 @@ class AudioProcessing { ChannelLayout output_layout, ChannelLayout reverse_layout) = 0; - // TODO(peah): This method is a temporary solution used to take control - // over the parameters in the audio processing module and is likely to change. - virtual void ApplyConfig(const Config& config) = 0; - // Pass down additional options which don't have explicit setters. This // ensures the options are applied immediately. - virtual void SetExtraOptions(const webrtc::Config& config) = 0; + virtual void SetExtraOptions(const Config& config) = 0; // TODO(ajm): Only intended for internal use. Make private and friend the // necessary classes? diff --git a/webrtc/modules/audio_processing/include/mock_audio_processing.h b/webrtc/modules/audio_processing/include/mock_audio_processing.h index 0566e85139..b5ea5875a7 100644 --- a/webrtc/modules/audio_processing/include/mock_audio_processing.h +++ b/webrtc/modules/audio_processing/include/mock_audio_processing.h @@ -190,8 +190,8 @@ class MockAudioProcessing : public AudioProcessing { ChannelLayout reverse_layout)); MOCK_METHOD1(Initialize, int(const ProcessingConfig& processing_config)); - MOCK_METHOD1(ApplyConfig, void(const Config& config)); - MOCK_METHOD1(SetExtraOptions, void(const webrtc::Config& config)); + MOCK_METHOD1(SetExtraOptions, + void(const Config& config)); MOCK_METHOD1(set_sample_rate_hz, int(int rate)); MOCK_CONST_METHOD0(input_sample_rate_hz, diff --git a/webrtc/modules/audio_processing/level_controller/level_controller.cc b/webrtc/modules/audio_processing/level_controller/level_controller.cc index c0edeb91c5..2294396607 100644 --- a/webrtc/modules/audio_processing/level_controller/level_controller.cc +++ b/webrtc/modules/audio_processing/level_controller/level_controller.cc @@ -262,17 +262,4 @@ void LevelController::Process(AudioBuffer* audio) { audio->channels_f()[0], *sample_rate_hz_, 1); } -std::string LevelController::ToString( - const AudioProcessing::Config::LevelController& config) { - std::stringstream ss; - ss << "{" - << "enabled: " << (config.enabled ? "true" : "false") << "}"; - return ss.str(); -} - -bool LevelController::Validate( - const AudioProcessing::Config::LevelController& config) { - return true; -} - } // namespace webrtc diff --git a/webrtc/modules/audio_processing/level_controller/level_controller.h b/webrtc/modules/audio_processing/level_controller/level_controller.h index 1d8e043cce..65fc36005b 100644 --- a/webrtc/modules/audio_processing/level_controller/level_controller.h +++ b/webrtc/modules/audio_processing/level_controller/level_controller.h @@ -38,12 +38,6 @@ class LevelController { void Process(AudioBuffer* audio); float GetLastGain() { return last_gain_; } - // Validates a config. - static bool Validate(const AudioProcessing::Config::LevelController& config); - // Dumps a config to a string. - static std::string ToString( - const AudioProcessing::Config::LevelController& config); - private: class Metrics { public: diff --git a/webrtc/modules/audio_processing/level_controller/level_controller_complexity_unittest.cc b/webrtc/modules/audio_processing/level_controller/level_controller_complexity_unittest.cc index b8033aa144..a90774fbc1 100644 --- a/webrtc/modules/audio_processing/level_controller/level_controller_complexity_unittest.cc +++ b/webrtc/modules/audio_processing/level_controller/level_controller_complexity_unittest.cc @@ -198,18 +198,16 @@ void RunTogetherWithApm(std::string test_description, SubmodulePerformanceTimer capture_timer; SubmodulePerformanceTimer total_timer; - webrtc::Config config; - AudioProcessing::Config apm_config; + Config config; if (include_default_apm_processing) { config.Set(new DelayAgnostic(true)); config.Set(new ExtendedFilter(true)); } - apm_config.level_controller.enabled = true; + config.Set(new LevelControl(true)); std::unique_ptr apm; apm.reset(AudioProcessing::Create(config)); ASSERT_TRUE(apm.get()); - apm->ApplyConfig(apm_config); ASSERT_EQ(AudioProcessing::kNoError, apm->gain_control()->Enable(include_default_apm_processing)); diff --git a/webrtc/modules/audio_processing/level_controller/level_controller_unittest.cc b/webrtc/modules/audio_processing/level_controller/level_controller_unittest.cc index f5cea0dbcc..c470c2fad7 100644 --- a/webrtc/modules/audio_processing/level_controller/level_controller_unittest.cc +++ b/webrtc/modules/audio_processing/level_controller/level_controller_unittest.cc @@ -68,25 +68,6 @@ void RunBitexactnessTest(int sample_rate_hz, } // namespace -TEST(LevelControlConfigTest, ToStringEnabled) { - AudioProcessing::Config config; - config.level_controller.enabled = true; - EXPECT_EQ("{enabled: true}", - LevelController::ToString(config.level_controller)); -} - -TEST(LevelControlConfigTest, ToStringNotEnabled) { - AudioProcessing::Config config; - config.level_controller.enabled = false; - EXPECT_EQ("{enabled: false}", - LevelController::ToString(config.level_controller)); -} - -TEST(LevelControlConfigTest, DefaultValue) { - AudioProcessing::Config config; - EXPECT_FALSE(config.level_controller.enabled); -} - TEST(LevelControlBitExactnessTest, DISABLED_Mono8kHz) { const float kOutputReference[] = {-0.013939f, -0.012154f, -0.009054f}; RunBitexactnessTest(AudioProcessing::kSampleRate8kHz, 1, diff --git a/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc b/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc index d2b05ad88f..e21f42a1c5 100644 --- a/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc +++ b/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc @@ -236,7 +236,6 @@ void AecDumpBasedSimulator::HandleMessage( std::cout << "Setting used in config:" << std::endl; } Config config; - AudioProcessing::Config apm_config; if (msg.has_aec_enabled() || settings_.use_aec) { bool enable = settings_.use_aec ? *settings_.use_aec : msg.aec_enabled(); @@ -443,10 +442,9 @@ void AecDumpBasedSimulator::HandleMessage( } if (settings_.use_lc) { - apm_config.level_controller.enabled = true; + config.Set(new LevelControl(true)); } - ap_->ApplyConfig(apm_config); ap_->SetExtraOptions(config); } } diff --git a/webrtc/modules/audio_processing/test/audio_processing_simulator.cc b/webrtc/modules/audio_processing/test/audio_processing_simulator.cc index 778b347091..a34c3ca78e 100644 --- a/webrtc/modules/audio_processing/test/audio_processing_simulator.cc +++ b/webrtc/modules/audio_processing/test/audio_processing_simulator.cc @@ -218,7 +218,6 @@ void AudioProcessingSimulator::DestroyAudioProcessor() { void AudioProcessingSimulator::CreateAudioProcessor() { Config config; - AudioProcessing::Config apm_config; if (settings_.use_bf && *settings_.use_bf) { config.Set(new Beamforming( true, ParseArrayGeometry(*settings_.microphone_positions), @@ -235,7 +234,7 @@ void AudioProcessingSimulator::CreateAudioProcessor() { config.Set(new EchoCanceller3(*settings_.use_aec3)); } if (settings_.use_lc) { - apm_config.level_controller.enabled = *settings_.use_lc; + config.Set(new LevelControl(true)); } if (settings_.use_refined_adaptive_filter) { config.Set( @@ -247,9 +246,6 @@ void AudioProcessingSimulator::CreateAudioProcessor() { *settings_.use_delay_agnostic)); ap_.reset(AudioProcessing::Create(config)); - RTC_CHECK(ap_); - - ap_->ApplyConfig(apm_config); if (settings_.use_aec) { RTC_CHECK_EQ(AudioProcessing::kNoError, diff --git a/webrtc/modules/audio_processing/test/debug_dump_test.cc b/webrtc/modules/audio_processing/test/debug_dump_test.cc index 99873429ea..103f8e109a 100644 --- a/webrtc/modules/audio_processing/test/debug_dump_test.cc +++ b/webrtc/modules/audio_processing/test/debug_dump_test.cc @@ -48,8 +48,7 @@ class DebugDumpGenerator { const std::string& dump_file_name); // Constructor that uses default input files. - explicit DebugDumpGenerator(const Config& config, - const AudioProcessing::Config& apm_config); + explicit DebugDumpGenerator(const Config& config); ~DebugDumpGenerator(); @@ -134,18 +133,11 @@ DebugDumpGenerator::DebugDumpGenerator(const std::string& input_file_name, dump_file_name_(dump_file_name) { } -DebugDumpGenerator::DebugDumpGenerator( - const Config& config, - const AudioProcessing::Config& apm_config) - : DebugDumpGenerator(ResourcePath("near32_stereo", "pcm"), - 32000, - 2, - ResourcePath("far32_stereo", "pcm"), - 32000, - 2, - config, - TempFilename(OutputPath(), "debug_aec")) { - apm_->ApplyConfig(apm_config); +DebugDumpGenerator::DebugDumpGenerator(const Config& config) + : DebugDumpGenerator(ResourcePath("near32_stereo", "pcm"), 32000, 2, + ResourcePath("far32_stereo", "pcm"), 32000, 2, + config, + TempFilename(OutputPath(), "debug_aec")) { } DebugDumpGenerator::~DebugDumpGenerator() { @@ -273,7 +265,7 @@ void DebugDumpTest::VerifyDebugDump(const std::string& in_filename) { TEST_F(DebugDumpTest, SimpleCase) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); @@ -282,8 +274,7 @@ TEST_F(DebugDumpTest, SimpleCase) { TEST_F(DebugDumpTest, ChangeInputFormat) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); - + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.SetInputRate(48000); @@ -300,7 +291,7 @@ TEST_F(DebugDumpTest, ChangeInputFormat) { TEST_F(DebugDumpTest, ChangeReverseFormat) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.SetReverseRate(48000); @@ -312,7 +303,7 @@ TEST_F(DebugDumpTest, ChangeReverseFormat) { TEST_F(DebugDumpTest, ChangeOutputFormat) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.SetOutputRate(48000); @@ -324,7 +315,7 @@ TEST_F(DebugDumpTest, ChangeOutputFormat) { TEST_F(DebugDumpTest, ToggleAec) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); @@ -339,7 +330,7 @@ TEST_F(DebugDumpTest, ToggleAec) { TEST_F(DebugDumpTest, ToggleDelayAgnosticAec) { Config config; config.Set(new DelayAgnostic(true)); - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); @@ -354,7 +345,7 @@ TEST_F(DebugDumpTest, ToggleDelayAgnosticAec) { TEST_F(DebugDumpTest, VerifyRefinedAdaptiveFilterExperimentalString) { Config config; config.Set(new RefinedAdaptiveFilter(true)); - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); @@ -379,7 +370,7 @@ TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringInclusive) { Config config; config.Set(new RefinedAdaptiveFilter(true)); config.Set(new EchoCanceller3(true)); - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); @@ -405,7 +396,7 @@ TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringInclusive) { TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringExclusive) { Config config; config.Set(new RefinedAdaptiveFilter(true)); - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); @@ -431,7 +422,7 @@ TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringExclusive) { TEST_F(DebugDumpTest, VerifyAec3ExperimentalString) { Config config; config.Set(new EchoCanceller3(true)); - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); @@ -454,9 +445,8 @@ TEST_F(DebugDumpTest, VerifyAec3ExperimentalString) { TEST_F(DebugDumpTest, VerifyLevelControllerExperimentalString) { Config config; - AudioProcessing::Config apm_config; - apm_config.level_controller.enabled = true; - DebugDumpGenerator generator(config, apm_config); + config.Set(new LevelControl(true)); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); @@ -479,7 +469,7 @@ TEST_F(DebugDumpTest, VerifyLevelControllerExperimentalString) { TEST_F(DebugDumpTest, VerifyEmptyExperimentalString) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); @@ -501,7 +491,7 @@ TEST_F(DebugDumpTest, VerifyEmptyExperimentalString) { TEST_F(DebugDumpTest, ToggleAecLevel) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); EchoCancellation* aec = generator.apm()->echo_cancellation(); EXPECT_EQ(AudioProcessing::kNoError, aec->Enable(true)); EXPECT_EQ(AudioProcessing::kNoError, @@ -524,7 +514,7 @@ TEST_F(DebugDumpTest, ToggleAecLevel) { #endif TEST_F(DebugDumpTest, MAYBE_ToggleAgc) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); @@ -538,7 +528,7 @@ TEST_F(DebugDumpTest, MAYBE_ToggleAgc) { TEST_F(DebugDumpTest, ToggleNs) { Config config; - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); @@ -553,7 +543,7 @@ TEST_F(DebugDumpTest, ToggleNs) { TEST_F(DebugDumpTest, TransientSuppressionOn) { Config config; config.Set(new ExperimentalNs(true)); - DebugDumpGenerator generator(config, AudioProcessing::Config()); + DebugDumpGenerator generator(config); generator.StartRecording(); generator.Process(100); generator.StopRecording(); diff --git a/webrtc/modules/audio_processing/test/process_test.cc b/webrtc/modules/audio_processing/test/process_test.cc index f1ac71752a..ad769adab4 100644 --- a/webrtc/modules/audio_processing/test/process_test.cc +++ b/webrtc/modules/audio_processing/test/process_test.cc @@ -177,7 +177,6 @@ void void_main(int argc, char* argv[]) { int extra_delay_ms = 0; int override_delay_ms = 0; Config config; - AudioProcessing::Config apm_config; ASSERT_EQ(apm->kNoError, apm->level_estimator()->Enable(true)); for (int i = 1; i < argc; i++) { @@ -263,7 +262,8 @@ void void_main(int argc, char* argv[]) { suppression_level))); } else if (strcmp(argv[i], "--level_control") == 0) { - apm_config.level_controller.enabled = true; + config.Set(new LevelControl(true)); + } else if (strcmp(argv[i], "--extended_filter") == 0) { config.Set(new ExtendedFilter(true)); @@ -452,7 +452,6 @@ void void_main(int argc, char* argv[]) { FAIL() << "Unrecognized argument " << argv[i]; } } - apm->ApplyConfig(apm_config); apm->SetExtraOptions(config); // If we're reading a protobuf file, ensure a simulation hasn't also