Index: webrtc/modules/audio_coding/neteq/time_stretch.cc |
diff --git a/webrtc/modules/audio_coding/neteq/time_stretch.cc b/webrtc/modules/audio_coding/neteq/time_stretch.cc |
index 5577cd2ecbbd80886e7cda49a9d050417bc7e407..6ae81e6e9662ed4a09a0c1917b03d2143581ced7 100644 |
--- a/webrtc/modules/audio_coding/neteq/time_stretch.cc |
+++ b/webrtc/modules/audio_coding/neteq/time_stretch.cc |
@@ -12,6 +12,7 @@ |
#include <algorithm> // min, max |
+#include "webrtc/base/safe_conversions.h" |
#include "webrtc/base/scoped_ptr.h" |
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" |
#include "webrtc/modules/audio_coding/neteq/background_noise.h" |
@@ -23,9 +24,10 @@ TimeStretch::ReturnCodes TimeStretch::Process(const int16_t* input, |
size_t input_len, |
bool fast_mode, |
AudioMultiVector* output, |
- int16_t* length_change_samples) { |
+ size_t* length_change_samples) { |
// Pre-calculate common multiplication with |fs_mult_|. |
- int fs_mult_120 = fs_mult_ * 120; // Corresponds to 15 ms. |
+ size_t fs_mult_120 = |
+ static_cast<size_t>(fs_mult_ * 120); // Corresponds to 15 ms. |
const int16_t* signal; |
rtc::scoped_ptr<int16_t[]> signal_array; |
@@ -48,8 +50,7 @@ TimeStretch::ReturnCodes TimeStretch::Process(const int16_t* input, |
} |
// Find maximum absolute value of input signal. |
- max_input_value_ = WebRtcSpl_MaxAbsValueW16(signal, |
- static_cast<int>(signal_len)); |
+ max_input_value_ = WebRtcSpl_MaxAbsValueW16(signal, signal_len); |
// Downsample to 4 kHz sample rate and calculate auto-correlation. |
DspHelper::DownsampleTo4kHz(signal, signal_len, kDownsampledLen, |
@@ -58,13 +59,12 @@ TimeStretch::ReturnCodes TimeStretch::Process(const int16_t* input, |
AutoCorrelation(); |
// Find the strongest correlation peak. |
- static const int kNumPeaks = 1; |
- int peak_index; |
+ static const size_t kNumPeaks = 1; |
+ size_t peak_index; |
int16_t peak_value; |
DspHelper::PeakDetection(auto_correlation_, kCorrelationLen, kNumPeaks, |
fs_mult_, &peak_index, &peak_value); |
// Assert that |peak_index| stays within boundaries. |
- assert(peak_index >= 0); |
assert(peak_index <= (2 * kCorrelationLen - 1) * fs_mult_); |
// Compensate peak_index for displaced starting position. The displacement |
@@ -73,13 +73,13 @@ TimeStretch::ReturnCodes TimeStretch::Process(const int16_t* input, |
// multiplication by fs_mult_ * 2. |
peak_index += kMinLag * fs_mult_ * 2; |
// Assert that |peak_index| stays within boundaries. |
- assert(peak_index >= 20 * fs_mult_); |
+ assert(peak_index >= static_cast<size_t>(20 * fs_mult_)); |
assert(peak_index <= 20 * fs_mult_ + (2 * kCorrelationLen - 1) * fs_mult_); |
// Calculate scaling to ensure that |peak_index| samples can be square-summed |
// without overflowing. |
int scaling = 31 - WebRtcSpl_NormW32(max_input_value_ * max_input_value_) - |
- WebRtcSpl_NormW32(peak_index); |
+ WebRtcSpl_NormW32(static_cast<int32_t>(peak_index)); |
scaling = std::max(0, scaling); |
// |vec1| starts at 15 ms minus one pitch period. |
@@ -177,7 +177,7 @@ void TimeStretch::AutoCorrelation() { |
} |
bool TimeStretch::SpeechDetection(int32_t vec1_energy, int32_t vec2_energy, |
- int peak_index, int scaling) const { |
+ size_t peak_index, int scaling) const { |
// Check if the signal seems to be active speech or not (simple VAD). |
// If (vec1_energy + vec2_energy) / (2 * peak_index) <= |
// 8 * background_noise_energy, then we say that the signal contains no |
@@ -197,7 +197,8 @@ bool TimeStretch::SpeechDetection(int32_t vec1_energy, int32_t vec2_energy, |
int right_scale = 16 - WebRtcSpl_NormW32(right_side); |
right_scale = std::max(0, right_scale); |
left_side = left_side >> right_scale; |
- right_side = peak_index * (right_side >> right_scale); |
+ right_side = |
+ rtc::checked_cast<int32_t>(peak_index) * (right_side >> right_scale); |
// Scale |left_side| properly before comparing with |right_side|. |
// (|scaling| is the scale factor before energy calculation, thus the scale |