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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lpcfunc.c

?? G.729 coder and decoder, ANSI C, for windows, unix, DSP, etc.
?? C
字號:
/*
   ITU-T G.729 Speech Coder ANSI-C Source Code
   Version 3.3    Last modified: December 26, 1995

   Copyright (c) 1996,
   AT&T, France Telecom, NTT, Universite de Sherbrooke, Lucent Technologies
   All rights reserved.
*/

/*-------------------------------------------------------------*
 *  Procedure Lsp_Az:                                          *
 *            ~~~~~~                                           *
 *   Compute the LPC coefficients from lsp (order=10)          *
 *-------------------------------------------------------------*/

#include "typedef.h"
#include "basic_op.h"
#include "oper_32b.h"

#include "ld8k.h"
#include "tab_ld8k.h"

/* local function */

static void Get_lsp_pol(Word16 *lsp, Word32 *f);

void Lsp_Az(
  Word16 lsp[],    /* (i) Q15 : line spectral frequencies            */
  Word16 a[]       /* (o) Q12 : predictor coefficients (order = 10)  */
)
{
  Word16 i, j;
  Word32 f1[6], f2[6];
  Word32 t0;

  Get_lsp_pol(&lsp[0],f1);
  Get_lsp_pol(&lsp[1],f2);

  for (i = 5; i > 0; i--)
  {
    f1[i] = L_add(f1[i], f1[i-1]);        /* f1[i] += f1[i-1]; */
    f2[i] = L_sub(f2[i], f2[i-1]);        /* f2[i] -= f2[i-1]; */
  }

  a[0] = 4096;
  for (i = 1, j = 10; i <= 5; i++, j--)
  {
    t0   = L_add(f1[i], f2[i]);                 /* f1[i] + f2[i]             */
    a[i] = extract_l( L_shr_r(t0, 13) );        /* from Q24 to Q12 and * 0.5 */

    t0   = L_sub(f1[i], f2[i]);                 /* f1[i] - f2[i]             */
    a[j] = extract_l( L_shr_r(t0, 13) );        /* from Q24 to Q12 and * 0.5 */

  }

  return;
}

/*-----------------------------------------------------------*
 * procedure Get_lsp_pol:                                    *
 *           ~~~~~~~~~~~                                     *
 *   Find the polynomial F1(z) or F2(z) from the LSPs        *
 *-----------------------------------------------------------*
 *                                                           *
 * Parameters:                                               *
 *  lsp[]   : line spectral freq. (cosine domain)    in Q15  *
 *  f[]     : the coefficients of F1 or F2           in Q24  *
 *-----------------------------------------------------------*/

static void Get_lsp_pol(Word16 *lsp, Word32 *f)
{
  Word16 i,j, hi, lo;
  Word32 t0;

   /* All computation in Q24 */

   *f = L_mult(4096, 2048);             /* f[0] = 1.0;             in Q24  */
   f++;
   *f = L_msu((Word32)0, *lsp, 512);    /* f[1] =  -2.0 * lsp[0];  in Q24  */

   f++;
   lsp += 2;                            /* Advance lsp pointer             */

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

     for(j=1; j<i; j++, f--)
     {
       L_Extract(f[-1] ,&hi, &lo);
       t0 = Mpy_32_16(hi, lo, *lsp);         /* t0 = f[-1] * lsp    */
       t0 = L_shl(t0, 1);
       *f = L_add(*f, f[-2]);                /* *f += f[-2]         */
       *f = L_sub(*f, t0);                   /* *f -= t0            */
     }
     *f   = L_msu(*f, *lsp, 512);            /* *f -= lsp<<9        */
     f   += i;                               /* Advance f pointer   */
     lsp += 2;                               /* Advance lsp pointer */
   }

   return;
}

