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

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

?? cod_ld8k.c

?? g.729協議源代碼,c語言,直接可以應用(dsp定點化)
?? C
?? 第 1 頁 / 共 2 頁
字號:

/*
   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 Coder_ld8k and Init_Coder_ld8k                      *
 *             ~~~~~~~~~~     ~~~~~~~~~~~~~~~                      *
 *-----------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>

#include "typedef.h"
#include "basic_op.h"
#include "ld8k.h"
#include "tab_ld8k.h"
#include "oper_32b.h"
#include "vad.h"
#include "dtx.h"
#include "sid.h"

/*-----------------------------------------------------------*
 *    Coder constant parameters (defined in "ld8k.h")        *
 *-----------------------------------------------------------*
 *   L_WINDOW    : LPC analysis window size.                 *
 *   L_NEXT      : Samples of next frame needed for autocor. *
 *   L_FRAME     : Frame size.                               *
 *   L_SUBFR     : Sub-frame size.                           * 
 *   M           : LPC order.                                *
 *   MP1         : LPC order+1                               *
 *   L_TOTAL     : Total size of speech buffer.              *
 *   PIT_MIN     : Minimum pitch lag.                        *
 *   PIT_MAX     : Maximum pitch lag.                        *
 *   L_INTERPOL  : Length of filter for interpolation        *
 *-----------------------------------------------------------*/

/*--------------------------------------------------------*
 *         Static memory allocation(分配).                      *
 *--------------------------------------------------------*/

        /* Speech vector */

 static Word16 old_speech[L_TOTAL];
 static Word16 *speech, *p_window;
        Word16 *new_speech;                    /* Global variable */

                /* Weighted speech vector */

 static Word16 old_wsp[L_FRAME+PIT_MAX];
 static Word16 *wsp;

                /* Excitation vector */

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

        /* Zero vector */

 static Word16 ai_zero[L_SUBFR+MP1];
 static Word16 *zero;

                /* Lsp (Line spectral pairs) */

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

        /* Filter's memory */

 static Word16 mem_syn[M], mem_w0[M], mem_w[M];
 static Word16 mem_err[M+L_SUBFR], *error;
 static Word16 sharp;

 /* For G.729B */
 /* DTX variables */
 static Word16 pastVad;   
 static Word16 ppastVad;
 static Word16 seed;


/*-----------------------------------------------------------------*
 *   Function  Init_Coder_ld8k                                     *
 *            ~~~~~~~~~~~~~~~                                      *
 *                                                                 *
 *  Init_Coder_ld8k(void);                                         *
 *                                                                 *
 *   ->Initialization of variables for the coder section.          *
 *       - initialize pointers to speech buffer                    *
 *       - initialize static  pointers                             *
 *       - set static vectors to zero                              *
 *                                                                 *
 *-----------------------------------------------------------------*/

void Init_Coder_ld8k(void)
{

  /*----------------------------------------------------------------------*
  *      Initialize pointers to speech vector.                            *
  *                                                                       *
  *                                                                       *
  *   |--------------------|-------------|-------------|------------|     *
  *     previous speech           sf1           sf2         L_NEXT        *
  *                                                                       *
  *   <----------------  Total speech vector (L_TOTAL)   ----------->     *
  *   <----------------  LPC analysis window (L_WINDOW)  ----------->     *
  *   |                   <-- present frame (L_FRAME) -->                 *
  * old_speech            |              <-- new speech (L_FRAME) -->     *
  * p_window              |              |                                *
  *                     speech           |                                *
  *                             new_speech                                *
  *-----------------------------------------------------------------------*/

  new_speech = old_speech + L_TOTAL - L_FRAME;         /* New speech     */
                                   /*old_speech是指數組old_speech的首地址*/
  speech     = new_speech - L_NEXT;                    /* Present frame  */
  p_window   = old_speech + L_TOTAL - L_WINDOW;        /* For LPC window */

  /* Initialize static pointers */                     /*指針分配地址*/

  wsp    = old_wsp + PIT_MAX;
  exc    = old_exc + PIT_MAX + L_INTERPOL;
  zero   = ai_zero + MP1;
  error  = mem_err + M;

  /* Static vectors to zero */

  Set_zero(old_speech, L_TOTAL);                      /*清除數組中數據*/
  Set_zero(old_exc, PIT_MAX+L_INTERPOL);
  Set_zero(old_wsp, PIT_MAX);
  Set_zero(mem_syn, M);
  Set_zero(mem_w,   M);
  Set_zero(mem_w0,  M);
  Set_zero(mem_err, M);
  Set_zero(zero, L_SUBFR);
  sharp = SHARPMIN;                                   /*基音消減值*/

  /* Initialize lsp_old_q[] */
  Copy(lsp_old, lsp_old_q, M);                       /*copy(輸入,輸出,長度)*/
  Lsp_encw_reset();  /* ????*/
  Init_exc_err();

  /* For G.729B */
  /* Initialize VAD/DTX parameters */
  pastVad = 1;
  ppastVad = 1;
  seed = INIT_SEED;
  vad_init();
  Init_lsfq_noise();

 return;
}

