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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? qsidlsf.c

?? ITU-T G.729B標(biāo)準(zhǔn)源代碼編碼端
?? C
字號(hào):
/*
   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];
  }
}












?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜a成v人精品| 在线一区二区观看| 国产精品私人自拍| 日韩一区二区高清| 美腿丝袜亚洲色图| 久久久亚洲综合| youjizz国产精品| 亚洲va国产天堂va久久en| 欧美精品乱码久久久久久按摩| 久久99精品久久久久久动态图| 久久久午夜电影| 色网综合在线观看| 免费在线观看一区二区三区| 久久久久久亚洲综合影院红桃| 97se亚洲国产综合自在线不卡| 亚洲电影一区二区三区| 亚洲精品一区在线观看| 色噜噜狠狠一区二区三区果冻| 麻豆一区二区99久久久久| 国产精品卡一卡二卡三| 538在线一区二区精品国产| 成人黄色av网站在线| 日产精品久久久久久久性色| 国产精品私人自拍| 欧美一级欧美一级在线播放| 91免费看片在线观看| 美女www一区二区| 亚洲一区二区三区四区在线 | 日韩中文欧美在线| 国产精品伦一区| 欧美大白屁股肥臀xxxxxx| 欧美系列在线观看| 91亚洲国产成人精品一区二区三 | 精品中文av资源站在线观看| 亚洲品质自拍视频| 日本一区二区电影| 日韩精品一区二区三区中文不卡 | av一区二区三区在线| 韩国成人精品a∨在线观看| 午夜精品一区二区三区电影天堂 | 不卡av在线免费观看| 青青草精品视频| 欧美精品一区二区三区蜜桃视频| 日本美女一区二区三区视频| 亚洲综合免费观看高清在线观看| 国产精品毛片久久久久久久| 久久亚洲精华国产精华液 | 国产精品一区二区视频| 久久精品国产99久久6| 婷婷综合在线观看| 欧美亚洲禁片免费| 国产精品一区二区在线播放| 久久综合网色—综合色88| 丰满放荡岳乱妇91ww| 国产精品一二三四| 成人美女视频在线观看| 成人激情图片网| 色综合天天在线| 精品视频一区三区九区| 3d成人动漫网站| 不卡的电影网站| 欧美在线999| 51精品秘密在线观看| 欧美精品一区二| 国产精品福利在线播放| 一区二区三区在线免费视频| 午夜精品久久久久久久久| 国产精品夫妻自拍| 亚洲一区二区三区美女| 蜜桃传媒麻豆第一区在线观看| 久久99久久99| 成人18精品视频| 欧美日韩一区成人| 久久久国产精华| 国产精品色哟哟| 日韩免费电影网站| 亚洲天堂精品视频| 婷婷夜色潮精品综合在线| 国产综合色产在线精品| 在线视频你懂得一区| 精品国产一区二区三区四区四| 亚洲三级久久久| 日本一区二区免费在线观看视频| 亚洲男人电影天堂| 国产一区二区三区精品视频| 色综合欧美在线视频区| 国产日本欧洲亚洲| 视频一区二区三区在线| av福利精品导航| 91丨porny丨蝌蚪视频| 精品日韩在线一区| 亚洲五码中文字幕| 成人激情免费网站| 亚洲精品在线观看网站| 偷拍亚洲欧洲综合| 91激情五月电影| 中文字幕一区二区三区av| 亚洲激情av在线| 从欧美一区二区三区| 精品久久久网站| 天天综合色天天综合色h| 一本大道久久a久久综合| 国产亚洲自拍一区| 紧缚奴在线一区二区三区| 在线成人小视频| 午夜国产精品影院在线观看| 色拍拍在线精品视频8848| 国产精品视频第一区| 福利一区福利二区| 久久精品人人爽人人爽| 国产福利精品导航| 久久久av毛片精品| 国产精品一区二区三区网站| 精品91自产拍在线观看一区| 国产一区日韩二区欧美三区| 久久亚洲精品国产精品紫薇| 国产大陆a不卡| 中文字幕在线不卡国产视频| 成人av电影在线观看| 亚洲欧洲av在线| 欧美三级三级三级爽爽爽| 婷婷一区二区三区| 亚洲精品一区二区精华| 丰满放荡岳乱妇91ww| 欧美日本精品一区二区三区| 日日欢夜夜爽一区| 欧美变态口味重另类| 懂色av一区二区夜夜嗨| 欧美在线色视频| 老司机精品视频导航| 中文字幕免费观看一区| 欧美最新大片在线看| 午夜精品久久久久久久99水蜜桃 | 91国产免费观看| 亚洲成av人片www| 精品第一国产综合精品aⅴ| 99视频精品全部免费在线| 亚洲一区欧美一区| 99热99精品| 秋霞影院一区二区| 中文字幕的久久| 欧美日韩精品三区| 国产精品亚洲人在线观看| 中文字幕日韩av资源站| 欧美一区二区三区四区高清| a级高清视频欧美日韩| 麻豆精品新av中文字幕| 1区2区3区国产精品| 亚洲精品一线二线三线无人区| 日本高清不卡一区| 成人免费观看视频| 久久狠狠亚洲综合| 亚洲第四色夜色| 中文字幕一区二区三区视频| 久久免费精品国产久精品久久久久| 欧美午夜不卡在线观看免费| www.av亚洲| 国产精品123区| 极品少妇一区二区| 日本色综合中文字幕| 亚洲一区二区三区自拍| 亚洲免费av网站| 欧美国产成人精品| 国产亚洲综合性久久久影院| 欧美成人国产一区二区| 欧美一区二区黄色| 欧美精品在欧美一区二区少妇| 在线免费亚洲电影| 91理论电影在线观看| 91日韩一区二区三区| 91免费视频观看| 91国偷自产一区二区三区成为亚洲经典| 丰满少妇在线播放bd日韩电影| 国产91精品在线观看| 亚洲小少妇裸体bbw| 日韩国产在线观看| 日韩av一级电影| 最新热久久免费视频| 成人免费在线播放视频| 一区二区三区国产豹纹内裤在线| 亚洲免费观看在线视频| 亚洲免费观看高清| 亚洲va欧美va人人爽| 久久精品国产亚洲5555| 韩国毛片一区二区三区| 成人精品视频.| 欧美日韩专区在线| 精品国内片67194| 中文字幕亚洲一区二区av在线 | 韩国三级中文字幕hd久久精品| 韩国成人福利片在线播放| 成人午夜私人影院| 欧美在线观看视频一区二区三区 | 国产成人av资源| 色噜噜狠狠成人网p站| 日韩欧美的一区| 最近日韩中文字幕| 日韩精品电影在线| 成人avav影音| 日韩欧美一二三四区|