| Index: webrtc/modules/audio_processing/vad/vad_audio_proc.cc
|
| diff --git a/webrtc/modules/audio_processing/vad/vad_audio_proc.cc b/webrtc/modules/audio_processing/vad/vad_audio_proc.cc
|
| index e8f27f802de5468ca97e36e3e06ea82ef6d7cf44..8535d1ff5733ba29e0d68432e461c0a4c7754e82 100644
|
| --- a/webrtc/modules/audio_processing/vad/vad_audio_proc.cc
|
| +++ b/webrtc/modules/audio_processing/vad/vad_audio_proc.cc
|
| @@ -76,7 +76,7 @@ void VadAudioProc::ResetBuffer() {
|
| }
|
|
|
| int VadAudioProc::ExtractFeatures(const int16_t* frame,
|
| - int length,
|
| + size_t length,
|
| AudioFeatures* features) {
|
| features->num_frames = 0;
|
| if (length != kNumSubframeSamples) {
|
| @@ -100,7 +100,7 @@ int VadAudioProc::ExtractFeatures(const int16_t* frame,
|
| features->silence = false;
|
|
|
| Rms(features->rms, kMaxNumFrames);
|
| - for (int i = 0; i < kNum10msSubframes; ++i) {
|
| + for (size_t i = 0; i < kNum10msSubframes; ++i) {
|
| if (features->rms[i] < kSilenceRms) {
|
| // PitchAnalysis can cause NaNs in the pitch gain if it's fed silence.
|
| // Bail out here instead.
|
| @@ -119,13 +119,13 @@ int VadAudioProc::ExtractFeatures(const int16_t* frame,
|
|
|
| // Computes |kLpcOrder + 1| correlation coefficients.
|
| void VadAudioProc::SubframeCorrelation(double* corr,
|
| - int length_corr,
|
| - int subframe_index) {
|
| + size_t length_corr,
|
| + size_t subframe_index) {
|
| assert(length_corr >= kLpcOrder + 1);
|
| double windowed_audio[kNumSubframeSamples + kNumPastSignalSamples];
|
| - int buffer_index = subframe_index * kNumSubframeSamples;
|
| + size_t buffer_index = subframe_index * kNumSubframeSamples;
|
|
|
| - for (int n = 0; n < kNumSubframeSamples + kNumPastSignalSamples; n++)
|
| + for (size_t n = 0; n < kNumSubframeSamples + kNumPastSignalSamples; n++)
|
| windowed_audio[n] = audio_buffer_[buffer_index++] * kLpcAnalWin[n];
|
|
|
| WebRtcIsac_AutoCorr(corr, windowed_audio,
|
| @@ -136,16 +136,16 @@ void VadAudioProc::SubframeCorrelation(double* corr,
|
| // The analysis window is 15 ms long and it is centered on the first half of
|
| // each 10ms sub-frame. This is equivalent to computing LPC coefficients for the
|
| // first half of each 10 ms subframe.
|
| -void VadAudioProc::GetLpcPolynomials(double* lpc, int length_lpc) {
|
| +void VadAudioProc::GetLpcPolynomials(double* lpc, size_t length_lpc) {
|
| assert(length_lpc >= kNum10msSubframes * (kLpcOrder + 1));
|
| double corr[kLpcOrder + 1];
|
| double reflec_coeff[kLpcOrder];
|
| - for (int i = 0, offset_lpc = 0; i < kNum10msSubframes;
|
| + for (size_t i = 0, offset_lpc = 0; i < kNum10msSubframes;
|
| i++, offset_lpc += kLpcOrder + 1) {
|
| SubframeCorrelation(corr, kLpcOrder + 1, i);
|
| corr[0] *= 1.0001;
|
| // This makes Lev-Durb a bit more stable.
|
| - for (int k = 0; k < kLpcOrder + 1; k++) {
|
| + for (size_t k = 0; k < kLpcOrder + 1; k++) {
|
| corr[k] *= kCorrWeight[k];
|
| }
|
| WebRtcIsac_LevDurb(&lpc[offset_lpc], reflec_coeff, corr, kLpcOrder);
|
| @@ -174,30 +174,31 @@ static float QuadraticInterpolation(float prev_val,
|
| // with the local minimum of A(z). It saves complexity, as we save one
|
| // inversion. Furthermore, we find the first local maximum of magnitude squared,
|
| // to save on one square root.
|
| -void VadAudioProc::FindFirstSpectralPeaks(double* f_peak, int length_f_peak) {
|
| +void VadAudioProc::FindFirstSpectralPeaks(double* f_peak,
|
| + size_t length_f_peak) {
|
| assert(length_f_peak >= kNum10msSubframes);
|
| double lpc[kNum10msSubframes * (kLpcOrder + 1)];
|
| // For all sub-frames.
|
| GetLpcPolynomials(lpc, kNum10msSubframes * (kLpcOrder + 1));
|
|
|
| - const int kNumDftCoefficients = kDftSize / 2 + 1;
|
| + const size_t kNumDftCoefficients = kDftSize / 2 + 1;
|
| float data[kDftSize];
|
|
|
| - for (int i = 0; i < kNum10msSubframes; i++) {
|
| + for (size_t i = 0; i < kNum10msSubframes; i++) {
|
| // Convert to float with zero pad.
|
| memset(data, 0, sizeof(data));
|
| - for (int n = 0; n < kLpcOrder + 1; n++) {
|
| + for (size_t n = 0; n < kLpcOrder + 1; n++) {
|
| data[n] = static_cast<float>(lpc[i * (kLpcOrder + 1) + n]);
|
| }
|
| // Transform to frequency domain.
|
| WebRtc_rdft(kDftSize, 1, data, ip_, w_fft_);
|
|
|
| - int index_peak = 0;
|
| + size_t index_peak = 0;
|
| float prev_magn_sqr = data[0] * data[0];
|
| float curr_magn_sqr = data[2] * data[2] + data[3] * data[3];
|
| float next_magn_sqr;
|
| bool found_peak = false;
|
| - for (int n = 2; n < kNumDftCoefficients - 1; n++) {
|
| + for (size_t n = 2; n < kNumDftCoefficients - 1; n++) {
|
| next_magn_sqr =
|
| data[2 * n] * data[2 * n] + data[2 * n + 1] * data[2 * n + 1];
|
| if (curr_magn_sqr < prev_magn_sqr && curr_magn_sqr < next_magn_sqr) {
|
| @@ -228,7 +229,7 @@ void VadAudioProc::FindFirstSpectralPeaks(double* f_peak, int length_f_peak) {
|
| // Using iSAC functions to estimate pitch gains & lags.
|
| void VadAudioProc::PitchAnalysis(double* log_pitch_gains,
|
| double* pitch_lags_hz,
|
| - int length) {
|
| + size_t length) {
|
| // TODO(turajs): This can be "imported" from iSAC & and the next two
|
| // constants.
|
| assert(length >= kNum10msSubframes);
|
| @@ -260,12 +261,12 @@ void VadAudioProc::PitchAnalysis(double* log_pitch_gains,
|
| &log_old_gain_, &old_lag_, log_pitch_gains, pitch_lags_hz);
|
| }
|
|
|
| -void VadAudioProc::Rms(double* rms, int length_rms) {
|
| +void VadAudioProc::Rms(double* rms, size_t length_rms) {
|
| assert(length_rms >= kNum10msSubframes);
|
| - int offset = kNumPastSignalSamples;
|
| - for (int i = 0; i < kNum10msSubframes; i++) {
|
| + size_t offset = kNumPastSignalSamples;
|
| + for (size_t i = 0; i < kNum10msSubframes; i++) {
|
| rms[i] = 0;
|
| - for (int n = 0; n < kNumSubframeSamples; n++, offset++)
|
| + for (size_t n = 0; n < kNumSubframeSamples; n++, offset++)
|
| rms[i] += audio_buffer_[offset] * audio_buffer_[offset];
|
| rms[i] = sqrt(rms[i] / kNumSubframeSamples);
|
| }
|
|
|