/*___________________________________________________________________________
 |                                                                           |
 |   Functions : Lsp_lsf and Lsf_lsp                                         |
 |                                                                           |
 |      Lsp_lsf   Transformation lsp to lsf                                  |
 |      Lsf_lsp   Transformation lsf to lsp                                  |
 |---------------------------------------------------------------------------|
 |  Algorithm:                                                               |
 |                                                                           |
 |   The transformation from lsp[i] to lsf[i] and lsf[i] to lsp[i] are       |
 |   approximated by a look-up table and interpolation.                      |
 |___________________________________________________________________________|
*/


void Lsf_lsp(
  Word16 lsf[],    /* (i) Q15 : lsf[m] normalized (range: 0.0<=val<=0.5) */
  Word16 lsp[],    /* (o) Q15 : lsp[m] (range: -1<=val<1)                */
  Word16 m         /* (i)     : LPC order                                */
)
{
  Word16 i, ind, offset;
  Word32 L_tmp;

  for(i=0; i<m; i++)
  {
    ind    = shr(lsf[i], 8);               /* ind    = b8-b15 of lsf[i] */
    offset = lsf[i] & (Word16)0x00ff;      /* offset = b0-b7  of lsf[i] */

    /* lsp[i] = table[ind]+ ((table[ind+1]-table[ind])*offset) / 256 */

    L_tmp   = L_mult(sub(table[ind+1], table[ind]), offset);
    lsp[i] = add(table[ind], extract_l(L_shr(L_tmp, 9)));
  }
  return;
}


void Lsp_lsf(
  Word16 lsp[],    /* (i) Q15 : lsp[m] (range: -1<=val<1)                */
  Word16 lsf[],    /* (o) Q15 : lsf[m] normalized (range: 0.0<=val<=0.5) */
  Word16 m         /* (i)     : LPC order                                */
)
{
  Word16 i, ind, tmp;
  Word32 L_tmp;

  ind = 63;    /* begin at end of table -1 */

  for(i= m-(Word16)1; i >= 0; i--)
  {
    /* find value in table that is just greater than lsp[i] */
    while( sub(table[ind], lsp[i]) < 0 )
    {
      ind = sub(ind,1);
    }

    /* acos(lsp[i])= ind*256 + ( ( lsp[i]-table[ind] ) * slope[ind] )/4096 */

    L_tmp  = L_mult( sub(lsp[i], table[ind]) , slope[ind] );
    tmp = round(L_shl(L_tmp, 3));     /*(lsp[i]-table[ind])*slope[ind])>>12*/
    lsf[i] = add(tmp, shl(ind, 8));
  }
  return;
}

/*___________________________________________________________________________
 |                                                                           |
 |   Functions : Lsp_lsf and Lsf_lsp                                         |
 |                                                                           |
 |      Lsp_lsf   Transformation lsp to lsf                                  |
 |      Lsf_lsp   Transformation lsf to lsp                                  |
 |---------------------------------------------------------------------------|
 |  Algorithm:                                                               |
 |                                                                           |
 |   The transformation from lsp[i] to lsf[i] and lsf[i] to lsp[i] are       |
 |   approximated by a look-up table and interpolation.                      |
 |___________________________________________________________________________|
*/

void Lsf_lsp2(
  Word16 lsf[],    /* (i) Q13 : lsf[m] (range: 0.0<=val<PI) */
  Word16 lsp[],    /* (o) Q15 : lsp[m] (range: -1<=val<1)   */
  Word16 m         /* (i)     : LPC order                   */
)
{
  Word16 i, ind;
  Word16 offset;   /* in Q8 */
  Word16 freq;     /* normalized frequency in Q15 */
  Word32 L_tmp;

  for(i=0; i<m; i++)
  {
/*    freq = abs_s(freq);*/
    freq = mult(lsf[i], 20861);          /* 20861: 1.0/(2.0*PI) in Q17 */
    ind    = shr(freq, 8);               /* ind    = b8-b15 of freq */
    offset = freq & (Word16)0x00ff;      /* offset = b0-b7  of freq */

    if ( sub(ind, 63)>0 ){
      ind = 63;                 /* 0 <= ind <= 63 */
    }

    /* lsp[i] = table2[ind]+ (slope_cos[ind]*offset >> 12) */

    L_tmp   = L_mult(slope_cos[ind], offset);   /* L_tmp in Q28 */
    lsp[i] = add(table2[ind], extract_l(L_shr(L_tmp, 13)));

  }
  return;
}



