亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? enc_lpc.c

?? Linux 影片撥放解碼 Video DVD
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
 *===================================================================
 *  3GPP AMR Wideband Floating-point Speech Codec
 *===================================================================
 */
#include <math.h>
#include <memory.h>

#include "typedef.h"
#include "enc_util.h"

#define ORDER        16          /* order of linear prediction filter   */
#define ISF_GAP      128         /* 50                                  */
#define M            16
#define M16k         20          /* Order of LP filter                  */
#define MP1          (M+1)
#define NC16k        (M16k / 2)
#define MU           10923       /* Prediction factor (1.0/3.0) in Q15  */
#define F_MU         (1.0 / 3.0) /* prediction factor                   */
#define N_SURV_MAX   4           /* 4 survivors max                     */

#ifndef PI
#define PI           3.141592654
#endif

/* isp_isf_conversion */
#define SCALE1  (6400.0/PI)

/* chebyshev */
#define  NO_ITER   4    /* no of iterations for tracking the root */
#define  NO_POINTS 100

#define SIZE_BK1        256
#define SIZE_BK2        256
#define SIZE_BK21       64
#define SIZE_BK22       128
#define SIZE_BK23       128
#define SIZE_BK24       32
#define SIZE_BK25       32
#define SIZE_BK21_36b   128
#define SIZE_BK22_36b   128
#define SIZE_BK23_36b   64
#define SIZE_BK_NOISE1  64
#define SIZE_BK_NOISE2  64
#define SIZE_BK_NOISE3  64
#define SIZE_BK_NOISE4  32
#define SIZE_BK_NOISE5  32

extern const Word16 E_ROM_mean_isf[];
extern const Word16 E_ROM_cos[];

extern const Float32 E_ROM_dico1_isf[];
extern const Float32 E_ROM_dico2_isf[];
extern const Float32 E_ROM_dico21_isf[];
extern const Float32 E_ROM_dico22_isf[];
extern const Float32 E_ROM_dico23_isf[];
extern const Float32 E_ROM_dico24_isf[];
extern const Float32 E_ROM_dico25_isf[];
extern const Float32 E_ROM_dico21_isf_36b[];
extern const Float32 E_ROM_dico22_isf_36b[];
extern const Float32 E_ROM_dico23_isf_36b[];
extern const Float32 E_ROM_f_mean_isf[];
extern const Float32 E_ROM_lag_window[];
extern const Float32 E_ROM_grid[];
extern const Float32 E_ROM_f_interpol_frac[];

/*
 * E_LPC_isf_reorder
 *
 * Parameters:
 *    isf          I/O: vector of isfs
 *    min_dist       I: quantized ISFs (in frequency domain)
 *    n              I: LPC order
 *
 * Function:
 *    To make sure that the  isfs are properly order and to keep a certain
 *    minimum distance between consecutive isfs.
 *
 * Returns:
 *    void
 */
static void E_LPC_isf_reorder(Word16 *isf, Word16 min_dist, Word16 n)
{

   Word32 i, isf_min;

   isf_min = min_dist;

   for (i = 0; i < n - 1; i++)
   {
      if (isf[i] < isf_min)
      {
         isf[i] = (Word16)isf_min;
      }

      isf_min = isf[i] + min_dist;
   }

   return;
}

/*
 * E_LPC_isp_pol_get
 *
 * Parameters:
 *    isp            I: Immitance spectral pairs (cosine domaine)
 *    f              O: the coefficients of F1 or F2
 *    n              I: no of coefficients (m/2)
 *    k16            I: 16k flag
 *
 * Function:
 *    Find the polynomial F1(z) or F2(z) from the ISPs.
 *    This is performed by expanding the product polynomials:
 *
 *    F1(z) =   product   ( 1 - 2 isp_i z^-1 + z^-2 )
 *            i=0,2,4,6,8
 *    F2(z) =   product   ( 1 - 2 isp_i z^-1 + z^-2 )
 *             i=1,3,5,7
 *
 *    where isp_i are the ISPs in the cosine domain.
 *
 * Returns:
 *    void
 */
