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

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

?? qsidlsf.c

?? G.729 coder and decoder, ANSI C, for windows, unix, DSP, etc.
?? C
字號:
/*
   ITU-T G.729 Annex B     ANSI-C Source Code
   Version 1.3    Last modified: August 1997

   Copyright (c) 1996, France Telecom, Rockwell International,
                       Universite de Sherbrooke.
   All rights reserved.
*/


#include <stdio.h>

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

/* local functions */
static void Qnt_e(Word16 *errlsf,    /* (i)  : error lsf vector             */
                  Word16 *weight,    /* (i)  : weighting vector             */
                  Word16 DIn,        /* (i)  : number of input candidates   */
                  Word16 *qlsf,      /* (o)  : quantized error lsf vector   */
                  Word16 *Pptr,      /* (o)  : predictor index              */
                  Word16 DOut,       /* (i)  : number of quantized vectors  */
                  Word16 *cluster,   /* (o)  : quantizer indices            */
                  Word16 *MS         /* (i)  : size of the quantizers       */
                  );

static void New_ML_search_1(Word16 *d_data,    /* (i) : error vector             */
                            Word16 J,          /* (i) : number of input vectors  */
                            Word16 *new_d_data,/* (o) : output vector            */
                            Word16 K,          /* (i) : number of candidates     */
                            Word16 *best_indx, /* (o) : best indices             */
                            Word16 *ptr_back,  /* (o) : pointer for backtracking */
                            Word16 *PtrTab,    /* (i) : quantizer table          */
                            Word16 MQ          /* (i) : size of quantizer        */
                            );

static void New_ML_search_2(Word16 *d_data,    /* (i) : error vector             */
                            Word16 *weight,    /* (i) : weighting vector         */
                            Word16 J,          /* (i) : number of input vectors  */
                            Word16 *new_d_data,/* (o) : output vector            */
                            Word16 K,          /* (i) : number of candidates     */
                            Word16 *best_indx, /* (o) : best indices             */
                            Word16 *ptr_prd,   /* (i) : pointer for backtracking */
                            Word16 *ptr_back,  /* (o) : pointer for backtracking */
                            Word16 PtrTab[2][16],/* (i) : quantizer table        */
                            Word16 MQ          /* (i) : size of quantizer        */
                            );


/*-----------------------------------------------------------------*
 * Functions lsfq_noise                                            *
 *           ~~~~~~~~~~                                            *
 * Input:                                                          *
 *   lsp[]         : unquantized lsp vector                        *
 *   freq_prev[][] : memory of the lsf predictor                   *
 *                                                                 *
 * Output:                                                         *
 *                                                                 *
 *   lspq[]        : quantized lsp vector                          * 
 *   ana[]         : indices                                       *
 *                                                                 *
 *-----------------------------------------------------------------*/
