| Index: webrtc/modules/audio_processing/intelligibility/intelligibility_utils.cc
 | 
| diff --git a/webrtc/modules/audio_processing/intelligibility/intelligibility_utils.cc b/webrtc/modules/audio_processing/intelligibility/intelligibility_utils.cc
 | 
| index 00d9b536584360a9ad989c72751bdd6e64319356..2c2743f05323fef4597a3d2a20367105ae942e11 100644
 | 
| --- a/webrtc/modules/audio_processing/intelligibility/intelligibility_utils.cc
 | 
| +++ b/webrtc/modules/audio_processing/intelligibility/intelligibility_utils.cc
 | 
| @@ -51,33 +51,33 @@ void AddToMean(complex<float> data, int count, complex<float>* mean) {
 | 
|  
 | 
|  static const int kWindowBlockSize = 10;
 | 
|  
 | 
| -VarianceArray::VarianceArray(int freqs,
 | 
| +VarianceArray::VarianceArray(int num_freqs,
 | 
|                               StepType type,
 | 
|                               int window_size,
 | 
|                               float decay)
 | 
| -    : running_mean_(new complex<float>[freqs]()),
 | 
| -      running_mean_sq_(new complex<float>[freqs]()),
 | 
| -      sub_running_mean_(new complex<float>[freqs]()),
 | 
| -      sub_running_mean_sq_(new complex<float>[freqs]()),
 | 
| -      variance_(new float[freqs]()),
 | 
| -      conj_sum_(new float[freqs]()),
 | 
| -      freqs_(freqs),
 | 
| +    : running_mean_(new complex<float>[num_freqs]()),
 | 
| +      running_mean_sq_(new complex<float>[num_freqs]()),
 | 
| +      sub_running_mean_(new complex<float>[num_freqs]()),
 | 
| +      sub_running_mean_sq_(new complex<float>[num_freqs]()),
 | 
| +      variance_(new float[num_freqs]()),
 | 
| +      conj_sum_(new float[num_freqs]()),
 | 
| +      num_freqs_(num_freqs),
 | 
|        window_size_(window_size),
 | 
|        decay_(decay),
 | 
|        history_cursor_(0),
 | 
|        count_(0),
 | 
|        array_mean_(0.0f),
 | 
|        buffer_full_(false) {
 | 
| -  history_.reset(new rtc::scoped_ptr<complex<float>[]>[freqs_]());
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  history_.reset(new rtc::scoped_ptr<complex<float>[]>[num_freqs_]());
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      history_[i].reset(new complex<float>[window_size_]());
 | 
|    }
 | 
| -  subhistory_.reset(new rtc::scoped_ptr<complex<float>[]>[freqs_]());
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  subhistory_.reset(new rtc::scoped_ptr<complex<float>[]>[num_freqs_]());
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      subhistory_[i].reset(new complex<float>[window_size_]());
 | 
|    }
 | 
| -  subhistory_sq_.reset(new rtc::scoped_ptr<complex<float>[]>[freqs_]());
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  subhistory_sq_.reset(new rtc::scoped_ptr<complex<float>[]>[num_freqs_]());
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      subhistory_sq_[i].reset(new complex<float>[window_size_]());
 | 
|    }
 | 