/*-----------------------------------------------------------------*
 *   Functions Coder_ld8k                                          *
 *            ~~~~~~~~~~                                           *
 *  Coder_ld8k(Word16 ana[], Word16 synth[]);                      *
 *                                                                 *
 *   ->Main coder function.                                        *
 *                                                                 *
 *                                                                 *
 *  Input:                                                         *
 *                                                                 *
 *   80 speech data should have been copied to vector new_speech[].*
 *   This vector is global and is declared in this function.       *
 *                                                                 *
 *  Ouputs:                                                        *
 *                                                                 *
 *    ana[]      ->analysis parameters.                            *
 *    synth[]    ->Local synthesis (for debug purpose)             *
 *                                                                 *
 *-----------------------------------------------------------------*/

void Coder_ld8k(
     Word16 ana[],      /* output  : Analysis parameters */
     Word16 synth[],    /* output  : Local synthesis     */
     Word16 frame,      /* input   : frame counter       */
     Word16 vad_enable  /* input   : VAD enable flag     */         
)
{

  /* LPC analysis */

  Word16 r_l[NP+1], r_h[NP+1];     /* Autocorrelations low and hi          */
  Word16 rc[M];                    /* Reflection coefficients.             */
  Word16 A_t[(MP1)*2];             /* A(z) unquantized for the 2 subframes */
  Word16 Aq_t[(MP1)*2];            /* A(z)   quantized for the 2 subframes */
  Word16 Ap1[MP1];                 /* A(z) with spectral expansion         */
  Word16 Ap2[MP1];                 /* A(z) with spectral expansion         */
  Word16 *A, *Aq;                  /* Pointer on A_t and Aq_t              */
  Word16 lsp_new[M], lsp_new_q[M]; /* LSPs at 2th subframe                 */
  Word16 lsf_int[M];               /* Interpolated LSF 1st subframe.       */
  Word16 lsf_new[M];
  Word16 gamma1[2], gamma2[2];     /* Weighting factor for the 2 subframes */

  /* Other vectors */

  Word16 h1[L_SUBFR];            /* Impulse response h1[]              */
  Word16 xn[L_SUBFR];            /* Target vector for pitch search     */
  Word16 xn2[L_SUBFR];           /* Target vector for codebook search  */
  Word16 code[L_SUBFR];          /* Fixed codebook excitation          */
  Word16 y1[L_SUBFR];            /* Filtered adaptive excitation       */
  Word16 y2[L_SUBFR];            /* Filtered fixed codebook excitation */
  Word16 g_coeff[4];             /* Correlations between xn & y1       */

  Word16 g_coeff_cs[5];
  Word16 exp_g_coeff_cs[5];      /* Correlations between xn, y1, & y2
                                     <y1,y1>, -2<xn,y1>,
                                          <y2,y2>, -2<xn,y2>, 2<y1,y2> */
  /* Scalars */

  Word16 i, j, k, i_subfr, i_gamma;
  Word16 T_op, T0, T0_min, T0_max, T0_frac;
  Word16 gain_pit, gain_code, index;
  Word16 temp;
  Word32 L_temp;

  /* For G.729B */
  Word16 rh_nbe[MP1];             
  Word16 lsfq_mem[MA_NP][M];
  Word16 exp_R0, Vad;
  
/*------------------------------------------------------------------------*
 *  - Perform LPC analysis:                                               *
 *       * autocorrelation + lag windowing                                *
 *       * Levinson-durbin algorithm to find a[]                          *
 *       * convert a[] to lsp[]                                           *
 *       * quantize and code the LSPs                                     *
 *       * find the interpolated LSPs and convert to a[] for the 2        *
 *         subframes (both quantized and unquantized)                     *
 *------------------------------------------------------------------------*/

  /* LP analysis */
  Autocorr(p_window, NP, r_h, r_l, &exp_R0);    /* Autocorrelations */
  Copy(r_h, rh_nbe, MP1);
  Lag_window(NP, r_h, r_l);                     /* Lag windowing    */
  Levinson(r_h, r_l, &A_t[MP1], rc, &temp);     /* Levinson Durbin  */
  Az_lsp(&A_t[MP1], lsp_new, lsp_old);          /* From A(z) to lsp */

  /* For G.729B */
  /* ------ VAD ------- */
  Lsp_lsf(lsp_new, lsf_new, M);
  vad(rc[1], lsf_new, r_h, r_l, exp_R0, p_window, frame, 
      pastVad, ppastVad, &Vad);
  Update_cng(rh_nbe, exp_R0, Vad);

  /*--------------------------------------------------------------------*
   * Find interpolated LPC parameters in all subframes (unquantized)    *
   * The interpolated parameters are in array A_t[] of size (M+1)*4     *
   *--------------------------------------------------------------------*/
  Int_lpc(lsp_old, lsp_new, lsf_int, lsf_new,  A_t);
  for (i=0; i<M; i++) lsp_old[i] = lsp_new[i];

  /*----------------------------------------------------------------------*
  * - Find the weighting factors                                         *
  *----------------------------------------------------------------------*/
  perc_var(gamma1, gamma2, lsf_int, lsf_new, rc);

 /*----------------------------------------------------------------------*
  * - Find the weighted input speech w_sp[] for the whole speech frame   *
  *----------------------------------------------------------------------*/
  Weight_Az(&A_t[0], gamma1[0], M, Ap1);
  Weight_Az(&A_t[0], gamma2[0], M, Ap2);
  Residu(Ap1, &speech[0], &wsp[0], L_SUBFR);
  Syn_filt(Ap2, &wsp[0], &wsp[0], L_SUBFR, mem_w, 1);

  Weight_Az(&A_t[MP1], gamma1[1], M, Ap1);
  Weight_Az(&A_t[MP1], gamma2[1], M, Ap2);
  Residu(Ap1, &speech[L_SUBFR], &wsp[L_SUBFR], L_SUBFR);
  Syn_filt(Ap2, &wsp[L_SUBFR], &wsp[L_SUBFR], L_SUBFR, mem_w, 1);

  /* ---------------------- */
  /* Case of Inactive frame */
  /* ---------------------- */
  
  if ((Vad == 0) && (vad_enable == 1)){
    Get_freq_prev(lsfq_mem);
    Cod_cng(exc, pastVad, lsp_old_q, Aq_t, ana, lsfq_mem, &seed);
    Update_freq_prev(lsfq_mem);
    ppastVad = pastVad;
    pastVad = Vad;

    /* UPDATE wsp, mem_w, mem_syn, mem_err, and mem_w0 */
    A  = A_t;     /* pointer to interpolated LPC parameters           */
    Aq = Aq_t;    /* pointer to interpolated quantized LPC parameters */
    i_gamma = 0;
    for(i_subfr=0; i_subfr < L_FRAME; i_subfr += L_SUBFR) {
      Weight_Az(A, gamma1[i_gamma], M, Ap1);
      Weight_Az(A, gamma2[i_gamma], M, Ap2);
      i_gamma = add(i_gamma,1);

      /* update mem_syn */
      Syn_filt(Aq, &exc[i_subfr], &synth[i_subfr], L_SUBFR, mem_syn, 1);

      /* update mem_w0 */
      for (i=0; i<L_SUBFR; i++)
        error[i] = sub(speech[i_subfr+i], synth[i_subfr+i]);
      Residu(Ap1, error, xn, L_SUBFR);
      Syn_filt(Ap2, xn, xn, L_SUBFR, mem_w0, 1);

      /* update mem_err */
      for (i = L_SUBFR-M, j = 0; i < L_SUBFR; i++, j++)
        mem_err[j] = error[i];
       
      A  += MP1;
      Aq += MP1;
    }
    
    sharp = SHARPMIN;
    
    /* Update memories for next frames */
    Copy(&old_speech[L_FRAME], &old_speech[0], L_TOTAL-L_FRAME);
    Copy(&old_wsp[L_FRAME], &old_wsp[0], PIT_MAX);
    Copy(&old_exc[L_FRAME], &old_exc[0], PIT_MAX+L_INTERPOL);
    
    return;

  }  /* End of inactive frame case */
    
  /* -------------------- */
  /* Case of Active frame */
  /* -------------------- */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天丁香久久| 精品久久久久久久久久久院品网| 国产精品人成在线观看免费| 国产成人免费网站| 日韩毛片精品高清免费| 在线观看国产一区二区| 天天综合网天天综合色| 精品剧情v国产在线观看在线| 国产一区啦啦啦在线观看| 国产精品乱码人人做人人爱| 91网站在线观看视频| 亚洲国产成人高清精品| 欧美大片拔萝卜| av动漫一区二区| 亚洲成人福利片| 久久精品视频网| 成人黄色片在线观看| 亚洲福利一区二区三区| 欧美精品一区二区三区一线天视频| 亚洲午夜在线观看视频在线| 91麻豆.com| 秋霞电影网一区二区| 中文字幕二三区不卡| 欧美美女一区二区三区| 国产很黄免费观看久久| 亚洲午夜精品一区二区三区他趣| 精品国产亚洲在线| 91黄色激情网站| 久久精品99国产国产精| 亚洲欧美经典视频| 精品久久久久久无| 欧美在线免费视屏| 国产在线看一区| 一区二区三区四区精品在线视频| 日韩三级精品电影久久久 | 韩国视频一区二区| 一区二区三区在线免费| 久久久久久免费网| 欧美精品三级在线观看| 大白屁股一区二区视频| 久久国产精品72免费观看| 一区二区欧美在线观看| 国产精品无码永久免费888| 欧美一级高清大全免费观看| 91影视在线播放| 国产黄人亚洲片| 老司机免费视频一区二区| 一片黄亚洲嫩模| 欧美成人精品福利| 欧美日韩一区二区三区四区五区| 成人在线一区二区三区| 精品制服美女久久| 日韩精品成人一区二区三区| 国产精品麻豆欧美日韩ww| 日韩精品一区二区三区swag| 欧美人牲a欧美精品| 在线视频你懂得一区| 成人黄色小视频| 福利一区二区在线| 久久精品国内一区二区三区| 日韩国产欧美在线视频| 无码av免费一区二区三区试看| 亚洲欧美日韩久久精品| 国产精品美女久久久久久| 久久久不卡影院| 久久久国产精品麻豆| 久久久蜜臀国产一区二区| 精品国产不卡一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 欧美精品vⅰdeose4hd| 欧美日韩第一区日日骚| 在线成人免费视频| 欧美一区二区三区在线观看视频| 欧美日韩免费高清一区色橹橹 | 亚洲自拍欧美精品| 一区二区三区久久久| 亚洲图片欧美视频| 天堂成人免费av电影一区| 日本成人在线网站| 麻豆国产精品777777在线| 久久99精品国产91久久来源| 黄色小说综合网站| 国产成人精品www牛牛影视| 处破女av一区二区| 91尤物视频在线观看| 欧美亚洲国产一区在线观看网站| 在线观看亚洲精品视频| 51精品秘密在线观看| 日韩视频在线你懂得| 国产午夜精品在线观看| 《视频一区视频二区| 亚洲综合在线观看视频| 亚洲国产成人av| 狠狠色综合色综合网络| 成人高清视频在线| 欧美三级电影精品| 日韩一区二区精品在线观看| 久久久久久久综合| 亚洲人成亚洲人成在线观看图片| 午夜免费久久看| 久久精品国产免费| 不卡一区二区三区四区| 欧美三级三级三级| 久久精品亚洲精品国产欧美| 亚洲精品视频在线| 奇米一区二区三区av| 不卡在线观看av| 日韩一级高清毛片| 中文字幕精品一区| 偷拍与自拍一区| 国产成人午夜精品影院观看视频 | 国产精品国产自产拍在线| 亚洲午夜久久久久久久久电影网| 精品亚洲porn| 色悠久久久久综合欧美99| 欧美哺乳videos| 一区二区在线观看av| 激情深爱一区二区| 欧美日韩免费观看一区二区三区 | 亚洲少妇中出一区| 麻豆成人在线观看| 色悠悠亚洲一区二区| 26uuu欧美| 天堂精品中文字幕在线| 成人国产在线观看| 精品欧美乱码久久久久久1区2区| 亚洲精品欧美二区三区中文字幕| 精品一区二区日韩| 欧美日韩三级一区| 亚洲视频狠狠干| 国产99久久久国产精品| 日韩色在线观看| 天天综合色天天综合| 一本大道av伊人久久综合| 国产色爱av资源综合区| 伦理电影国产精品| 精品视频一区二区三区免费| 亚洲欧洲av另类| 从欧美一区二区三区| 精品国产麻豆免费人成网站| 首页欧美精品中文字幕| 日本精品视频一区二区| 国产精品久久久久一区二区三区共| 麻豆一区二区三| 91麻豆精品国产无毒不卡在线观看 | **欧美大码日韩| 高清不卡一区二区| 久久久久久久久久久99999| 日韩av电影一区| 69久久99精品久久久久婷婷| 亚洲电影你懂得| 欧美在线观看一二区| 亚洲女性喷水在线观看一区| 成人免费黄色在线| 中文幕一区二区三区久久蜜桃| 久久99国产精品久久99| 精品日韩一区二区三区免费视频| 午夜电影网亚洲视频| 欧美挠脚心视频网站| 亚洲a一区二区| 在线不卡免费av| 日本欧美一区二区| 欧美精品v日韩精品v韩国精品v| 午夜精品久久久久久久99樱桃| 欧美在线视频日韩| 偷拍与自拍一区| 日韩一级大片在线| 精品一区二区在线看| 国产亚洲精品久| 成人在线综合网站| 亚洲欧美日韩人成在线播放| 在线观看一区日韩| 日韩精品一二区| 精品国产一区二区三区av性色| 国产一区二区日韩精品| 久久精品亚洲麻豆av一区二区 | 青青青伊人色综合久久| 欧美一区二区三区系列电影| 精品一区二区综合| 欧美国产激情二区三区| 色综合 综合色| 视频一区二区欧美| 精品久久久久久久人人人人传媒| 韩国女主播一区二区三区| 国产精品青草久久| 欧美这里有精品| 久久99精品久久久久久动态图| 久久久91精品国产一区二区精品| www.成人在线| 亚洲福利视频一区二区| 精品国产一区二区亚洲人成毛片 | 欧美电影在哪看比较好| 国产又黄又大久久| 亚洲男人天堂av| 日韩一级免费观看| 99国产精品久| 日本在线播放一区二区三区| 国产欧美一区二区三区在线看蜜臀| 色综合天天天天做夜夜夜夜做| 日本最新不卡在线|