/* ** Copyright 2003-2010, VisualOn, Inc. ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ /*********************************************************************** * File: int_lpc.c * * * * Description:Interpolation of the LP parameters in 4 subframes. * * * ************************************************************************/ #include "typedef.h" #include "basic_op.h" #include "cnst.h" #include "acelp.h" #define MP1 (M+1) void Int_isp( Word16 isp_old[], /* input : isps from past frame */ Word16 isp_new[], /* input : isps from present frame */ Word16 frac[], /* input : fraction for 3 first subfr (Q15) */ Word16 Az[] /* output: LP coefficients in 4 subframes */ ) { Word32 i, k; Word16 fac_old, fac_new; Word16 isp[M]; Word32 L_tmp; for (k = 0; k < 3; k++) { fac_new = frac[k]; fac_old = (32767 - fac_new) + 1; /* 1.0 - fac_new */ for (i = 0; i < M; i++) { L_tmp = (isp_old[i] * fac_old)<<1; L_tmp += (isp_new[i] * fac_new)<<1; isp[i] = (L_tmp + 0x8000)>>16; } Isp_Az(isp, Az, M, 0); Az += MP1; } /* 4th subframe: isp_new (frac=1.0) */ Isp_Az(isp_new, Az, M, 0); return; }