| 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 4ef4e6da6a307e6533e8ac9ddf39e888c2c52713..ddbbfe53c42c3e86148fe14e50bdfa042eb7fb21 100644
|
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| @@ -561,6 +561,8 @@ int AudioProcessingImpl::ProcessStream(const float* const* src,
|
|
|
| #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
|
| if (debug_file_->Open()) {
|
| + RETURN_ON_ERR(WriteConfigMessage(false));
|
| +
|
| event_msg_->set_type(audioproc::Event::STREAM);
|
| audioproc::Stream* msg = event_msg_->mutable_stream();
|
| const size_t channel_size =
|
| @@ -946,10 +948,8 @@ int AudioProcessingImpl::StartDebugRecording(
|
| return kFileError;
|
| }
|
|
|
| - int err = WriteInitMessage();
|
| - if (err != kNoError) {
|
| - return err;
|
| - }
|
| + RETURN_ON_ERR(WriteConfigMessage(true));
|
| + RETURN_ON_ERR(WriteInitMessage());
|
| return kNoError;
|
| #else
|
| return kUnsupportedFunctionError;
|
| @@ -975,10 +975,8 @@ int AudioProcessingImpl::StartDebugRecording(FILE* handle) {
|
| return kFileError;
|
| }
|
|
|
| - int err = WriteInitMessage();
|
| - if (err != kNoError) {
|
| - return err;
|
| - }
|
| + RETURN_ON_ERR(WriteConfigMessage(true));
|
| + RETURN_ON_ERR(WriteInitMessage());
|
| return kNoError;
|
| #else
|
| return kUnsupportedFunctionError;
|
| @@ -1248,11 +1246,52 @@ int AudioProcessingImpl::WriteInitMessage() {
|
| msg->set_output_sample_rate(api_format_.output_stream().sample_rate_hz());
|
| // TODO(ekmeyerson): Add reverse output fields to event_msg_.
|
|
|
| - int err = WriteMessageToDebugFile();
|
| - if (err != kNoError) {
|
| - return err;
|
| + RETURN_ON_ERR(WriteMessageToDebugFile());
|
| + return kNoError;
|
| +}
|
| +
|
| +int AudioProcessingImpl::WriteConfigMessage(bool forced) {
|
| + audioproc::Config config;
|
| +
|
| + config.set_aec_enabled(echo_cancellation_->is_enabled());
|
| + config.set_aec_delay_agnostic_enabled(
|
| + echo_cancellation_->is_delay_agnostic_enabled());
|
| + config.set_aec_drift_compensation_enabled(
|
| + echo_cancellation_->is_drift_compensation_enabled());
|
| + config.set_aec_extended_filter_enabled(
|
| + echo_cancellation_->is_extended_filter_enabled());
|
| + config.set_aec_suppression_level(
|
| + static_cast<int>(echo_cancellation_->suppression_level()));
|
| +
|
| + config.set_aecm_enabled(echo_control_mobile_->is_enabled());
|
| + config.set_aecm_comfort_noise_enabled(
|
| + echo_control_mobile_->is_comfort_noise_enabled());
|
| + config.set_aecm_routing_mode(
|
| + static_cast<int>(echo_control_mobile_->routing_mode()));
|
| +
|
| + config.set_agc_enabled(gain_control_->is_enabled());
|
| + config.set_agc_mode(static_cast<int>(gain_control_->mode()));
|
| + config.set_agc_limiter_enabled(gain_control_->is_limiter_enabled());
|
| + config.set_noise_robust_agc_enabled(use_new_agc_);
|
| +
|
| + config.set_hpf_enabled(high_pass_filter_->is_enabled());
|
| +
|
| + config.set_ns_enabled(noise_suppression_->is_enabled());
|
| + config.set_ns_level(static_cast<int>(noise_suppression_->level()));
|
| +
|
| + config.set_transient_suppression_enabled(transient_suppressor_enabled_);
|
| +
|
| + std::string serialized_config = config.SerializeAsString();
|
| + if (!forced && last_serialized_config_ == serialized_config) {
|
| + return kNoError;
|
| }
|
|
|
| + last_serialized_config_ = serialized_config;
|
| +
|
| + event_msg_->set_type(audioproc::Event::CONFIG);
|
| + event_msg_->mutable_config()->CopyFrom(config);
|
| +
|
| + RETURN_ON_ERR(WriteMessageToDebugFile());
|
| return kNoError;
|
| }
|
| #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP
|
|
|