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

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

?? vad.c

?? GSM中半速率語音編解碼源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
 *     INPUTS:    pL_av1[0..8]   autocorrelation function
 *
 *     OUTPUTS:   pswVpar[0..7]  reflection coefficients
 *
 ***************************************************************************/

void   schur_recursion(Longword pL_av1[],
                              Shortword pswVpar[])
{

/*_________________________________________________________________________
 |                                                                         |
 |                            Automatic Variables                          |
 |_________________________________________________________________________|
*/

  Shortword
         pswAcf[9],
         pswPp[9],
         pswKk[9],
         swTemp;

  int    i,
         k,
         m,
         n;


/*_________________________________________________________________________
 |                                                                         |
 |                              Executable Code                            |
 |_________________________________________________________________________|
*/

  /*** Schur recursion with 16-bit arithmetic ***/

  if (pL_av1[0] == 0)
  {
    for (i = 0; i < 8; i++)
      pswVpar[i] = 0;
    return;
  }

  swTemp = norm_l(pL_av1[0]);

  for (k = 0; k <= 8; k++)
    pswAcf[k] = extract_h(L_shl(pL_av1[k], swTemp));


  /*** Initialise array pp[..] and kk[..] for the recursion: ***/

  for (i = 1; i <= 7; i++)
    pswKk[9 - i] = pswAcf[i];

  for (i = 0; i <= 8; i++)
    pswPp[i] = pswAcf[i];


  /*** Compute Parcor coefficients: ***/

  for (n = 0; n < 8; n++)
  {
    if (pswPp[0] < abs_s(pswPp[1]))
    {
      for (i = n; i < 8; i++)
        pswVpar[i] = 0;
      return;
    }
    pswVpar[n] = divide_s(abs_s(pswPp[1]), pswPp[0]);

    if (pswPp[1] > 0)
      pswVpar[n] = negate(pswVpar[n]);
    if (n == 7)
      return;


    /*** Schur recursion: ***/

    pswPp[0] = add(pswPp[0], mult_r(pswPp[1], pswVpar[n]));

    for (m = 1; m <= (7 - n); m++)
    {
      pswPp[m] = add(pswPp[1 + m], mult_r(pswKk[9 - m], pswVpar[n]));
      pswKk[9 - m] = add(pswKk[9 - m], mult_r(pswPp[1 + m], pswVpar[n]));
    }
  }

}

/****************************************************************************
 *
 *     FUNCTION:  step_up
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Computes the transversal filter coefficients from the
 *                reflection coefficients.
 *
 *     INPUTS:    swNp             filter order (2..8)
 *                pswVpar[0..np-1] reflection coefficients
 *
 *     OUTPUTS:   pswAav1[0..np]   transversal filter coefficients
 *
 ***************************************************************************/

void   step_up(Shortword swNp,
                      Shortword pswVpar[],
                      Shortword pswAav1[])
{

/*_________________________________________________________________________
 |                                                                         |
 |                            Automatic Variables                          |
 |_________________________________________________________________________|
*/

  Longword
         pL_coef[9],
         pL_work[9];

  Shortword
         swTemp;

  int
         i,
         m;


/*_________________________________________________________________________
 |                                                                         |
 |                              Executable Code                            |
 |_________________________________________________________________________|
*/

  /*** Initialisation of the step-up recursion ***/

  pL_coef[0] = L_shl(0x4000L, 15);
  pL_coef[1] = L_shl(L_deposit_l(pswVpar[0]), 14);


  /*** Loop on the LPC analysis order: ***/

  for (m = 2; m <= swNp; m++)
  {
    for (i = 1; i < m; i++)
    {
      swTemp = extract_h(pL_coef[m - i]);
      pL_work[i] = L_mac(pL_coef[i], pswVpar[m - 1], swTemp);
    }
    for (i = 1; i < m; i++)
      pL_coef[i] = pL_work[i];
    pL_coef[m] = L_shl(L_deposit_l(pswVpar[m - 1]), 14);
  }


  /*** Keep the aav1[0..swNp] in 15 bits for the following subclause ***/

  for (i = 0; i <= swNp; i++)
    pswAav1[i] = extract_h(L_shr(pL_coef[i], 3));

}

/****************************************************************************
 *
 *     FUNCTION:  compute_rav1
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Computes the autocorrelation function of the adaptive
 *                filter coefficients.
 *
 *     INPUTS:    pswAav1[0..8]  adaptive filter coefficients
 *
 *     OUTPUTS:   pswRav1[0..8]  ACF of aav1
 *                pswNormRav1    r_av1 scaling factor
 *
 ***************************************************************************/

