| Index: webrtc/modules/audio_processing/audio_processing_impl.cc
|
| diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| index f6811d62de8f08c54fc677e976d3f1ab7aad86ac..9f4b3247bd08723b8a19c59df08459b680314b45 100644
|
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| @@ -242,10 +242,6 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config,
|
| gain_control_for_new_agc_.reset(new GainControlForNewAgc(gain_control_));
|
|
|
| SetExtraOptions(config);
|
| -
|
| -#ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
|
| - UpdateCurrentConfig();
|
| -#endif
|
| }
|
|
|
| AudioProcessingImpl::~AudioProcessingImpl() {
|
| @@ -556,11 +552,9 @@ int AudioProcessingImpl::ProcessStream(const float* const* src,
|
| api_format_.input_stream().num_frames());
|
|
|
| #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
|
| - if (debug_file_->Open() && UpdateCurrentConfig()) {
|
| - RETURN_ON_ERR(WriteConfigMessage());
|
| - }
|
| -
|
| if (debug_file_->Open()) {
|
| + RETURN_ON_ERR(WriteConfigMessageIfChanged());
|
| +
|
| event_msg_->set_type(audioproc::Event::STREAM);
|
| audioproc::Stream* msg = event_msg_->mutable_stream();
|
| const size_t channel_size =
|
| @@ -946,16 +940,8 @@ int AudioProcessingImpl::StartDebugRecording(
|
| return kFileError;
|
| }
|
|
|
| - UpdateCurrentConfig();
|
| - int err = WriteConfigMessage();
|
| - if (err != kNoError) {
|
| - return err;
|
| - }
|
| -
|
| - err = WriteInitMessage();
|
| - if (err != kNoError) {
|
| - return err;
|
| - }
|
| + RETURN_ON_ERR(WriteConfigMessageIfChanged());
|
| + RETURN_ON_ERR(WriteInitMessage());
|
| return kNoError;
|
| #else
|
| return kUnsupportedFunctionError;
|
| @@ -981,16 +967,8 @@ int AudioProcessingImpl::StartDebugRecording(FILE* handle) {
|
| return kFileError;
|
| }
|
|
|
| - UpdateCurrentConfig();
|
| - int err = WriteConfigMessage();
|
| - if (err != kNoError) {
|
| - return err;
|
| - }
|
| -
|
| - err = WriteInitMessage();
|
| - if (err != kNoError) {
|
| - return err;
|
| - }
|
| + RETURN_ON_ERR(WriteConfigMessageIfChanged());
|
| + RETURN_ON_ERR(WriteInitMessage());
|
| return kNoError;
|
| #else
|
| return kUnsupportedFunctionError;
|
| @@ -1268,147 +1246,22 @@ int AudioProcessingImpl::WriteInitMessage() {
|
| return kNoError;
|
| }
|
|
|
| -bool AudioProcessingImpl::UpdateCurrentConfig() {
|
| - bool changed = false;
|
| -
|
| - // Acoustic echo canceler.
|
| - {
|
| - const bool value = echo_cancellation_->is_enabled();
|
| - if (!config_->has_aec_enabled() || value != config_->aec_enabled()) {
|
| - config_->set_aec_enabled(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const bool value = echo_cancellation_->is_delay_agnostic_enabled();
|
| - if (!config_->has_aec_delay_agnostic() ||
|
| - value != config_->aec_delay_agnostic()) {
|
| - config_->set_aec_delay_agnostic(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const bool value = echo_cancellation_->is_drift_compensation_enabled();
|
| - if (!config_->has_aec_drift_compensation() ||
|
| - value != config_->aec_drift_compensation()) {
|
| - config_->set_aec_drift_compensation(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const bool value = echo_cancellation_->is_extended_filter_enabled();
|
| - if (!config_->has_aec_extended_filter() ||
|
| - value != config_->aec_extended_filter()) {
|
| - config_->set_aec_extended_filter(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const int value = static_cast<int>(echo_cancellation_->suppression_level());
|
| - if (!config_->has_aec_suppression_level() ||
|
| - value != config_->aec_suppression_level()) {
|
| - config_->set_aec_suppression_level(value);
|
| - changed = true;
|
| - }
|
| - }
|
| -
|
| - // Mobile AEC.
|
| - {
|
| - const bool value = echo_control_mobile_->is_enabled();
|
| - if (!config_->has_aecm_enabled() || value != config_->aecm_enabled()) {
|
| - config_->set_aecm_enabled(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const bool value = echo_control_mobile_->is_comfort_noise_enabled();
|
| - if (!config_->has_aecm_comfort_noise() ||
|
| - value != config_->aecm_comfort_noise()) {
|
| - config_->set_aecm_comfort_noise(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const int value = static_cast<int>(echo_control_mobile_->routing_mode());
|
| - if (!config_->has_aecm_routing_mode() ||
|
| - value != config_->aecm_routing_mode()) {
|
| - config_->set_aecm_routing_mode(value);
|
| - changed = true;
|
| - }
|
| - }
|
| -
|
| - // Automatic gain controller.
|
| - {
|
| - const bool value = gain_control_->is_enabled();
|
| - if (!config_->has_agc_enabled() || value != config_->agc_enabled()) {
|
| - config_->set_agc_enabled(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const bool value = use_new_agc_;
|
| - if (!config_->has_agc_experiment() || value != config_->agc_experiment()) {
|
| - config_->set_agc_experiment(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const int value = static_cast<int>(gain_control_->mode());
|
| - if (!config_->has_agc_mode() || value != config_->agc_mode()) {
|
| - config_->set_agc_mode(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const bool value = gain_control_->is_limiter_enabled();
|
| - if (!config_->has_agc_limiter() || value != config_->agc_limiter()) {
|
| - config_->set_agc_limiter(value);
|
| - changed = true;
|
| - }
|
| - }
|
| +int AudioProcessingImpl::WriteConfigMessageIfChanged() {
|
| + audioproc::Config config;
|
| + config.set_aec_enabled(echo_cancellation_->is_enabled());
|
| + config.set_aec_delay_agnostic(
|
| + echo_cancellation_->is_delay_agnostic_enabled());
|
| + config.set_agc_enabled(gain_control_->is_enabled());
|
| + // More fields...
|
|
|
| - // High pass filter.
|
| - {
|
| - const bool value = high_pass_filter_->is_enabled();
|
| - if (!config_->has_hpf_enabled() || value != config_->hpf_enabled()) {
|
| - config_->set_hpf_enabled(value);
|
| - changed = true;
|
| - }
|
| - }
|
| + std::string serialized_config = config.SerializeAsString();
|
| + if (serialized_config != last_serialized_config_) {
|
| + last_serialized_config_ = serialized_config;
|
|
|
| - // Noise suppression.
|
| - {
|
| - const bool value = noise_suppression_->is_enabled();
|
| - if (!config_->has_ns_enabled() || value != config_->ns_enabled()) {
|
| - config_->set_ns_enabled(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const bool value = transient_suppressor_enabled_;
|
| - if (!config_->has_ns_experiment() || value != config_->ns_experiment()) {
|
| - config_->set_ns_experiment(value);
|
| - changed = true;
|
| - }
|
| - }
|
| - {
|
| - const int value = static_cast<int>(noise_suppression_->level());
|
| - if (!config_->has_ns_level() || value != config_->ns_level()) {
|
| - config_->set_ns_level(value);
|
| - changed = true;
|
| - }
|
| - }
|
| -
|
| - return changed;
|
| -}
|
| -
|
| -int AudioProcessingImpl::WriteConfigMessage() {
|
| - event_msg_->set_type(audioproc::Event::CONFIG);
|
| - event_msg_->mutable_config()->CopyFrom(*config_);
|
| + event_msg_->set_type(audioproc::Event::CONFIG);
|
| + event_msg_->mutable_config()->CopyFrom(config);
|
|
|
| - int err = WriteMessageToDebugFile();
|
| - if (err != kNoError) {
|
| - return err;
|
| + RETURN_ON_ERR(WriteMessageToDebugFile());
|
| }
|
|
|
| return kNoError;
|
|
|