| Index: webrtc/modules/audio_processing/audio_processing_impl.h
 | 
| diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h
 | 
| index 37b15c28935f29cb6450f5f5cec3d53fe640f50f..4053822b84218d9ce0bbc43ffaa607d21fa76a9b 100644
 | 
| --- a/webrtc/modules/audio_processing/audio_processing_impl.h
 | 
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.h
 | 
| @@ -23,6 +23,7 @@
 | 
|  #include "webrtc/base/swap_queue.h"
 | 
|  #include "webrtc/base/thread_annotations.h"
 | 
|  #include "webrtc/modules/audio_processing/audio_buffer.h"
 | 
| +#include "webrtc/modules/audio_processing/include/aec_dump.h"
 | 
|  #include "webrtc/modules/audio_processing/include/audio_processing.h"
 | 
|  #include "webrtc/modules/audio_processing/render_queue_item_verifier.h"
 | 
|  #include "webrtc/modules/audio_processing/rms_level.h"
 | 
| @@ -66,6 +67,7 @@ class AudioProcessingImpl : public AudioProcessing {
 | 
|    void ApplyConfig(const AudioProcessing::Config& config) override;
 | 
|    void SetExtraOptions(const webrtc::Config& config) override;
 | 
|    void UpdateHistogramsOnCallEnd() override;
 | 
| +  void StartDebugRecording(std::unique_ptr<AecDump> aec_dump) override;
 | 
|    int StartDebugRecording(const char filename[kMaxFilenameSize],
 | 
|                            int64_t max_log_size_bytes) override;
 | 
|    int StartDebugRecording(FILE* handle, int64_t max_log_size_bytes) override;
 | 
| @@ -275,6 +277,15 @@ class AudioProcessingImpl : public AudioProcessing {
 | 
|        EXCLUSIVE_LOCKS_REQUIRED(crit_render_);
 | 
|    int ProcessRenderStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_render_);
 | 
|  
 | 
| +  // Collects configuration settings from public and private
 | 
| +  // submodules to be saved as an audioproc::Config message.
 | 
| +  InternalAPMConfig CollectApmConfig() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_)
 | 
| +      EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
 | 
| +
 | 
| +  // Copies data (delay, drift, etc) into the |stream_info| object.
 | 
| +  void PopulateStreamInfoWithConfig(AecDump::CaptureStreamInfo* stream_info)
 | 
| +      const EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
 | 
| +
 | 
|  // Debug dump methods that are internal and called without locks.
 | 
|  // TODO(peah): Make thread safe.
 | 
|  #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
 | 
| @@ -299,6 +310,10 @@ class AudioProcessingImpl : public AudioProcessing {
 | 
|    ApmDebugDumpState debug_dump_;
 | 
|  #endif
 | 
|  
 | 
| +  // AecDump instance used for optionally logging APM config, input
 | 
| +  // and output to file in the AEC-dump format defined in debug.proto.
 | 
| +  std::unique_ptr<AecDump> aec_dump_;
 | 
| +
 | 
|    // Critical sections.
 | 
|    rtc::CriticalSection crit_render_ ACQUIRED_BEFORE(crit_capture_);
 | 
|    rtc::CriticalSection crit_capture_;
 | 
| 
 |