void   compute_rav1(Shortword pswAav1[],
                           Shortword pswRav1[],
                           Shortword *pswNormRav1)
{

/*_________________________________________________________________________
 |                                                                         |
 |                            Automatic Variables                          |
 |_________________________________________________________________________|
*/

  Longword
         pL_work[9];

  int
         i,
         k;


/*_________________________________________________________________________
 |                                                                         |
 |                              Executable Code                            |
 |_________________________________________________________________________|
*/

  /*** Computation of the rav1[0..8] ***/

  for (i = 0; i <= 8; i++)
  {
    pL_work[i] = 0;

    for (k = 0; k <= 8 - i; k++)
      pL_work[i] = L_mac(pL_work[i], pswAav1[k], pswAav1[k + i]);
  }

  if (pL_work[0] == 0)
    *pswNormRav1 = 0;
  else
    *pswNormRav1 = norm_l(pL_work[0]);

  for (i = 0; i <= 8; i++)
    pswRav1[i] = extract_h(L_shl(pL_work[i], *pswNormRav1));

}

/****************************************************************************
 *
 *     FUNCTION:  spectral_comparison
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Computes the stat flag needed for the threshold
 *                adaptation decision.
 *
 *     INPUTS:    pswRav1[0..8]   ACF obtained from L_av1
 *                swNormRav1      rav1 scaling factor
 *                pL_av0[0..8]    ACF averaged over last four frames
 *
 *     OUTPUTS:   pswStat         flag to indicate spectral stationarity
 *
 ***************************************************************************/

void   spectral_comparison(Shortword pswRav1[],
                                  Shortword swNormRav1,
                                  Longword pL_av0[],
                                  Shortword *pswStat)
{

/*_________________________________________________________________________
 |                                                                         |
 |                            Automatic Variables                          |
 |_________________________________________________________________________|
*/

  Longword
         L_dm,
         L_sump,
         L_temp;

  Shortword
         pswSav0[9],
         swShift,
         swDivShift,
         swTemp;

  int
         i;


/*_________________________________________________________________________
 |                                                                         |
 |                              Executable Code                            |
 |_________________________________________________________________________|
*/

  /*** Re-normalise L_av0[0..8] ***/

  if (pL_av0[0] == 0)
  {
    for (i = 0; i <= 8; i++)
      pswSav0[i] = 4095;
  }
  else
  {
    swShift = sub(norm_l(pL_av0[0]), 3);
    for (i = 0; i <= 8; i++)
      pswSav0[i] = extract_h(L_shl(pL_av0[i], swShift));
  }

  /*** compute partial sum of dm ***/

  L_sump = 0;

  for (i = 1; i <= 8; i++)
    L_sump = L_mac(L_sump, pswRav1[i], pswSav0[i]);

  /*** compute the division of the partial sum by sav0[0] ***/

  if (L_sump < 0)
    L_temp = L_negate(L_sump);
  else
    L_temp = L_sump;

  if (L_temp == 0)
  {
    L_dm = 0;
    swShift = 0;
  }
  else
  {
    pswSav0[0] = shl(pswSav0[0], 3);
    swShift = norm_l(L_temp);
    swTemp = extract_h(L_shl(L_temp, swShift));

    if (pswSav0[0] >= swTemp)
    {
      swDivShift = 0;
      swTemp = divide_s(swTemp, pswSav0[0]);
    }
    else
    {
      swDivShift = 1;
      swTemp = sub(swTemp, pswSav0[0]);
      swTemp = divide_s(swTemp, pswSav0[0]);
    }

    if (swDivShift == 1)
      L_dm = 0x8000L;
    else
      L_dm = 0;

    L_dm = L_shl((L_add(L_dm, L_deposit_l(swTemp))), 1);

    if (L_sump < 0)
      L_dm = L_sub(0L, L_dm);
  }


  /*** Re-normalisation and final computation of L_dm ***/

  L_dm = L_shl(L_dm, 14);
  L_dm = L_shr(L_dm, swShift);
  L_dm = L_add(L_dm, L_shl(L_deposit_l(pswRav1[0]), 11));
  L_dm = L_shr(L_dm, swNormRav1);


  /*** Compute the difference and save L_dm ***/

  L_temp = L_sub(L_dm, L_lastdm);
  L_lastdm = L_dm;

  if (L_temp < 0L)
    L_temp = L_negate(L_temp);


  /*** Evaluation of the state flag  ***/

  L_temp = L_sub(L_temp, 4456L);

  if (L_temp < 0)
    *pswStat = 1;
  else
    *pswStat = 0;

}

