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

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

?? vad.c

?? GSM中半速率語音編解碼源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************
 *
 *     TITLE:     Half-Rate GSM Voice Activity Detector (VAD) Modules
 *
 *     VERSION:   1.2
 *
 *     REFERENCE: Recommendation GSM 06.42
 *
 ***************************************************************************/

/*_________________________________________________________________________
 |                                                                         |
 |                              Include Files                              |
 |_________________________________________________________________________|
*/

#include "typedefs.h"
#include "mathhalf.h"
#include "mathdp31.h"
#include "vad.h"


/*_________________________________________________________________________
 |                                                                         |
 |                              Local Defines                              |
 |_________________________________________________________________________|
*/

/*** Floating point representations of constants pth, plev and margin ***/

#define M_PTH    26250
#define E_PTH    18
#define M_PLEV   17500
#define E_PLEV   20
#define M_MARGIN 27343
#define E_MARGIN 27

/*_________________________________________________________________________
 |                                                                         |
 |                            Static Variables                             |
 |_________________________________________________________________________|
*/

static Shortword
       pswRvad[9],
       swNormRvad,
       swPt_sacf,
       swPt_sav0,
       swE_thvad,
       swM_thvad,
       swAdaptCount,
       swBurstCount,
       swHangCount,
       swOldLagCount,
       swVeryOldLagCount,
       swOldLag;

static Longword
       pL_sacf[27],
       pL_sav0[36],
       L_lastdm;

/****************************************************************************
 *
 *     FUNCTION:  vad_reset
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Resets VAD static variables to their initial value.
 *
 ***************************************************************************/

void   vad_reset(void)

{

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

  int    i;

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

  pswRvad[0] = 24576;
  swNormRvad = 7;
  swPt_sacf = 0;
  swPt_sav0 = 0;
  L_lastdm = 0;
  swE_thvad = 21;
  swM_thvad = 21875;
  swAdaptCount = 0;
  swBurstCount = 0;
  swHangCount = -1;
  swOldLagCount = 0;
  swVeryOldLagCount = 0;
  swOldLag = 21;

  for (i = 1; i < 9; i++)
    pswRvad[i] = 0;
  for (i = 0; i < 27; i++)
    pL_sacf[i] = 0;
  for (i = 0; i < 36; i++)
    pL_sav0[i] = 0;

}

/****************************************************************************
 *
 *     FUNCTION:  vad_algorithm
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Returns a decision as to whether the current frame being
 *                processed by the speech encoder contains speech or not.
 *
 *     INPUTS:    pL_acf[0..8]  autocorrelation of input signal frame
 *                swScaleAcf    L_acf scaling factor
 *                pswRc[0..3]   speech encoder reflection coefficients
 *                swPtch        flag to indicate a periodic signal component
 *
 *     OUTPUTS:   pswVadFlag    vad decision
 *
 ***************************************************************************/

void   vad_algorithm(Longword pL_acf[9],
                            Shortword swScaleAcf,
                            Shortword pswRc[4],
                            Shortword swPtch,
                            Shortword *pswVadFlag)
{

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

  Longword
         pL_av0[9],
         pL_av1[9];

  Shortword
         swM_acf0,
         swE_acf0,
         pswRav1[9],
         swNormRav1,
         swM_pvad,
         swE_pvad,
         swStat,
         swTone,
         swVvad;


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

  energy_computation
          (
           pL_acf, swScaleAcf,
           pswRvad, swNormRvad,
           &swM_pvad, &swE_pvad,
           &swM_acf0, &swE_acf0
          );

  average_acf
          (
           pL_acf, swScaleAcf,
           pL_av0, pL_av1
          );

  predictor_values
          (
           pL_av1,
           pswRav1,
           &swNormRav1
          );

  spectral_comparison
          (
           pswRav1, swNormRav1,
           pL_av0,
           &swStat
          );

  tone_detection
          (
           pswRc,
           &swTone
          );

  threshold_adaptation
          (
           swStat, swPtch, swTone,
           pswRav1, swNormRav1,
           swM_pvad, swE_pvad,
           swM_acf0, swE_acf0,
           pswRvad, &swNormRvad,
           &swM_thvad, &swE_thvad
          );

  vad_decision
          (
           swM_pvad, swE_pvad,
           swM_thvad, swE_thvad,
           &swVvad
          );

  vad_hangover
          (
           swVvad,
           pswVadFlag
          );

}