|    switch (type) {
 | 
| @@ -104,7 +104,7 @@ VarianceArray::VarianceArray(int freqs,
 | 
|  void VarianceArray::InfiniteStep(const complex<float>* data, bool skip_fudge) {
 | 
|    array_mean_ = 0.0f;
 | 
|    ++count_;
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      complex<float> sample = data[i];
 | 
|      if (!skip_fudge) {
 | 
|        sample = zerofudge(sample);
 | 
| @@ -132,7 +132,7 @@ void VarianceArray::InfiniteStep(const complex<float>* data, bool skip_fudge) {
 | 
|  void VarianceArray::DecayStep(const complex<float>* data, bool /*dummy*/) {
 | 
|    array_mean_ = 0.0f;
 | 
|    ++count_;
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      complex<float> sample = data[i];
 | 
|      sample = zerofudge(sample);
 | 
|  
 | 
| @@ -159,7 +159,7 @@ void VarianceArray::DecayStep(const complex<float>* data, bool /*dummy*/) {
 | 
|  void VarianceArray::WindowedStep(const complex<float>* data, bool /*dummy*/) {
 | 
|    int num = min(count_ + 1, window_size_);
 | 
|    array_mean_ = 0.0f;
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      complex<float> mean;
 | 
|      float conj_sum = 0.0f;
 | 
|  
 | 
| @@ -192,7 +192,7 @@ void VarianceArray::WindowedStep(const complex<float>* data, bool /*dummy*/) {
 | 
|  // are recomputed from scratch at each of these transitions.
 | 
|  void VarianceArray::BlockedStep(const complex<float>* data, bool /*dummy*/) {
 | 
|    int blocks = min(window_size_, history_cursor_ + 1);
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      AddToMean(data[i], count_ + 1, &sub_running_mean_[i]);
 | 
|      AddToMean(data[i] * std::conj(data[i]), count_ + 1,
 | 
|                &sub_running_mean_sq_[i]);
 | 
| @@ -228,7 +228,7 @@ void VarianceArray::BlockBasedMovingAverage(const std::complex<float>* data,
 | 
|    // TODO(ekmeyerson) To mitigate potential divergence, add counter so that
 | 
|    // after every so often sums are computed scratch by summing over all
 | 
|    // elements instead of subtracting oldest and adding newest.
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      sub_running_mean_[i] += data[i];
 | 
|      sub_running_mean_sq_[i] += data[i] * std::conj(data[i]);
 | 
|    }
 | 
| @@ -239,7 +239,7 @@ void VarianceArray::BlockBasedMovingAverage(const std::complex<float>* data,
 | 
|    if (count_ >= kWindowBlockSize) {
 | 
|      count_ = 0;
 | 
|  
 | 
| -    for (int i = 0; i < freqs_; ++i) {
 | 
| +    for (int i = 0; i < num_freqs_; ++i) {
 | 
|        running_mean_[i] -= subhistory_[i][history_cursor_];
 | 
|        running_mean_sq_[i] -= subhistory_sq_[i][history_cursor_];
 | 
|  
 | 
| @@ -268,10 +268,11 @@ void VarianceArray::BlockBasedMovingAverage(const std::complex<float>* data,
 | 
|  }
 | 
|  
 | 
|  void VarianceArray::Clear() {
 | 
| -  memset(running_mean_.get(), 0, sizeof(*running_mean_.get()) * freqs_);
 | 
| -  memset(running_mean_sq_.get(), 0, sizeof(*running_mean_sq_.get()) * freqs_);
 | 
| -  memset(variance_.get(), 0, sizeof(*variance_.get()) * freqs_);
 | 
| -  memset(conj_sum_.get(), 0, sizeof(*conj_sum_.get()) * freqs_);
 | 
| +  memset(running_mean_.get(), 0, sizeof(*running_mean_.get()) * num_freqs_);
 | 
| +  memset(running_mean_sq_.get(), 0,
 | 
| +         sizeof(*running_mean_sq_.get()) * num_freqs_);
 | 
| +  memset(variance_.get(), 0, sizeof(*variance_.get()) * num_freqs_);
 | 
| +  memset(conj_sum_.get(), 0, sizeof(*conj_sum_.get()) * num_freqs_);
 | 
|    history_cursor_ = 0;
 | 
|    count_ = 0;
 | 
|    array_mean_ = 0.0f;
 | 
| @@ -279,14 +280,14 @@ void VarianceArray::Clear() {
 | 
|  
 | 
|  void VarianceArray::ApplyScale(float scale) {
 | 
|    array_mean_ = 0.0f;
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      variance_[i] *= scale * scale;
 | 
|      array_mean_ += (variance_[i] - array_mean_) / (i + 1);
 | 
|    }
 | 
|  }
 | 
|  
 | 
|  GainApplier::GainApplier(int freqs, float change_limit)
 | 
| -    : freqs_(freqs),
 | 
| +    : num_freqs_(freqs),
 | 
|        change_limit_(change_limit),
 | 
|        target_(new float[freqs]()),
 | 
|        current_(new float[freqs]()) {
 | 
| @@ -298,7 +299,7 @@ GainApplier::GainApplier(int freqs, float change_limit)
 | 
|  
 | 
|  void GainApplier::Apply(const complex<float>* in_block,
 | 
|                          complex<float>* out_block) {
 | 
| -  for (int i = 0; i < freqs_; ++i) {
 | 
| +  for (int i = 0; i < num_freqs_; ++i) {
 | 
|      float factor = sqrtf(fabsf(current_[i]));
 | 
|      if (!std::isnormal(factor)) {
 | 
|        factor = 1.0f;
 | 
| 
 |