static void E_LPC_isp_pol_get(Word16 *isp, Word32 *f, Word32 n, Word16 k16)
{
   Word32 i, j, t0, s1, s2;
   Word16 hi, lo;

   s1 = 8388608;
   s2 = 512;

   if(k16)
   {
      s1 >>= 2;
      s2 >>= 2;
   }

   /* All computation in Q23 */
   f[0] = s1;              /* f[0] = 1.0; in Q23         */
   f[1] = isp[0] * (-s2);  /* f[1] = -2.0*isp[0] in Q23  */
   f += 2;                 /* Advance f pointer          */
   isp += 2;               /* Advance isp pointer        */

   for(i = 2; i <= n; i++)
   {
      *f = f[ - 2];

      for(j = 1; j < i; j++, f--)
      {
         E_UTIL_l_extract(f[- 1], &hi, &lo);
         t0 = E_UTIL_mpy_32_16(hi, lo, *isp);   /* t0 = f[-1] * isp */
         t0 = (t0 << 1);
         *f = (*f - t0);         /* *f -= t0    */
         *f = (*f + f[ - 2]);    /* *f += f[-2] */
      }

      *f = *f - (*isp * s2);     /* *f -= isp << 8 */
      f += i;     /* Advance f pointer   */
      isp += 2;   /* Advance isp pointer */
   }

   return;
}

static void E_LPC_f_isp_pol_get(Float32 isp[], Float32 f[], Word32 n)
{
   Float32 b;
   Word32 i, j;

   f[0] = 1;
   b = (Float32)(-2.0 * *isp);
   f[1] = b;

   for (i = 2; i <= n; i++)
   {
      isp += 2;
      b = (Float32)(-2.0 * *isp);
      f[i] = (Float32)(b * f[i - 1] + 2.0 * f[i - 2]);

      for (j = i - 1; j > 1; j--)
      {
         f[j] += b * f[j - 1] + f[j - 2];
      }

      f[1] += b;
   }

   return;
}

/*
 * E_LPC_isp_a_conversion
 *
 * Parameters:
 *    isp            I: (Q15) Immittance spectral pairs
 *    a              O: (Q12) Predictor coefficients (order = M)
 *    m              I: order of LP filter
 *
 * Function:
 *    Convert ISPs to predictor coefficients a[]
 *
 * Returns:
 *    void
 */