/****************************************************************************
 *
 *     FUNCTION:  tone_detection
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Computes the tone flag needed for the threshold
 *                adaptation decision.
 *
 *     INPUTS:    pswRc[0..3] reflection coefficients calculated in the
 *                            speech encoder short term predictor
 *
 *     OUTPUTS:   pswTone     flag to indicate a periodic signal component
 *
 ***************************************************************************/

void   tone_detection(Shortword pswRc[4],
                             Shortword *pswTone)
{

/*_________________________________________________________________________
 |                                                                         |
 |                            Automatic Variables                          |
 |_________________________________________________________________________|
*/

  Longword
         L_num,
         L_den,
         L_temp;

  Shortword
         swTemp,
         swPredErr,
         pswA[3];

  int
         i;

/*_________________________________________________________________________
 |                                                                         |
 |                              Executable Code                            |
 |_________________________________________________________________________|
*/

  *pswTone = 0;


  /*** Calculate filter coefficients ***/

  step_up(2, pswRc, pswA);


  /*** Calculate ( a[1] * a[1] ) ***/

  swTemp = shl(pswA[1], 3);
  L_den = L_mult(swTemp, swTemp);


  /*** Calculate ( 4*a[2] - a[1]*a[1] ) ***/

  L_temp = L_shl(L_deposit_h(pswA[2]), 3);
  L_num = L_sub(L_temp, L_den);


  /*** Check if pole frequency is less than 385 Hz ***/

  if (L_num <= 0)
    return;

  if (pswA[1] < 0)
  {
    swTemp = extract_h(L_den);
    L_temp = L_msu(L_num, swTemp, 3189);

    if (L_temp < 0)
      return;
  }


  /*** Calculate normalised prediction error ***/

  swPredErr = 0x7fff;

  for (i = 0; i < 4; i++)
  {
    swTemp = mult(pswRc[i], pswRc[i]);
    swTemp = sub(32767, swTemp);
    swPredErr = mult(swPredErr, swTemp);
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色视频一区二区| 色婷婷亚洲婷婷| 亚洲午夜视频在线观看| 日韩免费观看2025年上映的电影| www.性欧美| 全国精品久久少妇| 中文字幕在线播放不卡一区| 日韩一区二区三区四区| 色菇凉天天综合网| 粉嫩av一区二区三区| 日本成人在线不卡视频| 亚洲精品视频一区| 国产亚洲va综合人人澡精品 | 五月天激情小说综合| 日本va欧美va精品发布| 国产精品免费人成网站| 91精品国产色综合久久不卡蜜臀 | 中文字幕欧美区| 日韩午夜电影在线观看| 欧美午夜精品久久久久久超碰 | 午夜视频在线观看一区| 午夜影视日本亚洲欧洲精品| 国产亚洲成av人在线观看导航| 4438x成人网最大色成网站| 在线观看成人免费视频| 色综合久久天天| 成人app网站| 懂色一区二区三区免费观看| 国产一区视频在线看| 另类小说综合欧美亚洲| 日韩电影在线观看一区| 亚洲成a人v欧美综合天堂 | 亚洲图片欧美一区| 亚洲视频每日更新| 国产精品久久毛片| 国产精品成人一区二区三区夜夜夜| 国产网站一区二区三区| 久久久精品中文字幕麻豆发布| 久久综合五月天婷婷伊人| 精品久久国产老人久久综合| 欧美成人vr18sexvr| 日韩欧美国产综合| 精品理论电影在线观看 | 99国产欧美另类久久久精品| 成人午夜在线播放| 成人精品一区二区三区四区 | 日韩免费一区二区| 欧美成人vps| 久久久精品蜜桃| 国产精品天干天干在线综合| 综合自拍亚洲综合图不卡区| 亚洲久本草在线中文字幕| 亚洲精品水蜜桃| 天天影视涩香欲综合网| 乱一区二区av| 国产a区久久久| 99re成人精品视频| 91福利社在线观看| 91麻豆精品国产91久久久更新时间| 91精品啪在线观看国产60岁| 日韩欧美综合在线| 精品国产一区二区三区av性色| 久久久99久久| 亚洲天堂成人在线观看| 亚洲小说春色综合另类电影| 日韩精品免费专区| 国产麻豆午夜三级精品| 一本到高清视频免费精品| 日本韩国欧美三级| 在线91免费看| 国产午夜亚洲精品羞羞网站| 亚洲蜜臀av乱码久久精品蜜桃| 午夜在线成人av| 国产精品乡下勾搭老头1| 91美女片黄在线观看| 日韩一区二区中文字幕| 国产精品美女一区二区| 午夜精品久久久久久| 国产成人综合精品三级| 日本精品视频一区二区| 精品国产凹凸成av人导航| 亚洲欧美在线视频观看| 日韩一区精品字幕| 国产91精品精华液一区二区三区 | 国产精品一区二区久久精品爱涩| 99国产精品视频免费观看| 91精品国产91久久久久久一区二区 | 国内精品写真在线观看| 国产乱妇无码大片在线观看| 一本色道综合亚洲| 精品国产电影一区二区| 亚洲精品成人悠悠色影视| 久久国产精品99久久久久久老狼| caoporn国产精品| 91精品国产手机| 亚洲女女做受ⅹxx高潮| 久久99国产精品久久99果冻传媒| 日韩欧美国产电影| 亚洲狼人国产精品| 国产传媒日韩欧美成人| 欧美一区二区三区视频| 亚洲视频小说图片| 国产一区二区在线影院| 欧美高清一级片在线| 亚洲欧美日韩国产另类专区| 麻豆视频观看网址久久| 欧美午夜在线一二页| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 久久久久久9999| 午夜精品免费在线观看| 97久久超碰国产精品电影| 久久亚洲综合色一区二区三区| 依依成人综合视频| 99久久精品国产精品久久 | 亚洲免费观看高清完整版在线观看 | 国产精品久久久久天堂| 日本成人在线电影网| 91官网在线免费观看| 国产精品嫩草99a| 国产呦萝稀缺另类资源| 69av一区二区三区| 一区二区三区四区av| 国产a久久麻豆| 久久美女高清视频| 精品亚洲aⅴ乱码一区二区三区| 在线免费观看日本一区| 中文字幕色av一区二区三区| 国产精品一区二区无线| 亚洲精品一区二区三区蜜桃下载 | 欧美午夜精品一区二区三区| 久久精品人人做人人爽97| 久久精品国产网站| 日韩久久久精品| 美女脱光内衣内裤视频久久网站 | 精品久久久三级丝袜| 麻豆成人91精品二区三区| 欧美高清视频一二三区 | 成人精品亚洲人成在线| 中文字幕国产一区二区| 成人久久视频在线观看| 国产精品第13页| 色天天综合色天天久久| 亚洲精品写真福利| 欧美日韩一本到| 婷婷丁香激情综合| 欧美大片在线观看| 国产福利91精品一区| 国产精品的网站| 欧美午夜影院一区| 日本aⅴ精品一区二区三区| 欧美岛国在线观看| 国产成人综合在线播放| 国产精品丝袜91| 色悠悠久久综合| 亚洲超碰精品一区二区| 欧美一级专区免费大片| 韩国精品主播一区二区在线观看| 久久综合网色—综合色88| 国产成人午夜精品影院观看视频| 国产欧美一二三区| 91蝌蚪国产九色| 亚洲成人av中文| 日韩亚洲欧美中文三级| 国产老女人精品毛片久久| 国产精品三级电影| 欧美日韩在线一区二区| 免费观看91视频大全| 国产清纯美女被跳蛋高潮一区二区久久w | 午夜欧美一区二区三区在线播放| 欧美性视频一区二区三区| 无码av中文一区二区三区桃花岛| 欧美大片一区二区| av一区二区不卡| 日韩 欧美一区二区三区| 国产日产欧美一区二区三区| 91高清视频在线| 狠狠狠色丁香婷婷综合久久五月| 国产日韩精品一区二区浪潮av| 91蝌蚪国产九色| 黄页网站大全一区二区| 亚洲色图在线视频| 日韩一级大片在线观看| 91丨porny丨中文| 久久精品国产秦先生| 亚洲日本护士毛茸茸| 精品国精品国产尤物美女| 91色porny在线视频| 奇米色777欧美一区二区| 亚洲欧美日韩国产成人精品影院 | 免费观看在线色综合| ...xxx性欧美| 欧美精品一区二区三区久久久 | 久久影院午夜论| 在线亚洲高清视频| 国产精品一区不卡| 日韩黄色免费电影| 亚洲欧美日韩综合aⅴ视频| 精品1区2区在线观看| 欧美视频在线不卡| 成人av网站免费|