Merge audio_processing changes.

R=aluebs@webrtc.org, bjornv@webrtc.org
BUG=

Review URL: https://webrtc-codereview.appspot.com/32769004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7893 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h
index caab379..be70273 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.h
+++ b/webrtc/modules/audio_processing/audio_processing_impl.h
@@ -8,28 +8,32 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_MAIN_SOURCE_AUDIO_PROCESSING_IMPL_H_
-#define WEBRTC_MODULES_AUDIO_PROCESSING_MAIN_SOURCE_AUDIO_PROCESSING_IMPL_H_
+#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_
+#define WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_
 
 #include "webrtc/modules/audio_processing/include/audio_processing.h"
 
 #include <list>
 #include <string>
 
+#include "webrtc/base/thread_annotations.h"
 #include "webrtc/system_wrappers/interface/scoped_ptr.h"
 
 namespace webrtc {
 
+class AgcManagerDirect;
 class AudioBuffer;
 class CriticalSectionWrapper;
 class EchoCancellationImpl;
 class EchoControlMobileImpl;
 class FileWrapper;
 class GainControlImpl;
+class GainControlForNewAgc;
 class HighPassFilterImpl;
 class LevelEstimatorImpl;
 class NoiseSuppressionImpl;
 class ProcessingComponent;
+class TransientSuppressor;
 class VoiceDetectionImpl;
 
 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
@@ -138,7 +142,7 @@
 
  protected:
   // Overridden in a mock.
-  virtual int InitializeLocked();
+  virtual int InitializeLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_);
 
  private:
   int InitializeLocked(int input_sample_rate_hz,
@@ -146,20 +150,24 @@
                        int reverse_sample_rate_hz,
                        int num_input_channels,
                        int num_output_channels,
-                       int num_reverse_channels);
+                       int num_reverse_channels)
+      EXCLUSIVE_LOCKS_REQUIRED(crit_);
   int MaybeInitializeLocked(int input_sample_rate_hz,
                             int output_sample_rate_hz,
                             int reverse_sample_rate_hz,
                             int num_input_channels,
                             int num_output_channels,
-                            int num_reverse_channels);
-  int ProcessStreamLocked();
-  int AnalyzeReverseStreamLocked();
+                            int num_reverse_channels)
+      EXCLUSIVE_LOCKS_REQUIRED(crit_);
+  int ProcessStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_);
+  int AnalyzeReverseStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_);
 
   bool is_data_processed() const;
   bool output_copy_needed(bool is_data_processed) const;
   bool synthesis_needed(bool is_data_processed) const;
   bool analysis_needed(bool is_data_processed) const;
+  int InitializeExperimentalAgc() EXCLUSIVE_LOCKS_REQUIRED(crit_);
+  int InitializeTransient() EXCLUSIVE_LOCKS_REQUIRED(crit_);
 
   EchoCancellationImpl* echo_cancellation_;
   EchoControlMobileImpl* echo_control_mobile_;
@@ -168,6 +176,7 @@
   LevelEstimatorImpl* level_estimator_;
   NoiseSuppressionImpl* noise_suppression_;
   VoiceDetectionImpl* voice_detection_;
+  scoped_ptr<GainControlForNewAgc> gain_control_for_new_agc_;
 
   std::list<ProcessingComponent*> component_list_;
   CriticalSectionWrapper* crit_;
@@ -199,8 +208,15 @@
   bool output_will_be_muted_;
 
   bool key_pressed_;
+
+  // Only set through the constructor's Config parameter.
+  const bool use_new_agc_;
+  scoped_ptr<AgcManagerDirect> agc_manager_ GUARDED_BY(crit_);
+
+  bool transient_suppressor_enabled_;
+  scoped_ptr<TransientSuppressor> transient_suppressor_;
 };
 
 }  // namespace webrtc
 
-#endif  // WEBRTC_MODULES_AUDIO_PROCESSING_MAIN_SOURCE_AUDIO_PROCESSING_IMPL_H_
+#endif  // WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_