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

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

?? dec_ld8k.c

?? g.729協議源代碼,c語言,直接可以應用(dsp定點化)
?? C
字號:
/*
   ITU-T G.729 Speech Coder with Annex B    ANSI-C Source Code
   Version 1.3    Last modified: August 1997

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

/*-----------------------------------------------------------------*
 *   Functions Init_Decod_ld8k  and Decod_ld8k                     *
 *-----------------------------------------------------------------*/

#include <stdio.h>
#include <stdlib.h>
#include "typedef.h"
#include "basic_op.h"
#include "ld8k.h"
#include "dtx.h"
#include "sid.h"

/*---------------------------------------------------------------*
 *   Decoder constant parameters (defined in "ld8k.h")           *
 *---------------------------------------------------------------*
 *   L_FRAME     : Frame size.                                   *
 *   L_SUBFR     : Sub-frame size.                               *
 *   M           : LPC order.                                    *
 *   MP1         : LPC order+1                                   *
 *   PIT_MIN     : Minimum pitch lag.                            *
 *   PIT_MAX     : Maximum pitch lag.                            *
 *   L_INTERPOL  : Length of filter for interpolation            *
 *   PRM_SIZE    : Size of vector containing analysis parameters *
 *---------------------------------------------------------------*/

/*--------------------------------------------------------*
 *         Static memory allocation.                      *
 *--------------------------------------------------------*/

        /* Excitation vector */

 static Word16 old_exc[L_FRAME+PIT_MAX+L_INTERPOL];
 static Word16 *exc;

        /* Lsp (Line spectral pairs) */

 static Word16 lsp_old[M]={
             30000, 26000, 21000, 15000, 8000, 0, -8000,-15000,-21000,-26000};

        /* Filter's memory */

 static Word16 mem_syn[M];

 static Word16 sharp;           /* pitch sharpening of previous frame */
 static Word16 old_T0;          /* integer delay of previous frame    */
 static Word16 gain_code;       /* Code gain                          */
 static Word16 gain_pitch;      /* Pitch gain                         */

/* for G.729B */
static Word16 seed_fer;
/* CNG variables */
static Word16 past_ftyp;
static Word16 seed;
static Word16 sid_sav, sh_sid_sav;

/*-----------------------------------------------------------------*
 *   Function Init_Decod_ld8k                                      *
 *            ~~~~~~~~~~~~~~~                                      *
 *                                                                 *
 *   ->Initialization of variables for the decoder section.        *
 *                                                                 *
 *-----------------------------------------------------------------*/

void Init_Decod_ld8k(void)
{

  /* Initialize static pointer */

  exc = old_exc + PIT_MAX + L_INTERPOL;

  /* Static vectors to zero */

  Set_zero(old_exc, PIT_MAX+L_INTERPOL);
  Set_zero(mem_syn, M);

  sharp  = SHARPMIN;
  old_T0 = 60;
  gain_code = 0;
  gain_pitch = 0;

  Lsp_decw_reset();

  /* for G.729B */
  seed_fer = 21845;
  past_ftyp = 1;
  seed = INIT_SEED;
  sid_sav = 0;
  sh_sid_sav = 1;
  Init_lsfq_noise();

  return;
}

/*-----------------------------------------------------------------*
 *   Function Decod_ld8k                                           *
 *           ~~~~~~~~~~                                            *
 *   ->Main decoder routine.                                       *
 *                                                                 *
 *-----------------------------------------------------------------*/

