blob: 3d8b8cbf9acf58ee9a2776e7281e02ff7387cb37 [file] [log] [blame]
/*
** 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;
}