Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Unified Diff: webrtc/modules/audio_processing/three_band_filter_bank.cc

Issue 1227213002: Update audio code to use size_t more correctly, webrtc/modules/audio_processing/ (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Resync Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_processing/three_band_filter_bank.cc
diff --git a/webrtc/modules/audio_processing/three_band_filter_bank.cc b/webrtc/modules/audio_processing/three_band_filter_bank.cc
index efd7a7963402f49360e05ff066b906056a347570..e81e519ef37a7547c155ad7191c68b0623ce1864 100644
--- a/webrtc/modules/audio_processing/three_band_filter_bank.cc
+++ b/webrtc/modules/audio_processing/three_band_filter_bank.cc
@@ -42,8 +42,8 @@
namespace webrtc {
namespace {
-const int kNumBands = 3;
-const int kSparsity = 4;
+const size_t kNumBands = 3;
+const size_t kSparsity = 4;
// Factors to take into account when choosing |kNumCoeffs|:
// 1. Higher |kNumCoeffs|, means faster transition, which ensures less
@@ -53,7 +53,7 @@ const int kSparsity = 4;
// |kNumBands| * |kSparsity| * |kNumCoeffs| / 2, so it increases linearly
// with |kNumCoeffs|.
// 3. The computation complexity also increases linearly with |kNumCoeffs|.
-const int kNumCoeffs = 4;
+const size_t kNumCoeffs = 4;
// The Matlab code to generate these |kLowpassCoeffs| is:
//
@@ -85,8 +85,11 @@ const float kLowpassCoeffs[kNumBands * kSparsity][kNumCoeffs] =
// Downsamples |in| into |out|, taking one every |kNumbands| starting from
// |offset|. |split_length| is the |out| length. |in| has to be at least
// |kNumBands| * |split_length| long.
-void Downsample(const float* in, int split_length, int offset, float* out) {
- for (int i = 0; i < split_length; ++i) {
+void Downsample(const float* in,
+ size_t split_length,
+ size_t offset,
+ float* out) {
+ for (size_t i = 0; i < split_length; ++i) {
out[i] = in[kNumBands * i + offset];
}
}
@@ -94,8 +97,8 @@ void Downsample(const float* in, int split_length, int offset, float* out) {
// Upsamples |in| into |out|, scaling by |kNumBands| and accumulating it every
// |kNumBands| starting from |offset|. |split_length| is the |in| length. |out|
// has to be at least |kNumBands| * |split_length| long.
-void Upsample(const float* in, int split_length, int offset, float* out) {
- for (int i = 0; i < split_length; ++i) {
+void Upsample(const float* in, size_t split_length, size_t offset, float* out) {
+ for (size_t i = 0; i < split_length; ++i) {
out[kNumBands * i + offset] += kNumBands * in[i];
}
}
@@ -105,11 +108,11 @@ void Upsample(const float* in, int split_length, int offset, float* out) {
// Because the low-pass filter prototype has half bandwidth it is possible to
// use a DCT to shift it in both directions at the same time, to the center
// frequencies [1 / 12, 3 / 12, 5 / 12].
-ThreeBandFilterBank::ThreeBandFilterBank(int length)
+ThreeBandFilterBank::ThreeBandFilterBank(size_t length)
: in_buffer_(rtc::CheckedDivExact(length, kNumBands)),
out_buffer_(in_buffer_.size()) {
- for (int i = 0; i < kSparsity; ++i) {
- for (int j = 0; j < kNumBands; ++j) {
+ for (size_t i = 0; i < kSparsity; ++i) {
+ for (size_t j = 0; j < kNumBands; ++j) {
analysis_filters_.push_back(new SparseFIRFilter(
kLowpassCoeffs[i * kNumBands + j], kNumCoeffs, kSparsity, i));
synthesis_filters_.push_back(new SparseFIRFilter(
@@ -119,7 +122,7 @@ ThreeBandFilterBank::ThreeBandFilterBank(int length)
dct_modulation_.resize(kNumBands * kSparsity);
for (size_t i = 0; i < dct_modulation_.size(); ++i) {
dct_modulation_[i].resize(kNumBands);
- for (int j = 0; j < kNumBands; ++j) {
+ for (size_t j = 0; j < kNumBands; ++j) {
dct_modulation_[i][j] =
2.f * cos(2.f * M_PI * i * (2.f * j + 1.f) / dct_modulation_.size());
}
@@ -133,17 +136,16 @@ ThreeBandFilterBank::ThreeBandFilterBank(int length)
// of |kSparsity|.
// 3. Modulating with cosines and accumulating to get the desired band.
void ThreeBandFilterBank::Analysis(const float* in,
- int length,
+ size_t length,
float* const* out) {
- CHECK_EQ(static_cast<int>(in_buffer_.size()),
- rtc::CheckedDivExact(length, kNumBands));
- for (int i = 0; i < kNumBands; ++i) {
+ CHECK_EQ(in_buffer_.size(), rtc::CheckedDivExact(length, kNumBands));
+ for (size_t i = 0; i < kNumBands; ++i) {
memset(out[i], 0, in_buffer_.size() * sizeof(*out[i]));
}
- for (int i = 0; i < kNumBands; ++i) {
+ for (size_t i = 0; i < kNumBands; ++i) {
Downsample(in, in_buffer_.size(), kNumBands - i - 1, &in_buffer_[0]);
- for (int j = 0; j < kSparsity; ++j) {
- const int offset = i + j * kNumBands;
+ for (size_t j = 0; j < kSparsity; ++j) {
+ const size_t offset = i + j * kNumBands;
analysis_filters_[offset]->Filter(&in_buffer_[0],
in_buffer_.size(),
&out_buffer_[0]);
@@ -159,13 +161,13 @@ void ThreeBandFilterBank::Analysis(const float* in,
// |kSparsity| signals with different delays.
// 3. Parallel to serial upsampling by a factor of |kNumBands|.
void ThreeBandFilterBank::Synthesis(const float* const* in,
- int split_length,
+ size_t split_length,
float* out) {
- CHECK_EQ(static_cast<int>(in_buffer_.size()), split_length);
+ CHECK_EQ(in_buffer_.size(), split_length);
memset(out, 0, kNumBands * in_buffer_.size() * sizeof(*out));
- for (int i = 0; i < kNumBands; ++i) {
- for (int j = 0; j < kSparsity; ++j) {
- const int offset = i + j * kNumBands;
+ for (size_t i = 0; i < kNumBands; ++i) {
+ for (size_t j = 0; j < kSparsity; ++j) {
+ const size_t offset = i + j * kNumBands;
UpModulate(in, in_buffer_.size(), offset, &in_buffer_[0]);
synthesis_filters_[offset]->Filter(&in_buffer_[0],
in_buffer_.size(),
@@ -181,11 +183,11 @@ void ThreeBandFilterBank::Synthesis(const float* const* in,
// cosines used for modulation. |split_length| is the length of |in| and each
// band of |out|.
void ThreeBandFilterBank::DownModulate(const float* in,
- int split_length,
- int offset,
+ size_t split_length,
+ size_t offset,
float* const* out) {
- for (int i = 0; i < kNumBands; ++i) {
- for (int j = 0; j < split_length; ++j) {
+ for (size_t i = 0; i < kNumBands; ++i) {
+ for (size_t j = 0; j < split_length; ++j) {
out[i][j] += dct_modulation_[offset][i] * in[j];
}
}
@@ -196,12 +198,12 @@ void ThreeBandFilterBank::DownModulate(const float* in,
// |offset| is the index in the period of the cosines used for modulation.
// |split_length| is the length of each band of |in| and |out|.
void ThreeBandFilterBank::UpModulate(const float* const* in,
- int split_length,
- int offset,
+ size_t split_length,
+ size_t offset,
float* out) {
memset(out, 0, split_length * sizeof(*out));
- for (int i = 0; i < kNumBands; ++i) {
- for (int j = 0; j < split_length; ++j) {
+ for (size_t i = 0; i < kNumBands; ++i) {
+ for (size_t j = 0; j < split_length; ++j) {
out[j] += dct_modulation_[offset][i] * in[i][j];
}
}

Powered by Google App Engine
This is Rietveld 408576698