From 16005b77839e8d2af95405e6434a7fbdbf4b5851 Mon Sep 17 00:00:00 2001 From: Alex Loiko Date: Wed, 28 Jun 2017 13:05:39 +0200 Subject: [PATCH] Remove potential left shift of negative value in WebRtcSpl_AnalysisQMF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WebRtcSpl_AnalysisQMF takes raw (user) audio input represented by int16_t samples. The samples are converted to Q10 with the WEBRTC_SPL_LSHIFT_W32 macro. The macro is implemeted as a left shift. This CL replaces the shift with a multiplication, similar to https://codereview.webrtc.org/2253943002 TBR=kwiberg@webrtc.org Bug: chromium:735773 Change-Id: Ic4e63269390e82b86f304e5aa1b5e2dc22122bcb Reviewed-on: https://chromium-review.googlesource.com/552124 Commit-Queue: Alex Loiko Reviewed-by: Alessio Bazzica Reviewed-by: Per Ã…hgren Cr-Commit-Position: refs/heads/master@{#19068} --- webrtc/common_audio/signal_processing/splitting_filter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webrtc/common_audio/signal_processing/splitting_filter.c b/webrtc/common_audio/signal_processing/splitting_filter.c index a9484f36d2..4a179a813e 100644 --- a/webrtc/common_audio/signal_processing/splitting_filter.c +++ b/webrtc/common_audio/signal_processing/splitting_filter.c @@ -141,8 +141,8 @@ void WebRtcSpl_AnalysisQMF(const int16_t* in_data, size_t in_data_length, // Split even and odd samples. Also shift them to Q10. for (i = 0, k = 0; i < band_length; i++, k += 2) { - half_in2[i] = WEBRTC_SPL_LSHIFT_W32((int32_t)in_data[k], 10); - half_in1[i] = WEBRTC_SPL_LSHIFT_W32((int32_t)in_data[k + 1], 10); + half_in2[i] = ((int32_t)in_data[k]) * (1 << 10); + half_in1[i] = ((int32_t)in_data[k + 1]) * (1 << 10); } // All pass filter even and odd samples, independently.