void E_LPC_isp_a_conversion(Word16 isp[], Word16 a[], Word16 m)
{
   Word32 f1[NC16k + 1], f2[NC16k];
   Word32 i, j, nc, t0;
   Word16 hi, lo;

   nc = m >> 1;

   if (nc > 8)
   {
      E_LPC_isp_pol_get(&isp[0], f1, nc, 1);

      for (i = 0; i <= nc; i++)
      {
         f1[i] = (f1[i] << 2);
      }
   }
   else
   {
      E_LPC_isp_pol_get(&isp[0], f1, nc, 0);
   }

   if (nc > 8)
   {
      E_LPC_isp_pol_get(&isp[1], f2, nc - 1, 1);

      for (i = 0; i <= nc - 1; i++)
      {
         f2[i] = (f2[i] << 2);
      }
   }
   else
   {
      E_LPC_isp_pol_get(&isp[1], f2, nc - 1, 0);
   }

   /* Multiply F2(z) by (1 - z^-2)  */
   for (i = (nc - 1); i > 1; i--)
   {
      f2[i] = f2[i] - f2[i - 2];     /* f2[i] -= f2[i-2]; */
   }

   /*  Scale F1(z) by (1+isp[m-1])  and  F2(z) by (1-isp[m-1]) */
   for (i = 0; i < nc; i++)
   {
      /* f1[i] *= (1.0 + isp[M-1]); */

      E_UTIL_l_extract(f1[i], &hi, &lo);
      t0 = E_UTIL_mpy_32_16(hi, lo, isp[m - 1]);
      f1[i] = f1[i] + t0;

      /* f2[i] *= (1.0 - isp[M-1]); */

      E_UTIL_l_extract(f2[i], &hi, &lo);
      t0 = E_UTIL_mpy_32_16(hi, lo, isp[m - 1]);
      f2[i] = f2[i] - t0;
   }

   /*
    * A(z) = (F1(z)+F2(z))/2
    * F1(z) is symmetric and F2(z) is antisymmetric
    */

   /* a[0] = 1.0; */
   a[0] = 4096;

   for (i = 1, j = (m - 1); i < nc; i++, j--)
   {
      /* a[i] = 0.5*(f1[i] + f2[i]); */
      t0 = f1[i] + f2[i];                    /* f1[i] + f2[i]             */
      a[i] = (Word16)((t0 + 0x800) >> 12);   /* from Q23 to Q12 and * 0.5 */

      /* a[j] = 0.5*(f1[i] - f2[i]); */
      t0 = (f1[i] - f2[i]);                  /* f1[i] - f2[i]             */
      a[j] = (Word16)((t0 + 0x800) >> 12);   /* from Q23 to Q12 and * 0.5 */

   }

   /* a[NC] = 0.5*f1[NC]*(1.0 + isp[M-1]); */
   E_UTIL_l_extract(f1[nc], &hi, &lo);
   t0 = E_UTIL_mpy_32_16(hi, lo, isp[m - 1]);
   t0 = (f1[nc] + t0);
   a[nc] = (Word16)((t0 + 0x800) >> 12);    /* from Q23 to Q12 and * 0.5 */

   /* a[m] = isp[m-1]; */
   a[m] = (Word16)((isp[m - 1] + 0x4) >> 3); /* from Q15 to Q12          */

   return;
}

void E_LPC_f_isp_a_conversion(Float32 *isp, Float32 *a, Word32 m)
{
   Float32 f1[(M16k / 2) + 1], f2[M16k / 2];
   Word32 i, j, nc;

   nc = m / 2;

   /*
    *  Find the polynomials F1(z) and F2(z)
    */

   E_LPC_f_isp_pol_get(&isp[0], f1, nc);
   E_LPC_f_isp_pol_get(&isp[1], f2, nc-1);

   /*
    *  Multiply F2(z) by (1 - z^-2)
    */
   for (i = (nc - 1); i > 1; i--)
   {
      f2[i] -= f2[i - 2];
   }

   /*
    *  Scale F1(z) by (1+isp[m-1])  and  F2(z) by (1-isp[m-1])
    */

   for (i = 0; i < nc; i++)
   {
      f1[i] *= (Float32)(1.0 + isp[m - 1]);
      f2[i] *= (Float32)(1.0 - isp[m - 1]);
   }

   /*
    *  A(z) = (F1(z)+F2(z))/2
    *  F1(z) is symmetric and F2(z) is antisymmetric
    */

   a[0] = 1.0;

   for (i = 1, j = m - 1; i < nc; i++, j--)
   {
      a[i] = (Float32)(0.5 * (f1[i] + f2[i]));
      a[j] = (Float32)(0.5 * (f1[i] - f2[i]));
   }

   a[nc] = (Float32)(0.5 * f1[nc] * (1.0 + isp[m - 1]));
   a[m] = isp[m - 1];

   return;
}

/*
 * E_LPC_int_isp_find
 *
 * Parameters:
 *    isp_old           I: isps from past frame
 *    isp_new           I: isps from present frame
 *    frac              I: (Q15) fraction for 3 first subfr
 *    Az                O: LP coefficients in 4 subframes
 *
 * Function:
 *    Find the Word32erpolated ISP parameters for all subframes.
 *
 * Returns:
 *    void
 */