void Decod_ld8k(
  Word16  parm[],      /* (i)   : vector of synthesis parameters
                                  parm[0] = bad frame indicator (bfi)  */
  Word16  voicing,     /* (i)   : voicing decision from previous frame */
  Word16  synth[],     /* (o)   : synthesis speech                     */
  Word16  A_t[],       /* (o)   : decoded LP filter in 2 subframes     */
  Word16  *T0_first,   /* (o)   : decoded pitch lag in first subframe  */
  Word16  *Vad         /* (o)   : frame type                           */
)
{
  Word16  *Az;                  /* Pointer on A_t   */
  Word16  lsp_new[M];           /* LSPs             */
  Word16  code[L_SUBFR];        /* ACELP codevector */

  /* Scalars */

  Word16  i, j, i_subfr;
  Word16  T0, T0_frac, index;
  Word16  bfi;
  Word32  L_temp;
  Word16 g_p, g_c;              /* fixed and adaptive codebook gain */

  Word16 bad_pitch;             /* bad pitch indicator */
  extern Flag Overflow;

  /* for G.729B */
  Word16 ftyp;
  Word16 lsfq_mem[MA_NP][M];

  /* Test bad frame indicator (bfi) */

  bfi = *parm++;

  /* for G.729B */
  ftyp = *parm;

  if(bfi == 1) {
    if(past_ftyp == 1) ftyp = 1;
    else ftyp = 0;
    *parm = ftyp;  /* modification introduced in version V1.3 */
  }

  *Vad = ftyp;

  /* Processing non active frames (SID & not transmitted) */
  if(ftyp != 1) {
    Get_decfreq_prev(lsfq_mem);
    Dec_cng(past_ftyp, sid_sav, sh_sid_sav, parm, exc, lsp_old,
            A_t, &seed, lsfq_mem);
    Update_decfreq_prev(lsfq_mem);

    Az = A_t;
    for (i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR) {
      Overflow = 0;
      Syn_filt(Az, &exc[i_subfr], &synth[i_subfr], L_SUBFR, mem_syn, 0);
      if(Overflow != 0) {
        /* In case of overflow in the synthesis          */
        /* -> Scale down vector exc[] and redo synthesis */
        
        for(i=0; i<PIT_MAX+L_INTERPOL+L_FRAME; i++)
          old_exc[i] = shr(old_exc[i], 2);
        
        Syn_filt(Az, &exc[i_subfr], &synth[i_subfr], L_SUBFR, mem_syn, 1);
      }
      else
        Copy(&synth[i_subfr+L_SUBFR-M], mem_syn, M);
      
      Az += MP1;

      *T0_first = old_T0;
    }
    sharp = SHARPMIN;
    
  }
  /* Processing active frame */
  else {
    seed = INIT_SEED;
    parm++;

    /* Decode the LSPs */
    
    D_lsp(parm, lsp_new, bfi);
    parm += 2;
    
    /* Interpolation of LPC for the 2 subframes */
    
    Int_qlpc(lsp_old, lsp_new, A_t);
    
    /* update the LSFs for the next frame */
    
    Copy(lsp_new, lsp_old, M);
    
    /*------------------------------------------------------------------------*
     *          Loop for every subframe in the analysis frame                 *
     *------------------------------------------------------------------------*
     * The subframe size is L_SUBFR and the loop is repeated L_FRAME/L_SUBFR  *
     *  times                                                                 *
     *     - decode the pitch delay                                           *
     *     - decode algebraic code                                            *
     *     - decode pitch and codebook gains                                  *
     *     - find the excitation and compute synthesis speech                 *
     *------------------------------------------------------------------------*/
    
    Az = A_t;            /* pointer to interpolated LPC parameters */
    
    for (i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR)
      {
        
        index = *parm++;            /* pitch index */
        
        if(i_subfr == 0)
          {
            i = *parm++;             /* get parity check result */
            bad_pitch = add(bfi, i);
            if( bad_pitch == 0)
              {
                Dec_lag3(index, PIT_MIN, PIT_MAX, i_subfr, &T0, &T0_frac);
                old_T0 = T0;
              }
            else                     /* Bad frame, or parity error */
              {
                T0  =  old_T0;
                T0_frac = 0;
                old_T0 = add( old_T0, 1);
                if( sub(old_T0, PIT_MAX) > 0) {
                  old_T0 = PIT_MAX;
                }
              }
            *T0_first = T0;         /* If first frame */
          }
        else                       /* second subframe */
          {
            if( bfi == 0)
              {
                Dec_lag3(index, PIT_MIN, PIT_MAX, i_subfr, &T0, &T0_frac);
                old_T0 = T0;
              }
            else
              {
                T0  =  old_T0;
                T0_frac = 0;
                old_T0 = add( old_T0, 1);
                if( sub(old_T0, PIT_MAX) > 0) {
                  old_T0 = PIT_MAX;
                }
              }
          }
        
        /*-------------------------------------------------*
         * - Find the adaptive codebook vector.            *
         *-------------------------------------------------*/
        
        Pred_lt_3(&exc[i_subfr], T0, T0_frac, L_SUBFR);
        
        /*-------------------------------------------------------*
         * - Decode innovative codebook.                         *
         * - Add the fixed-gain pitch contribution to code[].    *
         *-------------------------------------------------------*/
        
        if(bfi != 0)        /* Bad frame */
          {
            
            parm[0] = Random(&seed_fer) & (Word16)0x1fff;     /* 13 bits random */
            parm[1] = Random(&seed_fer) & (Word16)0x000f;     /*  4 bits random */
          }
        Decod_ACELP(parm[1], parm[0], code);
        parm +=2;
        
        j = shl(sharp, 1);          /* From Q14 to Q15 */
        if(sub(T0, L_SUBFR) <0 ) {
          for (i = T0; i < L_SUBFR; i++) {
            code[i] = add(code[i], mult(code[i-T0], j));
          }
        }
        
        /*-------------------------------------------------*
         * - Decode pitch and codebook gains.              *
         *-------------------------------------------------*/
        
        index = *parm++;      /* index of energy VQ */
        
        Dec_gain(index, code, L_SUBFR, bfi, &gain_pitch, &gain_code);
        
        /*-------------------------------------------------------------*
         * - Update pitch sharpening "sharp" with quantized gain_pitch *
         *-------------------------------------------------------------*/
        
        sharp = gain_pitch;
        if (sub(sharp, SHARPMAX) > 0) { sharp = SHARPMAX;  }
        if (sub(sharp, SHARPMIN) < 0) { sharp = SHARPMIN;  }
        
        /*-------------------------------------------------------*
         * - Find the total excitation.                          *
         * - Find synthesis speech corresponding to exc[].       *
         *-------------------------------------------------------*/
        
        if(bfi != 0)        /* Bad frame */
          {
            if (voicing == 0 ) {
              g_p = 0;
              g_c = gain_code;
            } else {
              g_p = gain_pitch;
              g_c = 0;
            }
        } else {
          g_p = gain_pitch;
          g_c = gain_code;
        }
        for (i = 0; i < L_SUBFR;  i++)
          {
            /* exc[i] = g_p*exc[i] + g_c*code[i]; */
            /* exc[i]  in Q0   g_p in Q14         */
            /* code[i] in Q13  g_code in Q1       */
            
            L_temp = L_mult(exc[i+i_subfr], g_p);
            L_temp = L_mac(L_temp, code[i], g_c);
            L_temp = L_shl(L_temp, 1);
            exc[i+i_subfr] = round(L_temp);
          }
        
        Overflow = 0;
        Syn_filt(Az, &exc[i_subfr], &synth[i_subfr], L_SUBFR, mem_syn, 0);
        if(Overflow != 0)
          {
            /* In case of overflow in the synthesis          */
            /* -> Scale down vector exc[] and redo synthesis */
            
            for(i=0; i<PIT_MAX+L_INTERPOL+L_FRAME; i++)
              old_exc[i] = shr(old_exc[i], 2);
            
            Syn_filt(Az, &exc[i_subfr], &synth[i_subfr], L_SUBFR, mem_syn, 1);
          }
        else
          Copy(&synth[i_subfr+L_SUBFR-M], mem_syn, M);
        
        Az += MP1;    /* interpolated LPC parameters for next subframe */
      }
  }
  
  /*------------*
   *  For G729b
   *-----------*/
  if(bfi == 0) {
    L_temp = 0L;
    for(i=0; i<L_FRAME; i++) {
      L_temp = L_mac(L_temp, exc[i], exc[i]);
    } /* may overflow => last level of SID quantizer */
    sh_sid_sav = norm_l(L_temp);
    sid_sav = round(L_shl(L_temp, sh_sid_sav));
    sh_sid_sav = sub(16, sh_sid_sav);
  }

  /*--------------------------------------------------*
  * Update signal for next frame.                    *
  * -> shift to the left by L_FRAME  exc[]           *
  *--------------------------------------------------*/

  Copy(&old_exc[L_FRAME], &old_exc[0], PIT_MAX+L_INTERPOL);

  /* for G729b */
  past_ftyp = ftyp;

  return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品每日更新| 欧美xxxx老人做受| 一区二区在线免费| 色视频一区二区| 亚洲黄色在线视频| 3atv在线一区二区三区| 久久91精品国产91久久小草| 久久女同性恋中文字幕| 成人黄色综合网站| 一区二区三国产精华液| 欧美一区二区三区视频免费| 久久国产精品99精品国产| 国产亚洲制服色| 99久久国产综合精品麻豆| 亚洲一区二区精品视频| 精品精品欲导航| 丁香五精品蜜臀久久久久99网站 | 国产区在线观看成人精品| 99久免费精品视频在线观看 | 综合电影一区二区三区| 欧美日韩在线精品一区二区三区激情| 亚洲丰满少妇videoshd| 精品国产一区二区在线观看| a美女胸又www黄视频久久| 午夜视频一区二区三区| 国产亚洲欧美激情| 91国偷自产一区二区开放时间 | 亚洲人成伊人成综合网小说| 欧美久久久久久久久中文字幕| 久久99国产精品麻豆| 亚洲丝袜精品丝袜在线| 欧美tickle裸体挠脚心vk| 91女厕偷拍女厕偷拍高清| 久久91精品久久久久久秒播| 亚洲狼人国产精品| 久久久99精品免费观看| 欧美蜜桃一区二区三区| av日韩在线网站| 韩国在线一区二区| 亚洲.国产.中文慕字在线| 国产精品久久久久久久久久免费看 | 国产精品久线在线观看| 日韩欧美资源站| 色哟哟在线观看一区二区三区| 精品亚洲国内自在自线福利| 一区二区三区 在线观看视频| 国产日韩欧美高清在线| 91精品欧美综合在线观看最新| 99久久99久久精品国产片果冻| 久久国产视频网| 天堂在线亚洲视频| 亚洲女女做受ⅹxx高潮| 中文欧美字幕免费| 精品日产卡一卡二卡麻豆| 欧美高清视频一二三区| 91理论电影在线观看| 成年人午夜久久久| 成人免费视频播放| 国内精品视频666| 美女被吸乳得到大胸91| 视频一区二区三区入口| 亚洲成人午夜电影| 亚洲国产日韩a在线播放| 亚洲人成在线观看一区二区| 欧美激情一区三区| 欧美国产乱子伦| 久久久一区二区三区| 精品国一区二区三区| 欧美大片一区二区三区| 欧美电影免费观看高清完整版在线 | 精品国产亚洲在线| 欧美成人精品二区三区99精品| 欧美巨大另类极品videosbest | 国产亚洲一区二区三区在线观看 | 欧美tickling网站挠脚心| 91精品国产综合久久国产大片| 欧美图区在线视频| 欧美日韩亚洲综合一区| 在线免费观看不卡av| 在线欧美日韩国产| 精品视频免费在线| 欧美猛男男办公室激情| 欧美一区二区三区免费观看视频 | 色婷婷亚洲婷婷| 色久综合一二码| 欧美日韩亚洲综合| 日韩一本二本av| 精品国产乱码久久久久久免费| 久久久高清一区二区三区| 国产欧美日韩三区| 亚洲精品乱码久久久久久| 亚洲午夜久久久久中文字幕久| 偷拍一区二区三区四区| 久久99久久久久| 国产99精品国产| 色94色欧美sute亚洲线路一久| 欧美精品高清视频| 精品国产污网站| 亚洲日本丝袜连裤袜办公室| 亚洲永久精品大片| 青青草国产成人av片免费| 国产精品一区二区免费不卡| 99九九99九九九视频精品| 欧美日本一区二区在线观看| 精品国产乱码久久久久久免费| 国产精品国产三级国产aⅴ入口 | 亚洲精品久久嫩草网站秘色| 性做久久久久久免费观看| 国内精品嫩模私拍在线| 97久久精品人人做人人爽50路| 在线播放欧美女士性生活| 国产亚洲一区二区三区四区| 亚洲精品免费在线播放| 久久久亚洲高清| 亚洲永久精品大片| 成人免费看片app下载| 国产精品一区专区| 成人黄页毛片网站| 6080日韩午夜伦伦午夜伦| 久久日一线二线三线suv| 亚洲图片另类小说| 蜜臀av国产精品久久久久| www.色综合.com| 欧美成人激情免费网| 亚洲蜜臀av乱码久久精品| 国产在线播放一区三区四| 91久久精品国产91性色tv| 亚洲精品一区二区三区在线观看 | 久久久久久久久蜜桃| 亚洲精品欧美专区| 韩国v欧美v日本v亚洲v| 欧美性极品少妇| 国产精品视频你懂的| 久久精品国产一区二区三| 日本高清不卡在线观看| 日本一区二区电影| 毛片av中文字幕一区二区| 欧美色综合网站| 成人欧美一区二区三区小说 | 国产白丝精品91爽爽久久| 制服.丝袜.亚洲.中文.综合| 国产精品国产a级| 国产精品66部| 亚洲精品一线二线三线| 日韩va亚洲va欧美va久久| 欧美中文字幕亚洲一区二区va在线 | 欧美一区二区三区电影| 亚洲大片免费看| 色天天综合色天天久久| 国产精品国产三级国产aⅴ无密码| 精品一区二区免费看| 制服.丝袜.亚洲.中文.综合| 亚洲综合视频在线观看| 91麻豆国产香蕉久久精品| 国产精品你懂的在线| 国产成人午夜视频| 久久这里只有精品首页| 蜜桃传媒麻豆第一区在线观看| 欧美日韩视频在线观看一区二区三区 | 亚洲国产成人av好男人在线观看| 99视频一区二区| 国产精品素人视频| 成人黄色在线网站| 成人免费一区二区三区在线观看| 成人黄色av电影| 亚洲欧洲精品一区二区精品久久久| 国产成人精品免费网站| 欧美国产在线观看| 99热在这里有精品免费| 亚洲欧洲av一区二区三区久久| 成人激情电影免费在线观看| 国产精品久久久久天堂| 成人国产精品免费观看动漫| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 在线精品观看国产| 亚洲国产精品久久久久婷婷884| 欧美在线看片a免费观看| 亚洲444eee在线观看| 欧美一区二区在线视频| 精品一区二区在线看| 久久久美女毛片| www.欧美日韩国产在线| 亚洲综合激情网| 日韩欧美一级二级三级| 国产在线精品不卡| 综合久久综合久久| 欧美视频你懂的| 久久er99热精品一区二区| 国产视频视频一区| 91麻豆免费看| 午夜免费久久看| 久久精品夜色噜噜亚洲aⅴ| 成人av在线看| 五月综合激情日本mⅴ| 日韩欧美www| 不卡av在线免费观看| 亚洲成a人v欧美综合天堂下载| 日韩一区二区三区电影在线观看| 国产精品888| 亚洲高清不卡在线观看|