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_LsfInterpolate2PloyEnc.c
16 
17 ******************************************************************/
18 
19 #include "modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_enc.h"
20 
21 #include "modules/audio_coding/codecs/ilbc/defines.h"
22 #include "modules/audio_coding/codecs/ilbc/interpolate.h"
23 #include "modules/audio_coding/codecs/ilbc/lsf_to_poly.h"
24 
25 /*----------------------------------------------------------------*
26  *  lsf interpolator and conversion from lsf to a coefficients
27  *  (subrutine to SimpleInterpolateLSF)
28  *---------------------------------------------------------------*/
29 
WebRtcIlbcfix_LsfInterpolate2PloyEnc(int16_t * a,int16_t * lsf1,int16_t * lsf2,int16_t coef,int16_t length)30 void WebRtcIlbcfix_LsfInterpolate2PloyEnc(
31     int16_t *a,  /* (o) lpc coefficients Q12 */
32     int16_t *lsf1, /* (i) first set of lsf coefficients Q13 */
33     int16_t *lsf2, /* (i) second set of lsf coefficients Q13 */
34     int16_t coef, /* (i) weighting coefficient to use between
35                            lsf1 and lsf2 Q14 */
36     int16_t length /* (i) length of coefficient vectors */
37                                           ) {
38   /* Stack based */
39   int16_t lsftmp[LPC_FILTERORDER];
40 
41   /* interpolate LSF */
42   WebRtcIlbcfix_Interpolate(lsftmp, lsf1, lsf2, coef, length);
43 
44   /* Compute the filter coefficients from the LSF */
45   WebRtcIlbcfix_Lsf2Poly(a, lsftmp);
46 
47   return;
48 }
49