void E_LPC_int_isp_find(Word16 isp_old[], Word16 isp_new[],
                        const Word16 frac[], Word16 Az[])
{
   Word32 i, k, fac_old, fac_new, tmp;
   Word16 isp[M];

   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++)
      {
         tmp = isp_old[i] * fac_old;
         tmp += (isp_new[i] * fac_new);
         isp[i] = (Word16)((tmp + 0x4000) >> 15);
      }

      E_LPC_isp_a_conversion(isp, Az, M);
      Az += MP1;
   }

   /* 4th subframe: isp_new (frac=1.0) */
   E_LPC_isp_a_conversion(isp_new, Az, M);

   return;
}

void E_LPC_f_int_isp_find(Float32 isp_old[], Float32 isp_new[], Float32 a[],
                          Word32 nb_subfr, Word32 m)
{
  Float32 isp[M], fnew, fold;
  Float32 *p_a;
  Word32 i, k;

  p_a = a;

  for (k = 0; k < nb_subfr; k++)
  {
    fnew = E_ROM_f_interpol_frac[k];
    fold = (Float32)(1.0 - fnew);

    for (i = 0; i < m; i++)
    {
      isp[i] = isp_old[i] * fold + isp_new[i] * fnew;
    }

    E_LPC_f_isp_a_conversion(isp, p_a, m);
    p_a += (m + 1);
  }

  return;
}