void Lsp_lsf2(
  Word16 lsp[],    /* (i) Q15 : lsp[m] (range: -1<=val<1)   */
  Word16 lsf[],    /* (o) Q13 : lsf[m] (range: 0.0<=val<PI) */
  Word16 m         /* (i)     : LPC order                   */
)
{
  Word16 i, ind;
  Word16 offset;   /* in Q15 */
  Word16 freq;     /* normalized frequency in Q16 */
  Word32 L_tmp;

  ind = 63;           /* begin at end of table2 -1 */

  for(i= m-(Word16)1; i >= 0; i--)
  {
    /* find value in table2 that is just greater than lsp[i] */
    while( sub(table2[ind], lsp[i]) < 0 )
    {
      ind = sub(ind,1);
      if ( ind <= 0 )
        break;
    }

    offset = sub(lsp[i], table2[ind]);

    /* acos(lsp[i])= ind*512 + (slope_acos[ind]*offset >> 11) */

    L_tmp  = L_mult( slope_acos[ind], offset );   /* L_tmp in Q28 */
    freq = add(shl(ind, 9), extract_l(L_shr(L_tmp, 12)));
    lsf[i] = mult(freq, 25736);           /* 25736: 2.0*PI in Q12 */

  }
  return;
}

/*-------------------------------------------------------------*
 *  procedure Weight_Az                                        *
 *            ~~~~~~~~~                                        *
 * Weighting of LPC coefficients.                              *
 *   ap[i]  =  a[i] * (gamma ** i)                             *
 *                                                             *
 *-------------------------------------------------------------*/


void Weight_Az(
  Word16 a[],      /* (i) Q12 : a[m+1]  LPC coefficients             */
  Word16 gamma,    /* (i) Q15 : Spectral expansion factor.           */
  Word16 m,        /* (i)     : LPC order.                           */
  Word16 ap[]      /* (o) Q12 : Spectral expanded LPC coefficients   */
)
{
  Word16 i, fac;

  ap[0] = a[0];
  fac   = gamma;
  for(i=1; i<m; i++)
  {
    ap[i] = round( L_mult(a[i], fac) );
    fac   = round( L_mult(fac, gamma) );
  }
  ap[m] = round( L_mult(a[m], fac) );

  return;
}
/*----------------------------------------------------------------------*
 * Function Int_qlpc() and Int_lpc()                                    *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                    *
 * Interpolation of the LPC parameters.                                 *
 *----------------------------------------------------------------------*/

/* Interpolation of the quantized LSP's */

void Int_qlpc(
 Word16 lsp_old[], /* input : LSP vector of past frame              */
 Word16 lsp_new[], /* input : LSP vector of present frame           */
 Word16 Az[]       /* output: interpolated Az() for the 2 subframes */
)
{
  Word16 i;
  Word16 lsp[M];

  /*  lsp[i] = lsp_new[i] * 0.5 + lsp_old[i] * 0.5 */

  for (i = 0; i < M; i++) {
    lsp[i] = add(shr(lsp_new[i], 1), shr(lsp_old[i], 1));

  }

  Lsp_Az(lsp, Az);              /* Subframe 1 */

  Lsp_Az(lsp_new, &Az[MP1]);    /* Subframe 2 */

  return;
}

/*----------------------------------------------------------------------*
 * Function Int_lpc()                                                   *
 * ~~~~~~~~~~~~~~~~~~                                                   *
 * Interpolation of the unquantized LPC parameters.                     *
 * Same as the previous function but we do not recompute Az() for       *
 * subframe 2  because it is already available.                         *
 * We also compute the interpolate LSF (frequency domain).               *
 *----------------------------------------------------------------------*/

