PRED_LT3.C
上传用户:meifeng08
上传日期:2013-06-18
资源大小:5304k
文件大小:2k
源码类别:

语音压缩

开发平台:

C/C++

  1. /* Version 3.3    Last modified: December 26, 1995 */
  2. /*-------------------------------------------------------------------*
  3.  * Function  Pred_lt_3()                                             *
  4.  *           ~~~~~~~~~~~                                             *
  5.  *-------------------------------------------------------------------*
  6.  * Compute the result of long term prediction with fractional        *
  7.  * interpolation of resolution 1/3.                                  *
  8.  *                                                                   *
  9.  * On return exc[0..L_subfr-1] contains the interpolated signal      *
  10.  *   (adaptive codebook excitation)                                  *
  11.  *-------------------------------------------------------------------*/
  12. #include "typedef.h"
  13. #include "basic_op.h"
  14. #include "ld8k.h"
  15. #include "tab_ld8k.h"
  16. void Pred_lt_3(
  17.   Word16   exc[],       /* in/out: excitation buffer */
  18.   Word16   T0,          /* input : integer pitch lag */
  19.   Word16   frac,        /* input : fraction of lag   */
  20.   Word16   L_subfr      /* input : subframe size     */
  21. )
  22. {
  23.   Word16   i, j, k;
  24.   Word16   *x0, *x1, *x2, *c1, *c2;
  25.   Word32  s;
  26.   x0 = &exc[-T0];
  27.   frac = negate(frac);
  28.   if (frac < 0)
  29.   {
  30.     frac = add(frac, UP_SAMP);
  31.     x0--;
  32.   }
  33.   for (j=0; j<L_subfr; j++)
  34.   {
  35.     x1 = x0++;
  36.     x2 = x0;
  37.     c1 = &inter_3l[frac];
  38.     c2 = &inter_3l[sub(UP_SAMP,frac)];
  39.     s = 0;
  40.     for(i=0, k=0; i< L_INTER10; i++, k+=UP_SAMP)
  41.     {
  42.       s = L_mac(s, x1[-i], c1[k]);
  43.       s = L_mac(s, x2[i],  c2[k]);
  44.     }
  45.     exc[j] = round(s);
  46.   }
  47.   return;
  48. }