| /* |
| * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| /* |
| * Calculate best overlap fit according to distortion measure. |
| */ |
| |
| #include "dsp_helpfunctions.h" |
| |
| #include "signal_processing_library.h" |
| |
| WebRtc_Word16 WebRtcNetEQ_MinDistortion(const WebRtc_Word16 *pw16_data, |
| WebRtc_Word16 w16_minLag, WebRtc_Word16 w16_maxLag, |
| WebRtc_Word16 len, WebRtc_Word32 *pw16_dist) |
| { |
| int i, j; |
| const WebRtc_Word16 *pw16_data1; |
| const WebRtc_Word16 *pw16_data2; |
| WebRtc_Word32 w32_diff; |
| WebRtc_Word32 w32_sumdiff; |
| WebRtc_Word16 bestIndex = -1; |
| WebRtc_Word32 minDist = WEBRTC_SPL_WORD32_MAX; |
| |
| for (i = w16_minLag; i <= w16_maxLag; i++) |
| { |
| w32_sumdiff = 0; |
| pw16_data1 = pw16_data; |
| pw16_data2 = pw16_data - i; |
| |
| for (j = 0; j < len; j++) |
| { |
| w32_diff = pw16_data1[j] - pw16_data2[j]; |
| w32_sumdiff += WEBRTC_SPL_ABS_W32(w32_diff); |
| } |
| |
| /* Compare with previous minimum */ |
| if (w32_sumdiff < minDist) |
| { |
| minDist = w32_sumdiff; |
| bestIndex = i; |
| } |
| } |
| |
| *pw16_dist = minDist; |
| |
| return bestIndex; |
| } |
| |