/****************************************************************************
 *
 *     FUNCTION:  energy_computation
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Computes the input and residual energies of the adaptive
 *                filter in a floating point representation.
 *
 *     INPUTS:    pL_acf[0..8]   autocorrelation of input signal frame
 *                swScaleAcf     L_acf scaling factor
 *                pswRvad[0..8]  autocorrelated adaptive filter coefficients
 *                swNormRvad     rvad scaling factor
 *
 *     OUTPUTS:   pswM_pvad      mantissa of filtered signal energy
 *                pswE_pvad      exponent of filtered signal energy
 *                pswM_acf0      mantissa of signal frame energy
 *                pswE_acf0      exponent of signal frame energy
 *
 ***************************************************************************/

void   energy_computation(Longword pL_acf[],
                                 Shortword swScaleAcf,
                                 Shortword pswRvad[],
                                 Shortword swNormRvad,
                                 Shortword *pswM_pvad,
                                 Shortword *pswE_pvad,
                                 Shortword *pswM_acf0,
                                 Shortword *pswE_acf0)
{

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

  Longword
         L_temp;

  Shortword
         pswSacf[9],
         swNormAcf,
         swNormProd,
         swShift;

  int
         i;


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

  /*** Test if acf[0] is zero ***/

  if (pL_acf[0] == 0)
  {
    *pswE_pvad = -0x8000;
    *pswM_pvad = 0;
    *pswE_acf0 = -0x8000;
    *pswM_acf0 = 0;
    return;
  }


  /*** Re-normalisation of L_acf[0..8] ***/

  swNormAcf = norm_l(pL_acf[0]);
  swShift = sub(swNormAcf, 3);

  for (i = 0; i <= 8; i++)
    pswSacf[i] = extract_h(L_shl(pL_acf[i], swShift));


  /*** Computation of e_acf0 and m_acf0 ***/

  *pswE_acf0 = add(32, shl(swScaleAcf, 1));
  *pswE_acf0 = sub(*pswE_acf0, swNormAcf);
  *pswM_acf0 = shl(pswSacf[0], 3);


  /*** Computation of e_pvad and m_pvad ***/

  *pswE_pvad = add(*pswE_acf0, 14);
  *pswE_pvad = sub(*pswE_pvad, swNormRvad);

  L_temp = 0;

  for (i = 1; i <= 8; i++)
    L_temp = L_mac(L_temp, pswSacf[i], pswRvad[i]);

  L_temp = L_add(L_temp, L_shr(L_mult(pswSacf[0], pswRvad[0]), 1));

  if (L_temp <= 0)
    L_temp = 1;

  swNormProd = norm_l(L_temp);
  *pswE_pvad = sub(*pswE_pvad, swNormProd);
  *pswM_pvad = extract_h(L_shl(L_temp, swNormProd));

}

/****************************************************************************
 *
 *     FUNCTION:  average_acf
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Computes the arrays L_av0 [0..8] and L_av1 [0..8].
 *
 *     INPUTS:    pL_acf[0..8]  autocorrelation of input signal frame
 *                swScaleAcf    L_acf scaling factor
 *
 *     OUTPUTS:   pL_av0[0..8]  ACF averaged over last four frames
 *                pL_av1[0..8]  ACF averaged over previous four frames
 *
 ***************************************************************************/

void   average_acf(Longword pL_acf[],
                          Shortword swScaleAcf,
                          Longword pL_av0[],
                          Longword pL_av1[])
{

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

  Longword L_temp;

  Shortword swScale;

  int    i;

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

  /*** computation of the scaleing factor ***/

  swScale = sub(10, shl(swScaleAcf, 1));


  /*** Computation of the arrays L_av0 and L_av1 ***/

  for (i = 0; i <= 8; i++)
  {
    L_temp = L_shr(pL_acf[i], swScale);
    pL_av0[i] = L_add(pL_sacf[i], L_temp);
    pL_av0[i] = L_add(pL_sacf[i + 9], pL_av0[i]);
    pL_av0[i] = L_add(pL_sacf[i + 18], pL_av0[i]);
    pL_sacf[swPt_sacf + i] = L_temp;
    pL_av1[i] = pL_sav0[swPt_sav0 + i];
    pL_sav0[swPt_sav0 + i] = pL_av0[i];
  }


  /*** Update the array pointers ***/

  if (swPt_sacf == 18)
    swPt_sacf = 0;
  else
    swPt_sacf = add(swPt_sacf, 9);

  if (swPt_sav0 == 27)
    swPt_sav0 = 0;
  else
    swPt_sav0 = add(swPt_sav0, 9);

}