void lsfq_noise(Word16 *lsp, 
                Word16 *lspq, 
                Word16 freq_prev[MA_NP][M], 
                Word16 *ana
                )
{
  Word16 i, lsf[M], lsfq[M], weight[M], tmpbuf[M];
  Word16 MS[MODE]={32, 16}, Clust[MODE], mode, errlsf[M*MODE];

  /* convert lsp to lsf */
  Lsp_lsf2(lsp, lsf, M);

  /* spacing to ~100Hz */
  if (lsf[0] < L_LIMIT)
    lsf[0] = L_LIMIT;
  for (i=0 ; i < M-1 ; i++)
    if (sub(lsf[i+1], lsf[i]) < 2*GAP3) 
      lsf[i+1] = add(lsf[i], 2*GAP3);
  if (lsf[M-1] > M_LIMIT)
    lsf[M-1] = M_LIMIT;
  if (lsf[M-1] < lsf[M-2]) 
    lsf[M-2] = sub(lsf[M-1], GAP3);

  /* get the lsf weighting */
  Get_wegt(lsf, weight);
  
  /**********************/
  /* quantize the lsf's */
  /**********************/
  
  /* get the prediction error vector */
  for (mode=0; mode<MODE; mode++)
    Lsp_prev_extract(lsf, errlsf+mode*M, noise_fg[mode], freq_prev, 
                     noise_fg_sum_inv[mode]);

  /* quantize the lsf and get the corresponding indices */
  Qnt_e(errlsf, weight, MODE, tmpbuf, &mode, 1, Clust, MS);
  ana[0] = mode;
  ana[1] = Clust[0];
  ana[2] = Clust[1];

  /* guarantee minimum distance of 0.0012 (~10 in Q13) between tmpbuf[j]
     and tmpbuf[j+1] */
  Lsp_expand_1_2(tmpbuf, 10);

  /* compute the quantized lsf vector */
  Lsp_prev_compose(tmpbuf, lsfq, noise_fg[mode], freq_prev, 
                   noise_fg_sum[mode]);
  
  /* update the prediction memory */
  Lsp_prev_update(tmpbuf, freq_prev);
  
  /* lsf stability check */
  Lsp_stability(lsfq);

  /* convert lsf to lsp */
  Lsf_lsp2(lsfq, lspq, M);

}

static void Qnt_e(Word16 *errlsf,    /* (i)  : error lsf vector             */
                  Word16 *weight,    /* (i)  : weighting vector             */
                  Word16 DIn,        /* (i)  : number of input candidates   */
                  Word16 *qlsf,      /* (o)  : quantized error lsf vector   */
                  Word16 *Pptr,      /* (o)  : predictor index              */
                  Word16 DOut,       /* (i)  : number of quantized vectors  */
                  Word16 *cluster,   /* (o)  : quantizer indices            */
                  Word16 *MS         /* (i)  : size of the quantizers       */
)
{
  Word16 d_data[2][R_LSFQ*M], best_indx[2][R_LSFQ];
  Word16 ptr_back[2][R_LSFQ], ptr, i;

  New_ML_search_1(errlsf, DIn, d_data[0], 4, best_indx[0], ptr_back[0], 
                  PtrTab_1, MS[0]);
  New_ML_search_2(d_data[0], weight, 4, d_data[1], DOut, best_indx[1], 
                  ptr_back[0], ptr_back[1], PtrTab_2, MS[1]);
  
  /* backward path for the indices */
  cluster[1] = best_indx[1][0];
  ptr = ptr_back[1][0];
  cluster[0] = best_indx[0][ptr];

  /* this is the pointer to the best predictor */
  *Pptr = ptr_back[0][ptr];
  
  /* generating the quantized vector */
  Copy(lspcb1[PtrTab_1[cluster[0]]], qlsf, M);
  for (i=0; i<M/2; i++)
    qlsf[i] = add(qlsf[i], lspcb2[PtrTab_2[0][cluster[1]]][i]);
  for (i=M/2; i<M; i++)
    qlsf[i] = add(qlsf[i], lspcb2[PtrTab_2[1][cluster[1]]][i]);

}

