| Index: content/renderer/media/media_stream_audio_processor_options.h
 | 
| diff --git a/content/renderer/media/media_stream_audio_processor_options.h b/content/renderer/media/media_stream_audio_processor_options.h
 | 
| index 3ad41100b4c78f1157519b2598df4435fd692f1b..a051fa477e8bad3770c9ddddc61cad1268e6c823 100644
 | 
| --- a/content/renderer/media/media_stream_audio_processor_options.h
 | 
| +++ b/content/renderer/media/media_stream_audio_processor_options.h
 | 
| @@ -8,12 +8,10 @@
 | 
|  #include <string>
 | 
|  
 | 
|  #include "base/platform_file.h"
 | 
| +#include "content/common/content_export.h"
 | 
| +#include "third_party/WebKit/public/platform/WebMediaConstraints.h"
 | 
|  #include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h"
 | 
|  
 | 
| -namespace blink {
 | 
| -class WebMediaConstraints;
 | 
| -}
 | 
| -
 | 
|  namespace webrtc {
 | 
|  
 | 
|  class AudioFrame;
 | 
| @@ -30,26 +28,65 @@ class RTCMediaConstraints;
 | 
|  using webrtc::AudioProcessing;
 | 
|  using webrtc::MediaConstraintsInterface;
 | 
|  
 | 
| -// Merge |constraints| with |kDefaultAudioConstraints|. For any key which exists
 | 
| -// in both, the value from |constraints| is maintained, including its
 | 
| -// mandatory/optional status. New values from |kDefaultAudioConstraints| will
 | 
| -// be added with mandatory status.
 | 
| -void ApplyFixedAudioConstraints(RTCMediaConstraints* constraints);
 | 
| -
 | 
| -// Checks if any audio constraints are set that requires audio processing to
 | 
| -// be applied. |effects| is the bitmasks telling whether certain platform
 | 
| -// hardware audio effects are enabled, like hardware echo cancellation. If some
 | 
| -// hardware effect is enabled, the corresponding software audio processing will
 | 
| -// be disabled.
 | 
| -bool NeedsAudioProcessing(const blink::WebMediaConstraints& constraints,
 | 
| -                          int effects);
 | 
| -
 | 
| -// Gets the property named by |key| from the |constraints|.
 | 
| -// Returns true if the key is found and has a valid boolean value; Otherwise
 | 
| -// false.
 | 
| -bool GetPropertyFromConstraints(
 | 
| -    const MediaConstraintsInterface* constraints,
 | 
| -    const std::string& key);
 | 
| +// A helper class to parse audio constraints from a blink::WebMediaConstraints
 | 
| +// object.
 | 
| +class CONTENT_EXPORT MediaAudioConstraints {
 | 
| + public:
 | 
| +  // Constraint keys used by audio processing.
 | 
| +  static const char kEchoCancellation[];
 | 
| +  static const char kGoogEchoCancellation[];
 | 
| +  static const char kGoogExperimentalEchoCancellation[];
 | 
| +  static const char kGoogAutoGainControl[];
 | 
| +  static const char kGoogExperimentalAutoGainControl[];
 | 
| +  static const char kGoogNoiseSuppression[];
 | 
| +  static const char kGoogExperimentalNoiseSuppression[];
 | 
| +  static const char kGoogHighpassFilter[];
 | 
| +  static const char kGoogTypingNoiseDetection[];
 | 
| +  static const char kGoogAudioMirroring[];
 | 
| +
 | 
| +  // Merge |constraints| with |kDefaultAudioConstraints|. For any key which
 | 
| +  // exists in both, the value from |constraints| is maintained, including its
 | 
| +  // mandatory/optional status. New values from |kDefaultAudioConstraints| will
 | 
| +  // be added with optional status.
 | 
| +  static void ApplyFixedAudioConstraints(RTCMediaConstraints* constraints);
 | 
| +
 | 
| +  // |effects| is the bitmasks telling whether certain platform
 | 
| +  // hardware audio effects are enabled, like hardware echo cancellation. If
 | 
| +  // some hardware effect is enabled, the corresponding software audio
 | 
| +  // processing will be disabled.
 | 
| +  MediaAudioConstraints(const blink::WebMediaConstraints& constraints,
 | 
| +                        int effects);
 | 
| +  virtual ~MediaAudioConstraints();
 | 
| +
 | 
| +  // Checks if any audio constraints are set that requires audio processing to
 | 
| +  // be applied.
 | 
| +  bool NeedsAudioProcessing();
 | 
| +
 | 
| +  // Gets the property of the constraint named by |key| in |constraints_|.
 | 
| +  // Returns the constraint's value if the key is found; Otherwise returns the
 | 
| +  // default value of the constraint.
 | 
| +  // Note, for constraint of |kEchoCancellation| or |kGoogEchoCancellation|,
 | 
| +  // clients should use GetEchoCancellationProperty().
 | 
| +  bool GetProperty(const std::string& key);
 | 
| +
 | 
| +  // Gets the property of echo cancellation defined in |constraints_|. The
 | 
| +  // returned value depends on a combination of |effects_|, |kEchoCancellation|
 | 
| +  // and |kGoogEchoCancellation| in |constraints_|.
 | 
| +  bool GetEchoCancellationProperty();
 | 
| +
 | 
| +  // Returns true if all the mandatory constraints in |constraints_| are valid;
 | 
| +  // Otherwise return false.
 | 
| +  bool IsValid();
 | 
| +
 | 
| + private:
 | 
| +  // Gets the default value of constraint named by |key| in |constraints|.
 | 
| +  bool GetDefaultValueForConstraint(
 | 
| +      const blink::WebMediaConstraints& constraints, const std::string& key);
 | 
| +
 | 
| +  const blink::WebMediaConstraints constraints_;
 | 
| +  const int effects_;
 | 
| +  bool default_audio_processing_constraint_value_;
 | 
| +};
 | 
|  
 | 
|  // Enables the echo cancellation in |audio_processing|.
 | 
|  void EnableEchoCancellation(AudioProcessing* audio_processing);
 | 
| @@ -72,7 +109,7 @@ void EnableExperimentalEchoCancellation(AudioProcessing* audio_processing);
 | 
|  
 | 
|  // Starts the echo cancellation dump in |audio_processing|.
 | 
|  void StartEchoCancellationDump(AudioProcessing* audio_processing,
 | 
| -                  const base::PlatformFile& aec_dump_file);
 | 
| +                               const base::PlatformFile& aec_dump_file);
 | 
|  
 | 
|  // Stops the echo cancellation dump in |audio_processing|.
 | 
|  // This method has no impact if echo cancellation dump has not been started on
 | 
| 
 |