void Int_lpc(
 Word16 lsp_old[], /* input : LSP vector of past frame              */
 Word16 lsp_new[], /* input : LSP vector of present frame           */
 Word16 lsf_int[], /* output: interpolated lsf coefficients         */
 Word16 lsf_new[],
 Word16 Az[]       /* output: interpolated Az() for the 2 subframes */
)
{
  Word16 i;
  Word16 lsp[M];

  /*  lsp[i] = lsp_new[i] * 0.5 + lsp_old[i] * 0.5 */

  for (i = 0; i < M; i++) {
    lsp[i] = add(shr(lsp_new[i], 1), shr(lsp_old[i], 1));

  }

  Lsp_Az(lsp, Az);

  Lsp_lsf(lsp, lsf_int, M);      /* transformation from LSP to LSF (freq.domain) */
  Lsp_lsf(lsp_new, lsf_new, M);  /* transformation from LSP to LSF (freq.domain) */

  return;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品无圣光一区二区| 欧美一区二区三区日韩视频| 亚洲国产美女搞黄色| 久久先锋资源网| 欧洲一区在线观看| 国产成人免费视频网站| 日韩电影网1区2区| 亚洲另类色综合网站| 精品少妇一区二区| 欧美视频三区在线播放| 风间由美中文字幕在线看视频国产欧美 | 69成人精品免费视频| 9i看片成人免费高清| 久久成人精品无人区| 亚洲国产精品一区二区尤物区| 中日韩免费视频中文字幕| 欧美一区二区精品久久911| 日本精品一级二级| 成人av网站免费| 国产在线视视频有精品| 视频一区欧美精品| 一区二区三区精密机械公司| 中文一区二区在线观看| 日韩免费看网站| 亚洲色图视频网| 2024国产精品视频| 欧美大片免费久久精品三p | 91精品国产美女浴室洗澡无遮挡| 成人av在线播放网址| 国产精品一级黄| 国内精品伊人久久久久影院对白| 日韩精品国产精品| 亚洲高清三级视频| 亚洲国产视频一区| 一区二区三区日韩欧美| 亚洲色图在线看| 日韩欧美一区二区三区在线| 午夜视频在线观看一区二区| 日韩欧美国产1| 色噜噜狠狠一区二区三区果冻| 青青青爽久久午夜综合久久午夜| 精品国产区一区| 欧美日韩亚洲国产综合| 国产999精品久久| 日韩电影在线观看电影| 国产女人18毛片水真多成人如厕 | 久久久久久97三级| 99久久er热在这里只有精品15| 亚洲影视在线播放| 欧美激情一区二区三区全黄| 欧美一区二区三区免费视频| 奇米色一区二区| 亚洲图片自拍偷拍| 久久精品人人做人人综合| 精品亚洲成a人在线观看 | 国产亚洲短视频| 色94色欧美sute亚洲线路二| 精品国内二区三区| 国内成+人亚洲+欧美+综合在线| 麻豆极品一区二区三区| 一本到三区不卡视频| 一本大道久久精品懂色aⅴ| 一本大道av一区二区在线播放| 日本高清不卡视频| 欧美日韩黄色一区二区| 日韩情涩欧美日韩视频| 日韩一级黄色片| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧美色图小说| 日韩一区在线看| 国产精品不卡在线观看| 国产精品久久久久久妇女6080| 欧美日韩一级视频| 欧美日韩精品一区二区天天拍小说| 91丨九色丨蝌蚪丨老版| 99久久免费精品| 欧美xxxxx牲另类人与| 日本三级韩国三级欧美三级| 欧美精品 日韩| 国产成人免费xxxxxxxx| 色综合天天综合色综合av| 欧美午夜精品久久久久久超碰| 在线看不卡av| 久久婷婷综合激情| 一区二区高清免费观看影视大全| 午夜激情综合网| 国产乱码精品一区二区三| 99久久99久久免费精品蜜臀| 欧美日韩免费电影| 国产无遮挡一区二区三区毛片日本| 亚洲精品久久7777| 狠狠色丁香久久婷婷综合丁香| 91丨九色丨蝌蚪富婆spa| 日韩欧美激情四射| 亚洲精品国产精品乱码不99| 美女mm1313爽爽久久久蜜臀| 97超碰欧美中文字幕| 日韩精品专区在线| 一区二区三区不卡视频在线观看| 久久99精品一区二区三区三区| 色欧美88888久久久久久影院| 日韩免费性生活视频播放| 亚洲女人****多毛耸耸8| 久久精品久久综合| 日本韩国一区二区| 国产欧美精品一区| 日本aⅴ免费视频一区二区三区| 99麻豆久久久国产精品免费| 日韩西西人体444www| 亚洲精品综合在线| 国产91在线|亚洲| 日韩视频免费观看高清完整版| 亚洲天堂福利av| 高清不卡一二三区| 欧美mv日韩mv| 日韩电影免费在线看| 欧美性极品少妇| 亚洲欧洲日本在线| 成人手机在线视频| 亚洲精品一线二线三线无人区| 性做久久久久久久免费看| 色婷婷久久久亚洲一区二区三区| 亚洲成人一区二区在线观看| 91免费国产在线| 亚洲欧洲成人自拍| 成人一区在线看| 久久久久久久综合色一本| 麻豆精品一区二区综合av| 欧美乱熟臀69xxxxxx| 一区二区免费看| 色综合一个色综合| 亚洲天堂av老司机| 97久久超碰精品国产| 中文字幕亚洲区| 99久久精品情趣| 亚洲欧美成人一区二区三区| 成人avav在线| 国产欧美一区二区三区鸳鸯浴 | 91麻豆精品国产91久久久久| 天天色天天操综合| 国产亚洲欧美日韩在线一区| 欧美三级视频在线播放| 欧美bbbbb| 亚洲狠狠丁香婷婷综合久久久| 91精品国产综合久久蜜臀| 国产成人午夜99999| 一区二区免费看| 国产视频一区二区在线| 欧美日韩亚洲综合在线| 国产成人在线视频播放| 中文字幕亚洲区| 欧美xxxxxxxxx| 欧美猛男超大videosgay| aaa欧美大片| 青娱乐精品视频| 五月激情丁香一区二区三区| 亚洲精品在线观看网站| 久久综合久久综合久久| 日韩欧美一二三| 99视频在线观看一区三区| 韩日av一区二区| 亚洲天堂成人在线观看| 制服视频三区第一页精品| 91免费国产在线| 在线国产亚洲欧美| 中文字幕人成不卡一区| 国内精品在线播放| 国产欧美一区二区三区鸳鸯浴| 激情偷乱视频一区二区三区| 石原莉奈在线亚洲三区| 欧美精品一区二区三区蜜桃视频| 国产v综合v亚洲欧| 亚洲愉拍自拍另类高清精品| 51精品秘密在线观看| 国产精品亚洲一区二区三区妖精| 18成人在线观看| 7777精品伊人久久久大香线蕉超级流畅| 久久精品99久久久| 中文字幕一区二| 337p亚洲精品色噜噜噜| 高清shemale亚洲人妖| 亚洲午夜av在线| 久久久久九九视频| 欧美亚洲丝袜传媒另类| 韩国成人在线视频| 亚洲激情自拍偷拍| 久久影音资源网| 欧美探花视频资源| 国产成人精品免费| 丝袜亚洲另类欧美综合| 日本一区二区三级电影在线观看| 97久久精品人人做人人爽50路| 亚洲一区免费观看| 国产人伦精品一区二区| 91免费观看视频| 美女一区二区在线观看| 亚洲精品成人悠悠色影视| 日韩欧美一级二级| 菠萝蜜视频在线观看一区| 亚洲精品日韩一|