static void New_ML_search_1(Word16 *d_data,    /* (i) : error vector             */
                            Word16 J,          /* (i) : number of input vectors  */
                            Word16 *new_d_data,/* (o) : output vector            */
                            Word16 K,          /* (i) : number of candidates     */
                            Word16 *best_indx, /* (o) : best indices             */
                            Word16 *ptr_back,  /* (o) : pointer for backtracking */
                            Word16 *PtrTab,    /* (i) : quantizer table          */
                            Word16 MQ          /* (i) : size of quantizer        */
)
{
  Word16 tmp, m, l, p, q, sum[R_LSFQ*R_LSFQ];
  Word16 min[R_LSFQ], min_indx_p[R_LSFQ], min_indx_m[R_LSFQ];
  Word32 acc0;

  for (q=0; q<K; q++)
    min[q] = MAX_16;

  /* compute the errors */
  for (p=0; p<J; p++)
    for (m=0; m<MQ; m++){
      acc0 = 0;
      for (l=0; l<M; l++){
        tmp = sub(d_data[p*M+l], lspcb1[PtrTab[m]][l]);
        acc0 = L_mac(acc0, tmp, tmp);
      }
      sum[p*MQ+m] = extract_h(acc0);
      sum[p*MQ+m] = mult(sum[p*MQ+m], Mp[p]);
    }
      
  /* select the candidates */
  for (q=0; q<K; q++){
    for (p=0; p<J; p++)
      for (m=0; m<MQ; m++)
        if (sub(sum[p*MQ+m], min[q]) < 0){
          min[q] = sum[p*MQ+m];
          min_indx_p[q] = p;
          min_indx_m[q] = m;
        }
    
    sum[min_indx_p[q]*MQ+min_indx_m[q]] = MAX_16;
  }

  /* compute the candidates */
  for (q=0; q<K; q++){
    for (l=0; l<M; l++)
      new_d_data[q*M+l] = sub(d_data[min_indx_p[q]*M+l], 
                              lspcb1[PtrTab[min_indx_m[q]]][l]);
    
    ptr_back[q] = min_indx_p[q];
    best_indx[q] = min_indx_m[q];
  }
}

static void New_ML_search_2(Word16 *d_data,    /* (i) : error vector             */
                            Word16 *weight,    /* (i) : weighting vector         */
                            Word16 J,          /* (i) : number of input vectors  */
                            Word16 *new_d_data,/* (o) : output vector            */
                            Word16 K,          /* (i) : number of candidates     */
                            Word16 *best_indx, /* (o) : best indices             */
                            Word16 *ptr_prd,   /* (i) : pointer for backtracking */
                            Word16 *ptr_back,  /* (o) : pointer for backtracking */
                            Word16 PtrTab[2][16],/* (i) : quantizer table        */
                            Word16 MQ          /* (i) : size of quantizer        */
)
{
  Word16 m, l, p, q, sum[R_LSFQ*R_LSFQ];
  Word16 min[R_LSFQ], min_indx_p[R_LSFQ], min_indx_m[R_LSFQ];
  Word16 tmp1, tmp2;
  Word32 acc0;

  for (q=0; q<K; q++)
    min[q] = MAX_16;

  /* compute the errors */
  for (p=0; p<J; p++)
    for (m=0; m<MQ; m++){
      acc0 = 0;
      for (l=0; l<M/2; l++){
        tmp1 = extract_h(L_shl(L_mult(noise_fg_sum[ptr_prd[p]][l], 
                                      noise_fg_sum[ptr_prd[p]][l]), 2));
        tmp1 = mult(tmp1, weight[l]);
        tmp2 = sub(d_data[p*M+l], lspcb2[PtrTab[0][m]][l]);
        tmp1 = extract_h(L_shl(L_mult(tmp1, tmp2), 3));
        acc0 = L_mac(acc0, tmp1, tmp2);
      }

      for (l=M/2; l<M; l++){
        tmp1 = extract_h(L_shl(L_mult(noise_fg_sum[ptr_prd[p]][l], 
                                      noise_fg_sum[ptr_prd[p]][l]), 2));
        tmp1 = mult(tmp1, weight[l]);
        tmp2 = sub(d_data[p*M+l], lspcb2[PtrTab[1][m]][l]);
        tmp1 = extract_h(L_shl(L_mult(tmp1, tmp2), 3));
        acc0 = L_mac(acc0, tmp1, tmp2);
      }
      
      sum[p*MQ+m] = extract_h(acc0);
    }
      
  /* select the candidates */
  for (q=0; q<K; q++){
    for (p=0; p<J; p++)
      for (m=0; m<MQ; m++)
        if (sub(sum[p*MQ+m], min[q]) < 0){
          min[q] = sum[p*MQ+m];
          min_indx_p[q] = p;
          min_indx_m[q] = m;
        }
    
    sum[min_indx_p[q]*MQ+min_indx_m[q]] = MAX_16;
  }

  /* compute the candidates */
  for (q=0; q<K; q++){
    for (l=0; l<M/2; l++)
      new_d_data[q*M+l] = sub(d_data[min_indx_p[q]*M+l], 
                              lspcb2[PtrTab[0][min_indx_m[q]]][l]);
    for (l=M/2; l<M; l++)
      new_d_data[q*M+l] = sub(d_data[min_indx_p[q]*M+l], 
                              lspcb2[PtrTab[1][min_indx_m[q]]][l]);
    
    ptr_back[q] = min_indx_p[q];
    best_indx[q] = min_indx_m[q];
  }
}