/****************************************************************************
 *
 *     FUNCTION:  predictor_values
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Computes the array rav [0..8] needed for the spectral
 *                comparison and the threshold adaptation.
 *
 *     INPUTS:    pL_av1 [0..8]  ACF averaged over previous four frames
 *
 *     OUTPUTS:   pswRav1 [0..8] ACF obtained from L_av1
 *                pswNormRav1    r_av1 scaling factor
 *
 ***************************************************************************/

void   predictor_values(Longword pL_av1[],
                               Shortword pswRav1[],
                               Shortword *pswNormRav1)
{

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

  Shortword
         pswVpar[8],
         pswAav1[9];

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

  schur_recursion(pL_av1, pswVpar);
  step_up(8, pswVpar, pswAav1);
  compute_rav1(pswAav1, pswRav1, pswNormRav1);

}

/****************************************************************************
 *
 *     FUNCTION:  schur_recursion
 *
 *     VERSION:   1.2
 *
 *     PURPOSE:   Uses the Schur recursion to compute adaptive filter
 *                reflection coefficients from an autorrelation function.
 *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品污污网站免费看| 国产91富婆露脸刺激对白| 欧美在线播放高清精品| 亚洲三级电影网站| 日本精品裸体写真集在线观看| 亚洲日本一区二区| 欧美性色欧美a在线播放| 日本伊人色综合网| 久久―日本道色综合久久| 国产suv精品一区二区883| 中文字幕一区二区三区四区不卡 | 91一区一区三区| 亚洲另类春色国产| 欧美精品在欧美一区二区少妇| 日韩精品乱码免费| 国产精品网站在线观看| 91福利国产成人精品照片| 免费成人深夜小野草| 久久伊人中文字幕| 91福利社在线观看| 极品少妇一区二区| 伊人夜夜躁av伊人久久| 日韩视频免费直播| eeuss鲁一区二区三区| 亚洲va国产天堂va久久en| 久久免费视频一区| 色播五月激情综合网| 麻豆91精品91久久久的内涵| 亚洲国产激情av| 欧美亚男人的天堂| 精品一区二区三区日韩| 最新日韩av在线| 日韩欧美激情四射| 91亚洲精品久久久蜜桃网站| 青青青爽久久午夜综合久久午夜| 国产精品私房写真福利视频| 欧美色图片你懂的| 丁香另类激情小说| 免费在线一区观看| 亚洲激情五月婷婷| 国产亚洲午夜高清国产拍精品| 欧美亚洲动漫制服丝袜| 国产91精品露脸国语对白| 日韩一区欧美二区| 亚洲欧洲av一区二区三区久久| 欧美一区日韩一区| 在线免费观看日本一区| 成人免费的视频| 精品一区精品二区高清| 五月激情六月综合| 亚洲国产日韩在线一区模特| 国产精品视频观看| 久久久精品免费免费| 欧美人伦禁忌dvd放荡欲情| 91网站最新地址| 大桥未久av一区二区三区中文| 久久国产精品一区二区| 亚洲成a人片在线观看中文| 国产精品天干天干在观线| 久久久久久毛片| 日韩免费一区二区三区在线播放| 欧美日韩在线三区| 欧美性猛交xxxx黑人交| 色综合中文字幕国产| 国产毛片精品一区| 激情六月婷婷久久| 精品综合免费视频观看| 久久精品国产久精国产| 全国精品久久少妇| 奇米影视7777精品一区二区| 午夜国产不卡在线观看视频| 一级特黄大欧美久久久| 亚洲日本丝袜连裤袜办公室| 中文字幕欧美三区| 国产精品免费视频观看| 中文字幕日本乱码精品影院| 国产精品毛片无遮挡高清| 日本一区免费视频| 国产精品电影一区二区| 亚洲美女电影在线| 一区二区三区电影在线播| 一区二区三区四区在线| 亚洲尤物视频在线| 午夜精品福利在线| 蜜桃精品视频在线观看| 国产在线精品视频| 成人精品高清在线| 91日韩在线专区| 欧美在线你懂得| 欧美精品少妇一区二区三区| 91精品国产综合久久久久久漫画| 日韩欧美国产麻豆| 久久久久国产一区二区三区四区| 久久亚区不卡日本| 中文字幕一区av| 亚洲午夜免费电影| 久久精品99久久久| 不卡一区二区在线| 欧美日韩国产小视频| 日韩一区国产二区欧美三区| 久久亚洲精华国产精华液 | 精品一区二区影视| 国产乱子伦一区二区三区国色天香| 国产成人亚洲精品青草天美| 一道本成人在线| 666欧美在线视频| 久久精品男人的天堂| 日韩伦理av电影| 五月婷婷久久丁香| 国产福利91精品一区二区三区| av电影一区二区| 欧美三级中文字| 国产性天天综合网| 亚洲成年人网站在线观看| 国内久久婷婷综合| 欧美性生活久久| 国产视频一区二区三区在线观看| 亚洲免费视频中文字幕| 美女免费视频一区| 色综合久久综合中文综合网| 欧美一区二区三区视频在线观看| 国产三级精品三级在线专区| 亚洲午夜在线视频| 成人综合激情网| 日韩视频一区二区| 亚洲综合一二三区| 国产成人一级电影| 在线视频一区二区免费| 国产清纯白嫩初高生在线观看91 | www欧美成人18+| 亚洲午夜日本在线观看| 成人av网址在线观看| 欧美一二三四区在线| 一区二区三区小说| 不卡一区二区中文字幕| 久久青草国产手机看片福利盒子| 亚洲午夜激情av| 色综合一区二区| 国产欧美一区视频| 另类综合日韩欧美亚洲| 欧美色手机在线观看| 亚洲伦理在线精品| 国产精品夜夜嗨| 精品国产91乱码一区二区三区 | 国产精品原创巨作av| 欧美日韩高清在线播放| 国产精品电影院| 成人中文字幕电影| 国产亚洲精久久久久久| 看电视剧不卡顿的网站| 在线不卡a资源高清| 一区二区三区成人| 色综合久久88色综合天天6 | 国产激情视频一区二区在线观看| 欧美久久久一区| 一区二区三区国产精品| 色哟哟一区二区| 亚洲日韩欧美一区二区在线| 不卡的电影网站| 国产精品久久久久久亚洲毛片| 国产一区二区三区在线观看精品 | 欧美日韩中文国产| 一区二区三区高清在线| 欧美最猛黑人xxxxx猛交| 亚洲欧美日韩综合aⅴ视频| 91视频.com| 最新久久zyz资源站| 91在线看国产| 亚洲伦在线观看| 在线观看免费亚洲| 日韩av二区在线播放| 91精品国产高清一区二区三区蜜臀| 亚洲国产欧美在线| 在线电影一区二区三区| 麻豆91在线播放| 国产日韩欧美不卡在线| 成人黄色av电影| 亚洲裸体在线观看| 欧美日韩在线一区二区| 青椒成人免费视频| 国产午夜亚洲精品午夜鲁丝片| 成人免费精品视频| 亚洲最新视频在线播放| 欧美日韩国产一二三| 黑人精品欧美一区二区蜜桃 | 国产精品久久久久毛片软件| 一本色道久久综合亚洲91| 亚洲1区2区3区4区| 精品国产伦理网| 99综合电影在线视频| 亚洲综合男人的天堂| 欧美一区二区三区的| 国产剧情一区二区| 亚洲欧洲色图综合| 欧美日韩国产高清一区二区| 久久国产夜色精品鲁鲁99| 综合电影一区二区三区| 欧美一区二区福利视频| 国产成人自拍高清视频在线免费播放| 一区在线播放视频|