/*
 * E_LPC_a_weight
 *
 * Parameters:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久精品国产片果冻| 久久久久国产精品麻豆ai换脸| 粉嫩av一区二区三区粉嫩| 麻豆成人综合网| 日韩成人一区二区| 美国三级日本三级久久99| 青青草国产精品97视觉盛宴| 免费欧美在线视频| 国模冰冰炮一区二区| 国产精一品亚洲二区在线视频| 国产一区中文字幕| 成人av在线网站| 风流少妇一区二区| 日本精品一级二级| 欧美性一级生活| 欧美一区二区久久| 久久久不卡网国产精品一区| 国产精品灌醉下药二区| 亚洲欧洲综合另类在线| 亚洲gay无套男同| 久久精品99久久久| 成人av中文字幕| 在线免费观看视频一区| 91麻豆精品91久久久久同性| 精品1区2区在线观看| 国产精品久久久久三级| 亚洲国产成人av| 国产自产视频一区二区三区| 91在线观看污| 91精品国产福利| 中文在线一区二区| 亚洲成人综合网站| 国产超碰在线一区| 欧美日韩在线三级| 国产日韩欧美亚洲| 亚洲一区二区三区在线播放| 久久国产尿小便嘘嘘尿| 色网综合在线观看| 久久伊人中文字幕| 亚洲第一久久影院| 成人av网址在线| 日韩美女主播在线视频一区二区三区| 国产三级欧美三级日产三级99| 一区二区三区欧美| 国产91精品在线观看| 在线成人av影院| 国产精品久久午夜夜伦鲁鲁| 麻豆精品精品国产自在97香蕉| bt7086福利一区国产| 日韩一区二区精品葵司在线| 亚洲精品乱码久久久久久黑人| 久久精品99国产精品| 欧美日韩中文国产| 国产精品久久久久久妇女6080| 日本最新不卡在线| 精品视频1区2区3区| 亚洲女性喷水在线观看一区| 国产成人精品www牛牛影视| 91麻豆精品国产91久久久更新时间| 亚洲天堂精品在线观看| 国产成人免费av在线| 日韩一区二区三免费高清| 亚洲综合激情小说| 色猫猫国产区一区二在线视频| 日本一区二区三区视频视频| 久草热8精品视频在线观看| 欧美精选午夜久久久乱码6080| 亚洲人成在线观看一区二区| 成人av电影在线| 国产精品久久久久久久午夜片 | 成人av网站在线观看免费| 欧美电影免费观看高清完整版在线| 午夜影院久久久| 欧美日韩一级黄| 亚洲成人午夜影院| 欧美日本在线观看| 丝袜亚洲另类欧美| 91精品欧美久久久久久动漫| 婷婷一区二区三区| 欧美一区二区三区在线视频| 蜜臀av国产精品久久久久| 日韩一级二级三级| 精久久久久久久久久久| 久久久国产午夜精品| 国产精一区二区三区| 日韩一区在线免费观看| 在线观看亚洲精品视频| 午夜精品久久久| 在线综合视频播放| 国产综合久久久久影院| 日本一区二区三区在线观看| 色妹子一区二区| 午夜精品久久久久久久久久久| 欧美一区二区网站| 国产精品18久久久久| 国产精品视频免费| 91久久精品午夜一区二区| 日韩成人精品在线| 国产精品视频观看| 欧美日韩午夜精品| 国产一区二区在线视频| 亚洲丝袜另类动漫二区| 欧美狂野另类xxxxoooo| 国产盗摄女厕一区二区三区| 一区二区三区不卡在线观看 | 欧美韩国日本一区| 欧洲激情一区二区| 激情综合亚洲精品| 日韩美女精品在线| 日韩欧美二区三区| 91浏览器在线视频| 日韩黄色小视频| 国产精品白丝在线| 日韩免费在线观看| 色综合欧美在线| 久久99久久99小草精品免视看| 国产精品美女一区二区三区| 欧美日韩不卡一区二区| 高清成人免费视频| 青青国产91久久久久久| 一区二区三区四区中文字幕| 久久久久久一二三区| 欧美吞精做爰啪啪高潮| 成人黄色综合网站| 激情偷乱视频一区二区三区| 亚洲一区在线观看免费| 中文字幕乱码一区二区免费| 欧美挠脚心视频网站| 国产69精品久久久久777| 日韩在线卡一卡二| 亚洲精品国产高清久久伦理二区| 久久一日本道色综合| 91麻豆精品国产91久久久| 欧美中文字幕一区二区三区亚洲 | 亚洲人快播电影网| 国产情人综合久久777777| 欧美一区二区三区爱爱| 色偷偷久久一区二区三区| 成人性生交大片免费看在线播放| 日韩电影网1区2区| 日韩电影免费在线看| 亚洲成精国产精品女| 一区二区日韩av| 亚洲男人的天堂在线aⅴ视频| 久久精品人人爽人人爽| 精品免费国产二区三区| 欧美一区欧美二区| 日韩美女一区二区三区四区| 欧美一级理论片| 日韩免费观看高清完整版在线观看| 在线不卡的av| 日韩一区二区视频| 欧美变态口味重另类| 久久综合色8888| 国产情人综合久久777777| 欧美国产日本视频| 国产精品国产三级国产普通话蜜臀 | 国内偷窥港台综合视频在线播放| 婷婷久久综合九色国产成人| 亚洲高清免费视频| 日本特黄久久久高潮| 美国毛片一区二区三区| 久久综合综合久久综合| 国内精品视频一区二区三区八戒| 国内外成人在线| 成人一道本在线| 91成人在线免费观看| 欧美丰满高潮xxxx喷水动漫| 日韩欧美一级特黄在线播放| 日韩视频免费直播| 国产丝袜在线精品| 日韩美女久久久| 午夜私人影院久久久久| 免费成人在线网站| 国产精品一区一区三区| 国产精品白丝jk黑袜喷水| 成人国产亚洲欧美成人综合网 | 久久人人97超碰com| 中文字幕在线观看一区| 亚洲第一久久影院| 国产精品系列在线观看| 欧美专区亚洲专区| 国产亚洲精品7777| 怡红院av一区二区三区| 久久国产精品第一页| eeuss影院一区二区三区| 欧美精品粉嫩高潮一区二区| 久久欧美一区二区| 亚洲一区视频在线| 狠狠色伊人亚洲综合成人| 91浏览器在线视频| 久久亚洲二区三区| 欧美性欧美巨大黑白大战| 精品国产自在久精品国产| 中文字幕视频一区| 麻豆极品一区二区三区| 色一区在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲乱码中文字幕综合| 国产原创一区二区三区|