?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一二三四区| 91在线看国产| 精品久久久网站| 激情综合色播激情啊| 国产丝袜在线精品| jizz一区二区| 91最新地址在线播放| 亚洲欧洲精品一区二区精品久久久 | 国产精品色一区二区三区| 国产成a人无v码亚洲福利| 国产精品美女久久久久久| 91一区二区三区在线观看| 亚洲国产一区二区在线播放| 日韩欧美一级特黄在线播放| 国产91精品免费| 亚洲一区二区在线播放相泽| 日韩一区二区在线免费观看| 国产福利电影一区二区三区| 亚洲激情中文1区| 日韩一区二区在线看片| 成人免费观看av| 亚洲一线二线三线视频| 日韩美女主播在线视频一区二区三区| 国产精品一区二区91| 亚洲精品中文字幕在线观看| 欧美成人免费网站| 91小宝寻花一区二区三区| 日韩国产高清影视| 中文欧美字幕免费| 91麻豆精品国产自产在线观看一区 | 国产盗摄一区二区| 亚洲国产精品久久不卡毛片 | 国产欧美精品在线观看| 在线观看区一区二| 国产又黄又大久久| 亚洲国产日韩一区二区| 久久精品无码一区二区三区 | 亚洲综合视频在线观看| 日韩免费高清av| 色婷婷亚洲综合| 国产资源在线一区| 亚洲午夜私人影院| 国产欧美精品区一区二区三区| 欧美日本一区二区| 97国产一区二区| 国产美女娇喘av呻吟久久| 午夜影视日本亚洲欧洲精品| 欧美—级在线免费片| 欧美一区二区三区免费在线看| 91视频观看免费| 国产精品综合二区| 日本女人一区二区三区| 亚洲美女电影在线| 国产精品欧美综合在线| 欧美大片一区二区| 欧美日韩你懂得| 色天使久久综合网天天| 不卡视频在线看| 丰满少妇久久久久久久| 极品少妇xxxx精品少妇偷拍 | 亚洲午夜一二三区视频| 综合分类小说区另类春色亚洲小说欧美| 精品国产伦一区二区三区观看体验 | 丁香婷婷综合激情五月色| 蜜臀av一区二区在线免费观看| 亚洲国产一区在线观看| 亚洲在线一区二区三区| 亚洲免费在线视频一区 二区| 久久看人人爽人人| 久久综合网色—综合色88| 日韩欧美亚洲国产另类| 日韩欧美二区三区| 精品国产乱码久久久久久影片| 91精品国产综合久久久久久久 | 99久久99精品久久久久久| 成人精品视频一区二区三区| 国产成人午夜视频| 成人综合婷婷国产精品久久| 成人深夜福利app| 成人免费av在线| av高清久久久| 在线看不卡av| 精品视频一区二区不卡| 欧美日韩国产美| 91精品国产综合久久香蕉的特点| 日韩一区二区三区免费看 | 久久国产精品免费| 久久成人免费电影| 国产一区91精品张津瑜| 成人黄色片在线观看| 不卡一区中文字幕| 欧美亚洲尤物久久| 日韩欧美一区二区久久婷婷| 欧美精品一区在线观看| 国产清纯白嫩初高生在线观看91| 国产日韩成人精品| 国产精品久久久久久久久图文区| 亚洲免费看黄网站| 日本不卡一区二区三区高清视频| 精品一区在线看| 粉嫩aⅴ一区二区三区四区五区| jlzzjlzz亚洲日本少妇| 欧美偷拍一区二区| 精品日韩在线一区| 亚洲欧美日韩国产综合在线 | 欧美成人a在线| 中文字幕不卡在线观看| 一区二区三区不卡在线观看 | 欧美日韩在线亚洲一区蜜芽| 日韩视频在线一区二区| 国产精品视频一区二区三区不卡| 一区二区三区四区激情| 国模少妇一区二区三区| 色婷婷精品久久二区二区蜜臀av| 日韩美女一区二区三区| 亚洲视频一区二区免费在线观看 | 亚洲国产综合在线| 国产一区二区三区免费在线观看 | 风流少妇一区二区| 欧美日韩在线精品一区二区三区激情| 欧美不卡视频一区| 国产精品国产三级国产aⅴ原创 | 91尤物视频在线观看| 欧美一级爆毛片| 亚洲三级久久久| 国内偷窥港台综合视频在线播放| 色综合天天视频在线观看| 精品国精品国产| 亚洲综合久久av| 国产成人av一区| 91精品婷婷国产综合久久竹菊| 亚洲国产精品成人综合| 日韩av电影免费观看高清完整版在线观看 | 成人丝袜18视频在线观看| 日韩欧美一区在线| 一片黄亚洲嫩模| 成人毛片视频在线观看| 日韩一级视频免费观看在线| 一区av在线播放| 91丝袜美腿高跟国产极品老师| 久久综合久久99| 免费人成精品欧美精品| 欧美日韩大陆在线| 一区二区三区av电影| 粉嫩av一区二区三区在线播放 | 欧美日韩国产影片| 亚洲免费电影在线| 成人免费视频视频在线观看免费| 欧美mv和日韩mv的网站| 日韩精品五月天| 欧美日韩国产a| 亚洲图片自拍偷拍| 在线视频观看一区| 综合色天天鬼久久鬼色| 成+人+亚洲+综合天堂| 国产精品麻豆视频| 国产大陆亚洲精品国产| 日韩欧美不卡在线观看视频| 日本不卡一区二区三区| 9191国产精品| 蜜乳av一区二区三区| 欧美一区二区三区在线观看视频| 日本最新不卡在线| 欧美一级日韩一级| 免费久久99精品国产| 日韩欧美www| 九一九一国产精品| 久久久久久影视| 国产成人亚洲精品青草天美 | 一区二区欧美在线观看| 色噜噜狠狠成人网p站| 亚洲欧美另类久久久精品2019| 99精品久久99久久久久| 一区二区三区毛片| 欧美精品99久久久**| 日韩av不卡在线观看| 欧美电影精品一区二区| 国产精品主播直播| 国产精品国产精品国产专区不片| 99久久免费视频.com| 亚洲国产精品久久艾草纯爱 | 91精品在线免费| 久久99久国产精品黄毛片色诱| 26uuu色噜噜精品一区| 春色校园综合激情亚洲| 亚洲精品成人精品456| 欧美日韩国产三级| 国精产品一区一区三区mba视频| 国产亚洲一区二区三区四区| 99re成人精品视频| 日韩制服丝袜先锋影音| 精品久久久久久久人人人人传媒| 国产原创一区二区三区| 亚洲欧美另类图片小说| 欧美一区二区三区四区在线观看| 国产麻豆成人精品| 亚洲综合偷拍欧美一区色| 日韩精品最新网址| 一本到高清视频免费精品| 全国精品久久少妇|