diff options
Diffstat (limited to 'webrtc/modules/audio_processing/beamformer')
9 files changed, 91 insertions, 86 deletions
diff --git a/webrtc/modules/audio_processing/beamformer/array_util.cc b/webrtc/modules/audio_processing/beamformer/array_util.cc index 8aaeee9f59..6b1c474269 100644 --- a/webrtc/modules/audio_processing/beamformer/array_util.cc +++ b/webrtc/modules/audio_processing/beamformer/array_util.cc @@ -56,7 +56,7 @@ bool ArePerpendicular(const Point& a, const Point& b) { return std::abs(DotProduct(a, b)) < kMaxDotProduct; } -rtc::Maybe<Point> GetDirectionIfLinear( +rtc::Optional<Point> GetDirectionIfLinear( const std::vector<Point>& array_geometry) { RTC_DCHECK_GT(array_geometry.size(), 1u); const Point first_pair_direction = @@ -65,13 +65,14 @@ rtc::Maybe<Point> GetDirectionIfLinear( const Point pair_direction = PairDirection(array_geometry[i - 1], array_geometry[i]); if (!AreParallel(first_pair_direction, pair_direction)) { - return rtc::Maybe<Point>(); + return rtc::Optional<Point>(); } } - return first_pair_direction; + return rtc::Optional<Point>(first_pair_direction); } -rtc::Maybe<Point> GetNormalIfPlanar(const std::vector<Point>& array_geometry) { +rtc::Optional<Point> GetNormalIfPlanar( + const std::vector<Point>& array_geometry) { RTC_DCHECK_GT(array_geometry.size(), 1u); const Point first_pair_direction = PairDirection(array_geometry[0], array_geometry[1]); @@ -85,30 +86,30 @@ rtc::Maybe<Point> GetNormalIfPlanar(const std::vector<Point>& array_geometry) { } } if (is_linear) { - return rtc::Maybe<Point>(); + return rtc::Optional<Point>(); } const Point normal_direction = CrossProduct(first_pair_direction, pair_direction); for (; i < array_geometry.size(); ++i) { pair_direction = PairDirection(array_geometry[i - 1], array_geometry[i]); if (!ArePerpendicular(normal_direction, pair_direction)) { - return rtc::Maybe<Point>(); + return rtc::Optional<Point>(); } } - return normal_direction; + return rtc::Optional<Point>(normal_direction); } -rtc::Maybe<Point> GetArrayNormalIfExists( +rtc::Optional<Point> GetArrayNormalIfExists( const std::vector<Point>& array_geometry) { - const rtc::Maybe<Point> direction = GetDirectionIfLinear(array_geometry); + const rtc::Optional<Point> direction = GetDirectionIfLinear(array_geometry); if (direction) { - return Point(direction->y(), -direction->x(), 0.f); + return rtc::Optional<Point>(Point(direction->y(), -direction->x(), 0.f)); } - const rtc::Maybe<Point> normal = GetNormalIfPlanar(array_geometry); + const rtc::Optional<Point> normal = GetNormalIfPlanar(array_geometry); if (normal && normal->z() < kMaxDotProduct) { return normal; } - return rtc::Maybe<Point>(); + return rtc::Optional<Point>(); } Point AzimuthToPoint(float azimuth) { diff --git a/webrtc/modules/audio_processing/beamformer/array_util.h b/webrtc/modules/audio_processing/beamformer/array_util.h index 7fff9735a1..f86ad5dee6 100644 --- a/webrtc/modules/audio_processing/beamformer/array_util.h +++ b/webrtc/modules/audio_processing/beamformer/array_util.h @@ -14,7 +14,7 @@ #include <cmath> #include <vector> -#include "webrtc/base/maybe.h" +#include "webrtc/base/optional.h" namespace webrtc { @@ -59,15 +59,16 @@ float GetMinimumSpacing(const std::vector<Point>& array_geometry); // If the given array geometry is linear it returns the direction without // normalizing. -rtc::Maybe<Point> GetDirectionIfLinear( +rtc::Optional<Point> GetDirectionIfLinear( const std::vector<Point>& array_geometry); // If the given array geometry is planar it returns the normal without // normalizing. -rtc::Maybe<Point> GetNormalIfPlanar(const std::vector<Point>& array_geometry); +rtc::Optional<Point> GetNormalIfPlanar( + const std::vector<Point>& array_geometry); // Returns the normal of an array if it has one and it is in the xy-plane. -rtc::Maybe<Point> GetArrayNormalIfExists( +rtc::Optional<Point> GetArrayNormalIfExists( const std::vector<Point>& array_geometry); // The resulting Point will be in the xy-plane. diff --git a/webrtc/modules/audio_processing/beamformer/complex_matrix.h b/webrtc/modules/audio_processing/beamformer/complex_matrix.h index bfa3563b89..707c51564b 100644 --- a/webrtc/modules/audio_processing/beamformer/complex_matrix.h +++ b/webrtc/modules/audio_processing/beamformer/complex_matrix.h @@ -27,10 +27,10 @@ class ComplexMatrix : public Matrix<complex<T> > { public: ComplexMatrix() : Matrix<complex<T> >() {} - ComplexMatrix(int num_rows, int num_columns) + ComplexMatrix(size_t num_rows, size_t num_columns) : Matrix<complex<T> >(num_rows, num_columns) {} - ComplexMatrix(const complex<T>* data, int num_rows, int num_columns) + ComplexMatrix(const complex<T>* data, size_t num_rows, size_t num_columns) : Matrix<complex<T> >(data, num_rows, num_columns) {} // Complex Matrix operations. @@ -51,7 +51,7 @@ class ComplexMatrix : public Matrix<complex<T> > { ComplexMatrix& ConjugateTranspose() { this->CopyDataToScratch(); - int num_rows = this->num_rows(); + size_t num_rows = this->num_rows(); this->SetNumRows(this->num_columns()); this->SetNumColumns(num_rows); this->Resize(); @@ -82,8 +82,8 @@ class ComplexMatrix : public Matrix<complex<T> > { private: ComplexMatrix& ConjugateTranspose(const complex<T>* const* src) { complex<T>* const* elements = this->elements(); - for (int i = 0; i < this->num_rows(); ++i) { - for (int j = 0; j < this->num_columns(); ++j) { + for (size_t i = 0; i < this->num_rows(); ++i) { + for (size_t j = 0; j < this->num_columns(); ++j) { elements[i][j] = conj(src[j][i]); } } diff --git a/webrtc/modules/audio_processing/beamformer/covariance_matrix_generator.cc b/webrtc/modules/audio_processing/beamformer/covariance_matrix_generator.cc index d0728325fc..78f4df5ca9 100644 --- a/webrtc/modules/audio_processing/beamformer/covariance_matrix_generator.cc +++ b/webrtc/modules/audio_processing/beamformer/covariance_matrix_generator.cc @@ -27,7 +27,7 @@ float BesselJ0(float x) { // Calculates the Euclidean norm for a row vector. float Norm(const ComplexMatrix<float>& x) { - RTC_CHECK_EQ(1, x.num_rows()); + RTC_CHECK_EQ(1u, x.num_rows()); const size_t length = x.num_columns(); const complex<float>* elems = x.elements()[0]; float result = 0.f; @@ -43,8 +43,8 @@ void CovarianceMatrixGenerator::UniformCovarianceMatrix( float wave_number, const std::vector<Point>& geometry, ComplexMatrix<float>* mat) { - RTC_CHECK_EQ(static_cast<int>(geometry.size()), mat->num_rows()); - RTC_CHECK_EQ(static_cast<int>(geometry.size()), mat->num_columns()); + RTC_CHECK_EQ(geometry.size(), mat->num_rows()); + RTC_CHECK_EQ(geometry.size(), mat->num_columns()); complex<float>* const* mat_els = mat->elements(); for (size_t i = 0; i < geometry.size(); ++i) { @@ -68,8 +68,8 @@ void CovarianceMatrixGenerator::AngledCovarianceMatrix( int sample_rate, const std::vector<Point>& geometry, ComplexMatrix<float>* mat) { - RTC_CHECK_EQ(static_cast<int>(geometry.size()), mat->num_rows()); - RTC_CHECK_EQ(static_cast<int>(geometry.size()), mat->num_columns()); + RTC_CHECK_EQ(geometry.size(), mat->num_rows()); + RTC_CHECK_EQ(geometry.size(), mat->num_columns()); ComplexMatrix<float> interf_cov_vector(1, geometry.size()); ComplexMatrix<float> interf_cov_vector_transposed(geometry.size(), 1); @@ -94,8 +94,8 @@ void CovarianceMatrixGenerator::PhaseAlignmentMasks( const std::vector<Point>& geometry, float angle, ComplexMatrix<float>* mat) { - RTC_CHECK_EQ(1, mat->num_rows()); - RTC_CHECK_EQ(static_cast<int>(geometry.size()), mat->num_columns()); + RTC_CHECK_EQ(1u, mat->num_rows()); + RTC_CHECK_EQ(geometry.size(), mat->num_columns()); float freq_in_hertz = (static_cast<float>(frequency_bin) / fft_size) * sample_rate; diff --git a/webrtc/modules/audio_processing/beamformer/matrix.h b/webrtc/modules/audio_processing/beamformer/matrix.h index 162aef1dac..51c1cece97 100644 --- a/webrtc/modules/audio_processing/beamformer/matrix.h +++ b/webrtc/modules/audio_processing/beamformer/matrix.h @@ -67,7 +67,7 @@ class Matrix { Matrix() : num_rows_(0), num_columns_(0) {} // Allocates space for the elements and initializes all values to zero. - Matrix(int num_rows, int num_columns) + Matrix(size_t num_rows, size_t num_columns) : num_rows_(num_rows), num_columns_(num_columns) { Resize(); scratch_data_.resize(num_rows_ * num_columns_); @@ -75,7 +75,7 @@ class Matrix { } // Copies |data| into the new Matrix. - Matrix(const T* data, int num_rows, int num_columns) + Matrix(const T* data, size_t num_rows, size_t num_columns) : num_rows_(0), num_columns_(0) { CopyFrom(data, num_rows, num_columns); scratch_data_.resize(num_rows_ * num_columns_); @@ -90,23 +90,23 @@ class Matrix { } // Copy |data| into the Matrix. The current data is lost. - void CopyFrom(const T* const data, int num_rows, int num_columns) { + void CopyFrom(const T* const data, size_t num_rows, size_t num_columns) { Resize(num_rows, num_columns); memcpy(&data_[0], data, num_rows_ * num_columns_ * sizeof(data_[0])); } Matrix& CopyFromColumn(const T* const* src, size_t column_index, - int num_rows) { + size_t num_rows) { Resize(1, num_rows); - for (int i = 0; i < num_columns_; ++i) { + for (size_t i = 0; i < num_columns_; ++i) { data_[i] = src[i][column_index]; } return *this; } - void Resize(int num_rows, int num_columns) { + void Resize(size_t num_rows, size_t num_columns) { if (num_rows != num_rows_ || num_columns != num_columns_) { num_rows_ = num_rows; num_columns_ = num_columns; @@ -115,8 +115,8 @@ class Matrix { } // Accessors and mutators. - int num_rows() const { return num_rows_; } - int num_columns() const { return num_columns_; } + size_t num_rows() const { return num_rows_; } + size_t num_columns() const { return num_columns_; } T* const* elements() { return &elements_[0]; } const T* const* elements() const { return &elements_[0]; } @@ -124,7 +124,7 @@ class Matrix { RTC_CHECK_EQ(num_rows_, num_columns_); T trace = 0; - for (int i = 0; i < num_rows_; ++i) { + for (size_t i = 0; i < num_rows_; ++i) { trace += elements_[i][i]; } return trace; @@ -282,8 +282,8 @@ class Matrix { std::ostringstream ss; ss << std::endl << "Matrix" << std::endl; - for (int i = 0; i < num_rows_; ++i) { - for (int j = 0; j < num_columns_; ++j) { + for (size_t i = 0; i < num_rows_; ++i) { + for (size_t j = 0; j < num_columns_; ++j) { ss << elements_[i][j] << " "; } ss << std::endl; @@ -294,8 +294,8 @@ class Matrix { } protected: - void SetNumRows(const int num_rows) { num_rows_ = num_rows; } - void SetNumColumns(const int num_columns) { num_columns_ = num_columns; } + void SetNumRows(const size_t num_rows) { num_rows_ = num_rows; } + void SetNumColumns(const size_t num_columns) { num_columns_ = num_columns; } T* data() { return &data_[0]; } const T* data() const { return &data_[0]; } const T* const* scratch_elements() const { return &scratch_elements_[0]; } @@ -307,7 +307,7 @@ class Matrix { data_.resize(size); elements_.resize(num_rows_); - for (int i = 0; i < num_rows_; ++i) { + for (size_t i = 0; i < num_rows_; ++i) { elements_[i] = &data_[i * num_columns_]; } } @@ -317,14 +317,14 @@ class Matrix { scratch_data_ = data_; scratch_elements_.resize(num_rows_); - for (int i = 0; i < num_rows_; ++i) { + for (size_t i = 0; i < num_rows_; ++i) { scratch_elements_[i] = &scratch_data_[i * num_columns_]; } } private: - int num_rows_; - int num_columns_; + size_t num_rows_; + size_t num_columns_; std::vector<T> data_; std::vector<T*> elements_; @@ -336,8 +336,8 @@ class Matrix { // Helpers for Transpose and Multiply operations that unify in-place and // out-of-place solutions. Matrix& Transpose(const T* const* src) { - for (int i = 0; i < num_rows_; ++i) { - for (int j = 0; j < num_columns_; ++j) { + for (size_t i = 0; i < num_rows_; ++i) { + for (size_t j = 0; j < num_columns_; ++j) { elements_[i][j] = src[j][i]; } } @@ -345,11 +345,13 @@ class Matrix { return *this; } - Matrix& Multiply(const T* const* lhs, int num_rows_rhs, const T* const* rhs) { - for (int row = 0; row < num_rows_; ++row) { - for (int col = 0; col < num_columns_; ++col) { + Matrix& Multiply(const T* const* lhs, + size_t num_rows_rhs, + const T* const* rhs) { + for (size_t row = 0; row < num_rows_; ++row) { + for (size_t col = 0; col < num_columns_; ++col) { T cur_element = 0; - for (int i = 0; i < num_rows_rhs; ++i) { + for (size_t i = 0; i < num_rows_rhs; ++i) { cur_element += lhs[row][i] * rhs[i][col]; } diff --git a/webrtc/modules/audio_processing/beamformer/matrix_test_helpers.h b/webrtc/modules/audio_processing/beamformer/matrix_test_helpers.h index 7c58670068..9891a8220c 100644 --- a/webrtc/modules/audio_processing/beamformer/matrix_test_helpers.h +++ b/webrtc/modules/audio_processing/beamformer/matrix_test_helpers.h @@ -34,8 +34,8 @@ class MatrixTestHelpers { const T* const* expected_elements = expected.elements(); const T* const* actual_elements = actual.elements(); - for (int i = 0; i < expected.num_rows(); ++i) { - for (int j = 0; j < expected.num_columns(); ++j) { + for (size_t i = 0; i < expected.num_rows(); ++i) { + for (size_t j = 0; j < expected.num_columns(); ++j) { EXPECT_EQ(expected_elements[i][j], actual_elements[i][j]); } } @@ -48,8 +48,8 @@ class MatrixTestHelpers { const float* const* expected_elements = expected.elements(); const float* const* actual_elements = actual.elements(); - for (int i = 0; i < expected.num_rows(); ++i) { - for (int j = 0; j < expected.num_columns(); ++j) { + for (size_t i = 0; i < expected.num_rows(); ++i) { + for (size_t j = 0; j < expected.num_columns(); ++j) { EXPECT_NEAR(expected_elements[i][j], actual_elements[i][j], kTolerance); } } @@ -63,8 +63,8 @@ class MatrixTestHelpers { const complex<float>* const* expected_elements = expected.elements(); const complex<float>* const* actual_elements = actual.elements(); - for (int i = 0; i < expected.num_rows(); ++i) { - for (int j = 0; j < expected.num_columns(); ++j) { + for (size_t i = 0; i < expected.num_rows(); ++i) { + for (size_t j = 0; j < expected.num_columns(); ++j) { EXPECT_NEAR(expected_elements[i][j].real(), actual_elements[i][j].real(), kTolerance); @@ -84,8 +84,8 @@ class MatrixTestHelpers { const complex<float>* const* expected_elements = expected.elements(); const complex<float>* const* actual_elements = actual.elements(); - for (int i = 0; i < expected.num_rows(); ++i) { - for (int j = 0; j < expected.num_columns(); ++j) { + for (size_t i = 0; i < expected.num_rows(); ++i) { + for (size_t j = 0; j < expected.num_columns(); ++j) { EXPECT_NEAR(expected_elements[i][j].real(), actual_elements[i][j].real(), tolerance); diff --git a/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.cc b/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.cc index 029fa089fc..6ea7234f6f 100644 --- a/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.cc +++ b/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.cc @@ -79,7 +79,7 @@ const float kCompensationGain = 2.f; // The returned norm is clamped to be non-negative. float Norm(const ComplexMatrix<float>& mat, const ComplexMatrix<float>& norm_mat) { - RTC_CHECK_EQ(norm_mat.num_rows(), 1); + RTC_CHECK_EQ(1u, norm_mat.num_rows()); RTC_CHECK_EQ(norm_mat.num_columns(), mat.num_rows()); RTC_CHECK_EQ(norm_mat.num_columns(), mat.num_columns()); @@ -89,8 +89,8 @@ float Norm(const ComplexMatrix<float>& mat, const complex<float>* const* mat_els = mat.elements(); const complex<float>* const* norm_mat_els = norm_mat.elements(); - for (int i = 0; i < norm_mat.num_columns(); ++i) { - for (int j = 0; j < norm_mat.num_columns(); ++j) { + for (size_t i = 0; i < norm_mat.num_columns(); ++i) { + for (size_t j = 0; j < norm_mat.num_columns(); ++j) { first_product += conj(norm_mat_els[0][j]) * mat_els[j][i]; } second_product += first_product * norm_mat_els[0][i]; @@ -102,15 +102,15 @@ float Norm(const ComplexMatrix<float>& mat, // Does conjugate(|lhs|) * |rhs| for row vectors |lhs| and |rhs|. complex<float> ConjugateDotProduct(const ComplexMatrix<float>& lhs, const ComplexMatrix<float>& rhs) { - RTC_CHECK_EQ(lhs.num_rows(), 1); - RTC_CHECK_EQ(rhs.num_rows(), 1); + RTC_CHECK_EQ(1u, lhs.num_rows()); + RTC_CHECK_EQ(1u, rhs.num_rows()); RTC_CHECK_EQ(lhs.num_columns(), rhs.num_columns()); const complex<float>* const* lhs_elements = lhs.elements(); const complex<float>* const* rhs_elements = rhs.elements(); complex<float> result = complex<float>(0.f, 0.f); - for (int i = 0; i < lhs.num_columns(); ++i) { + for (size_t i = 0; i < lhs.num_columns(); ++i) { result += conj(lhs_elements[0][i]) * rhs_elements[0][i]; } @@ -126,8 +126,8 @@ size_t Round(float x) { float SumAbs(const ComplexMatrix<float>& mat) { float sum_abs = 0.f; const complex<float>* const* mat_els = mat.elements(); - for (int i = 0; i < mat.num_rows(); ++i) { - for (int j = 0; j < mat.num_columns(); ++j) { + for (size_t i = 0; i < mat.num_rows(); ++i) { + for (size_t j = 0; j < mat.num_columns(); ++j) { sum_abs += std::abs(mat_els[i][j]); } } @@ -138,8 +138,8 @@ float SumAbs(const ComplexMatrix<float>& mat) { float SumSquares(const ComplexMatrix<float>& mat) { float sum_squares = 0.f; const complex<float>* const* mat_els = mat.elements(); - for (int i = 0; i < mat.num_rows(); ++i) { - for (int j = 0; j < mat.num_columns(); ++j) { + for (size_t i = 0; i < mat.num_rows(); ++i) { + for (size_t j = 0; j < mat.num_columns(); ++j) { float abs_value = std::abs(mat_els[i][j]); sum_squares += abs_value * abs_value; } @@ -150,20 +150,20 @@ float SumSquares(const ComplexMatrix<float>& mat) { // Does |out| = |in|.' * conj(|in|) for row vector |in|. void TransposedConjugatedProduct(const ComplexMatrix<float>& in, ComplexMatrix<float>* out) { - RTC_CHECK_EQ(in.num_rows(), 1); + RTC_CHECK_EQ(1u, in.num_rows()); RTC_CHECK_EQ(out->num_rows(), in.num_columns()); RTC_CHECK_EQ(out->num_columns(), in.num_columns()); const complex<float>* in_elements = in.elements()[0]; complex<float>* const* out_elements = out->elements(); - for (int i = 0; i < out->num_rows(); ++i) { - for (int j = 0; j < out->num_columns(); ++j) { + for (size_t i = 0; i < out->num_rows(); ++i) { + for (size_t j = 0; j < out->num_columns(); ++j) { out_elements[i][j] = in_elements[i] * conj(in_elements[j]); } } } std::vector<Point> GetCenteredArray(std::vector<Point> array_geometry) { - for (int dim = 0; dim < 3; ++dim) { + for (size_t dim = 0; dim < 3; ++dim) { float center = 0.f; for (size_t i = 0; i < array_geometry.size(); ++i) { center += array_geometry[i].c[dim]; @@ -379,7 +379,7 @@ void NonlinearBeamformer::ProcessChunk(const ChannelBuffer<float>& input, (high_pass_postfilter_mask_ - old_high_pass_mask) / input.num_frames_per_band(); // Apply the smoothed high-pass mask to the first channel of each band. - // This can be done because the effct of the linear beamformer is negligible + // This can be done because the effect of the linear beamformer is negligible // compared to the post-filter. for (size_t i = 1; i < input.num_bands(); ++i) { float smoothed_mask = old_high_pass_mask; @@ -408,13 +408,13 @@ bool NonlinearBeamformer::IsInBeam(const SphericalPointf& spherical_point) { } void NonlinearBeamformer::ProcessAudioBlock(const complex_f* const* input, - int num_input_channels, + size_t num_input_channels, size_t num_freq_bins, - int num_output_channels, + size_t num_output_channels, complex_f* const* output) { - RTC_CHECK_EQ(num_freq_bins, kNumFreqBins); - RTC_CHECK_EQ(num_input_channels, num_input_channels_); - RTC_CHECK_EQ(num_output_channels, 1); + RTC_CHECK_EQ(kNumFreqBins, num_freq_bins); + RTC_CHECK_EQ(num_input_channels_, num_input_channels); + RTC_CHECK_EQ(1u, num_output_channels); // Calculating the post-filter masks. Note that we need two for each // frequency bin to account for the positive and negative interferer @@ -483,7 +483,7 @@ void NonlinearBeamformer::ApplyMasks(const complex_f* const* input, const complex_f* delay_sum_mask_els = normalized_delay_sum_masks_[f_ix].elements()[0]; - for (int c_ix = 0; c_ix < num_input_channels_; ++c_ix) { + for (size_t c_ix = 0; c_ix < num_input_channels_; ++c_ix) { output_channel[f_ix] += input[c_ix][f_ix] * delay_sum_mask_els[c_ix]; } diff --git a/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.h b/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.h index 565c1f349f..29c416ca91 100644 --- a/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.h +++ b/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.h @@ -67,9 +67,9 @@ class NonlinearBeamformer // Process one frequency-domain block of audio. This is where the fun // happens. Implements LappedTransform::Callback. void ProcessAudioBlock(const complex<float>* const* input, - int num_input_channels, + size_t num_input_channels, size_t num_freq_bins, - int num_output_channels, + size_t num_output_channels, complex<float>* const* output) override; private: @@ -129,12 +129,12 @@ class NonlinearBeamformer float window_[kFftSize]; // Parameters exposed to the user. - const int num_input_channels_; + const size_t num_input_channels_; int sample_rate_hz_; const std::vector<Point> array_geometry_; // The normal direction of the array if it has one and it is in the xy-plane. - const rtc::Maybe<Point> array_normal_; + const rtc::Optional<Point> array_normal_; // Minimum spacing between microphone pairs. const float min_mic_spacing_; diff --git a/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc b/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc index cc752485e9..d187552692 100644 --- a/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc +++ b/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer_test.cc @@ -12,6 +12,7 @@ #include "gflags/gflags.h" #include "webrtc/base/checks.h" +#include "webrtc/base/format_macros.h" #include "webrtc/common_audio/channel_buffer.h" #include "webrtc/common_audio/wav_file.h" #include "webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.h" @@ -52,9 +53,9 @@ int main(int argc, char* argv[]) { NonlinearBeamformer bf(array_geometry); bf.Initialize(kChunkSizeMs, in_file.sample_rate()); - printf("Input file: %s\nChannels: %d, Sample rate: %d Hz\n\n", + printf("Input file: %s\nChannels: %" PRIuS ", Sample rate: %d Hz\n\n", FLAGS_i.c_str(), in_file.num_channels(), in_file.sample_rate()); - printf("Output file: %s\nChannels: %d, Sample rate: %d Hz\n\n", + printf("Output file: %s\nChannels: %" PRIuS ", Sample rate: %d Hz\n\n", FLAGS_o.c_str(), out_file.num_channels(), out_file.sample_rate()); ChannelBuffer<float> in_buf( |