Chromium Code Reviews| Index: webrtc/modules/audio_processing/vad/pole_zero_filter.cc |
| diff --git a/webrtc/modules/audio_processing/vad/pole_zero_filter.cc b/webrtc/modules/audio_processing/vad/pole_zero_filter.cc |
| index 84d0739d8c146f0c4a90eb5ff218abe003f86080..788a87da3a718dc14c93ffe0590aa49c2e02305a 100644 |
| --- a/webrtc/modules/audio_processing/vad/pole_zero_filter.cc |
| +++ b/webrtc/modules/audio_processing/vad/pole_zero_filter.cc |
| @@ -25,14 +25,16 @@ PoleZeroFilter* PoleZeroFilter::Create(const float* numerator_coefficients, |
| order_denominator > kMaxFilterOrder || denominator_coefficients[0] == 0 || |
| numerator_coefficients == NULL || denominator_coefficients == NULL) |
| return NULL; |
| - return new PoleZeroFilter(numerator_coefficients, order_numerator, |
| - denominator_coefficients, order_denominator); |
| + return new PoleZeroFilter(numerator_coefficients, |
| + static_cast<size_t>(order_numerator), |
|
aluebs-webrtc
2015/07/17 01:04:42
I guess that changing the interface of PoleZeroFil
Peter Kasting
2015/07/17 18:57:40
Actually that change is easy, and I'm not sure why
aluebs-webrtc
2015/07/17 23:16:58
Awesome! :)
|
| + denominator_coefficients, |
| + static_cast<size_t>(order_denominator)); |
| } |
| PoleZeroFilter::PoleZeroFilter(const float* numerator_coefficients, |
| - int order_numerator, |
| + size_t order_numerator, |
| const float* denominator_coefficients, |
| - int order_denominator) |
| + size_t order_denominator) |
| : past_input_(), |
| past_output_(), |
| numerator_coefficients_(), |
| @@ -46,30 +48,31 @@ PoleZeroFilter::PoleZeroFilter(const float* numerator_coefficients, |
| sizeof(denominator_coefficients_[0]) * (order_denominator_ + 1)); |
| if (denominator_coefficients_[0] != 1) { |
| - for (int n = 0; n <= order_numerator_; n++) |
| + for (size_t n = 0; n <= order_numerator_; n++) |
| numerator_coefficients_[n] /= denominator_coefficients_[0]; |
| - for (int n = 0; n <= order_denominator_; n++) |
| + for (size_t n = 0; n <= order_denominator_; n++) |
| denominator_coefficients_[n] /= denominator_coefficients_[0]; |
| } |
| } |
| template <typename T> |
| -static float FilterArPast(const T* past, int order, const float* coefficients) { |
| +static float FilterArPast(const T* past, size_t order, |
| + const float* coefficients) { |
| float sum = 0.0f; |
| - int past_index = order - 1; |
| - for (int k = 1; k <= order; k++, past_index--) |
| + size_t past_index = order - 1; |
| + for (size_t k = 1; k <= order; k++, past_index--) |
| sum += coefficients[k] * past[past_index]; |
| return sum; |
| } |
| int PoleZeroFilter::Filter(const int16_t* in, |
| - int num_input_samples, |
| + size_t num_input_samples, |
| float* output) { |
| - if (in == NULL || num_input_samples < 0 || output == NULL) |
| + if (in == NULL || output == NULL) |
| return -1; |
| // This is the typical case, just a memcpy. |
| - const int k = std::min(num_input_samples, highest_order_); |
| - int n; |
| + const size_t k = std::min(num_input_samples, highest_order_); |
| + size_t n; |
| for (n = 0; n < k; n++) { |
| output[n] = in[n] * numerator_coefficients_[0]; |
| output[n] += FilterArPast(&past_input_[n], order_numerator_, |
| @@ -81,7 +84,7 @@ int PoleZeroFilter::Filter(const int16_t* in, |
| past_output_[n + order_denominator_] = output[n]; |
| } |
| if (highest_order_ < num_input_samples) { |
| - for (int m = 0; n < num_input_samples; n++, m++) { |
| + for (size_t m = 0; n < num_input_samples; n++, m++) { |
| output[n] = in[n] * numerator_coefficients_[0]; |
| output[n] += |
| FilterArPast(&in[m], order_numerator_, numerator_coefficients_); |