1/* 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11/****************************************************************** 12 13 iLBC Speech Coder ANSI-C Source Code 14 15 WebRtcIlbcfix_NearestNeighbor.c 16 17******************************************************************/ 18 19#include "defines.h" 20 21/*----------------------------------------------------------------* 22 * Find index in array such that the array element with said 23 * index is the element of said array closest to "value" 24 * according to the squared-error criterion 25 *---------------------------------------------------------------*/ 26 27void WebRtcIlbcfix_NearestNeighbor( 28 int16_t *index, /* (o) index of array element closest to value */ 29 int16_t *array, /* (i) data array (Q2) */ 30 int16_t value, /* (i) value (Q2) */ 31 int16_t arlength /* (i) dimension of data array (==8) */ 32 ){ 33 int i; 34 int16_t diff; 35 /* Stack based */ 36 int32_t crit[8]; 37 38 /* Calculate square distance */ 39 for(i=0;i<arlength;i++){ 40 diff=array[i]-value; 41 crit[i]=WEBRTC_SPL_MUL_16_16(diff, diff); 42 } 43 44 /* Find the minimum square distance */ 45 *index=WebRtcSpl_MinIndexW32(crit, (int16_t)arlength); 46} 47