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

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

?? vq.c

?? speech echo cancellation library
?? C
字號:
/* (C) 2007 Jean-Marc Valin, CSIRO*//*   Redistribution and use in source and binary forms, with or without   modification, are permitted provided that the following conditions   are met:      - Redistributions of source code must retain the above copyright   notice, this list of conditions and the following disclaimer.      - Redistributions in binary form must reproduce the above copyright   notice, this list of conditions and the following disclaimer in the   documentation and/or other materials provided with the distribution.      - Neither the name of the Xiph.org Foundation nor the names of its   contributors may be used to endorse or promote products derived from   this software without specific prior written permission.      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/#include <math.h>#include <stdlib.h>#include "cwrs.h"#include "vq.h"/* Improved algebraic pulse-base quantiser. The signal x is replaced by the sum of the pitch    a combination of pulses such that its norm is still equal to 1. The only difference with    the quantiser above is that the search is more complete. */void alg_quant(float *x, int N, int K, float *p, ec_enc *enc){   int L = 5;   //float tata[200];   float y[L][N];   int iy[L][N];   //float tata2[200];   float ny[L][N];   int iny[L][N];   int i, j, m;   float xy[L], nxy[L];   float yy[L], nyy[L];   float yp[L], nyp[L];   float best_scores[L];   float Rpp=0, Rxp=0;   float gain[L];   int maxL = 1;   float alpha = .9;      for (j=0;j<N;j++)      Rpp += p[j]*p[j];   //if (Rpp>.01)   //   alpha = (1-sqrt(1-Rpp))/Rpp;   for (j=0;j<N;j++)      Rxp += x[j]*p[j];   for (m=0;m<L;m++)      for (i=0;i<N;i++)         y[m][i] = 0;         for (m=0;m<L;m++)      for (i=0;i<N;i++)         ny[m][i] = 0;   for (m=0;m<L;m++)      for (i=0;i<N;i++)         iy[m][i] = iny[m][i] = 0;   for (m=0;m<L;m++)      xy[m] = yy[m] = yp[m] = gain[m] = 0;      for (i=0;i<K;i++)   {      int L2 = L;      if (L>maxL)      {         L2 = maxL;         maxL *= N;      }      for (m=0;m<L;m++)         best_scores[m] = -1e10;      for (m=0;m<L2;m++)      {         for (j=0;j<N;j++)         {            int sign;            for (sign=-1;sign<=1;sign+=2)            {               if (iy[m][j]*sign < 0)                  continue;               //fprintf (stderr, "%d/%d %d/%d %d/%d\n", i, K, m, L2, j, N);               float tmp_xy, tmp_yy, tmp_yp;               float score;               float g;               float s = sign;               tmp_xy = xy[m] + s*x[j]               - alpha*s*p[j]*Rxp;               tmp_yy = yy[m] + 2*s*y[m][j] + 1      +alpha*alpha*p[j]*p[j]*Rpp - 2*alpha*s*p[j]*yp[m] - 2*alpha*p[j]*p[j];               tmp_yp = yp[m] + s*p[j]               *(1-alpha*Rpp);               g = (sqrt(tmp_yp*tmp_yp + tmp_yy - tmp_yy*Rpp) - tmp_yp)/tmp_yy;               score = 2*g*tmp_xy - g*g*tmp_yy;               if (score>best_scores[L-1])               {                  int k, n;                  int id = L-1;                  while (id > 0 && score > best_scores[id-1])                     id--;                                 for (k=L-1;k>id;k--)                  {                     nxy[k] = nxy[k-1];                     nyy[k] = nyy[k-1];                     nyp[k] = nyp[k-1];                     //fprintf(stderr, "%d %d \n", N, k);                     for (n=0;n<N;n++)                        ny[k][n] = ny[k-1][n];                     for (n=0;n<N;n++)                        iny[k][n] = iny[k-1][n];                     gain[k] = gain[k-1];                     best_scores[k] = best_scores[k-1];                  }                  nxy[id] = tmp_xy;                  nyy[id] = tmp_yy;                  nyp[id] = tmp_yp;                  gain[id] = g;                  for (n=0;n<N;n++)                     ny[id][n] = y[m][n];                  ny[id][j] += s;                  for (n=0;n<N;n++)                     ny[id][n] -= alpha*s*p[j]*p[n];                                 for (n=0;n<N;n++)                     iny[id][n] = iy[m][n];                  if (s>0)                     iny[id][j] += 1;                  else                     iny[id][j] -= 1;                  best_scores[id] = score;               }            }            }               }      int k,n;      for (k=0;k<L;k++)      {         xy[k] = nxy[k];         yy[k] = nyy[k];         yp[k] = nyp[k];         for (n=0;n<N;n++)            y[k][n] = ny[k][n];         for (n=0;n<N;n++)            iy[k][n] = iny[k][n];      }   }      for (i=0;i<N;i++)      x[i] = p[i]+gain[0]*y[0][i];   if (0) {      float E=1e-15;      int ABS = 0;      for (i=0;i<N;i++)         ABS += abs(iy[0][i]);      //if (K != ABS)      //   printf ("%d %d\n", K, ABS);      for (i=0;i<N;i++)         E += x[i]*x[i];      //printf ("%f\n", E);      E = 1/sqrt(E);      for (i=0;i<N;i++)         x[i] *= E;   }   int comb[K];   int signs[K];   //for (i=0;i<N;i++)   //   printf ("%d ", iy[0][i]);   pulse2comb(N, K, comb, signs, iy[0]);    ec_enc_uint(enc,icwrs(N, K, comb, signs),ncwrs(N, K));}static const float pg[5] = {1.f, .82f, .75f, 0.7f, 0.6f};/* Finds the right offset into Y and copy it */void copy_quant(float *x, int N, int K, float *Y, int B, int N0, ec_enc *enc){   int i,j;   int best=0;   float best_score=0;   float s = 1;   int sign;   float E;   for (i=0;i<N0*B-N;i+=B)   {      int j;      float xy=0, yy=0;      float score;      for (j=0;j<N;j++)      {         xy += x[j]*Y[i+j];         yy += Y[i+j]*Y[i+j];      }      score = xy*xy/(.001+yy);      if (score > best_score)      {         best_score = score;         best = i;         if (xy>0)            s = 1;         else            s = -1;      }   }   if (s<0)      sign = 1;   else      sign = 0;   //printf ("%d %d ", sign, best);   ec_enc_uint(enc,sign,2);   ec_enc_uint(enc,best/B,N0-N/B);   //printf ("%d %f\n", best, best_score);   if (K==0)   {      E = 1e-10;      for (j=0;j<N;j++)      {         x[j] = s*Y[best+j];         E += x[j]*x[j];      }      E = 1/sqrt(E);      for (j=0;j<N;j++)         x[j] *= E;   } else {      float P[N];      float pred_gain;      if (K>4)         pred_gain = .5;      else         pred_gain = pg[K];      E = 1e-10;      for (j=0;j<N;j++)      {         P[j] = s*Y[best+j];         E += P[j]*P[j];      }      E = .8/sqrt(E);      for (j=0;j<N;j++)         P[j] *= E;      alg_quant(x, N, K, P, enc);   }}void alg_unquant(float *x, int N, int K, float *p, ec_dec *dec){   int i;   unsigned int id;   int comb[K];   int signs[K];   int iy[N];   float y[N];   float alpha = .9;   float Rpp=0, Ryp=0, Ryy=0;   float g;      id = ec_dec_uint(dec, ncwrs(N, K));   cwrsi(N, K, id, comb, signs);   comb2pulse(N, K, iy, comb, signs);   //for (i=0;i<N;i++)   //   printf ("%d ", iy[i]);   for (i=0;i<N;i++)      Rpp += p[i]*p[i];   for (i=0;i<N;i++)      Ryp += iy[i]*p[i];   for (i=0;i<N;i++)      y[i] = iy[i] - alpha*Ryp*p[i];      /* Recompute after the projection (I think it's right) */   Ryp = 0;   for (i=0;i<N;i++)      Ryp += y[i]*p[i];      for (i=0;i<N;i++)      Ryy += y[i]*y[i];   g = (sqrt(Ryp*Ryp + Ryy - Ryy*Rpp) - Ryp)/Ryy;      for (i=0;i<N;i++)      x[i] = p[i] + g*y[i];}void copy_unquant(float *x, int N, int K, float *Y, int B, int N0, ec_dec *dec){   int j;   int sign;   float s;   int best;   float E;   sign = ec_dec_uint(dec, 2);   if (sign == 0)      s = 1;   else      s = -1;      best = B*ec_dec_uint(dec, N0-N/B);   //printf ("%d %d ", sign, best);   if (K==0)   {      E = 1e-10;      for (j=0;j<N;j++)      {         x[j] = s*Y[best+j];         E += x[j]*x[j];      }      E = 1/sqrt(E);      for (j=0;j<N;j++)         x[j] *= E;   } else {      float P[N];      float pred_gain;      if (K>4)         pred_gain = .5;      else         pred_gain = pg[K];      E = 1e-10;      for (j=0;j<N;j++)      {         P[j] = s*Y[best+j];         E += P[j]*P[j];      }      E = .8/sqrt(E);      for (j=0;j<N;j++)         P[j] *= E;      alg_unquant(x, N, K, P, dec);   }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品另类一区| 日韩免费观看高清完整版在线观看| 美女在线视频一区| 视频一区欧美日韩| 亚洲香肠在线观看| 性做久久久久久免费观看| 午夜激情久久久| 青青草原综合久久大伊人精品| 男人的j进女人的j一区| 久久精品国产网站| 国产99精品国产| 色欧美片视频在线观看| 欧美猛男超大videosgay| 91精品国产高清一区二区三区 | 精品一区二区国语对白| 国产一区二区三区精品视频| 成人av资源网站| 日本精品一级二级| 日韩一区二区三区四区| 久久久久久亚洲综合影院红桃| 日韩理论片网站| 夜夜嗨av一区二区三区中文字幕| 性久久久久久久久久久久| 美女爽到高潮91| 99在线精品一区二区三区| 欧美午夜宅男影院| 久久在线免费观看| 亚洲精品国产a久久久久久 | 欧美一卡二卡三卡| 久久亚洲影视婷婷| 亚洲精品午夜久久久| 日本91福利区| 99热精品一区二区| 日韩免费观看高清完整版在线观看| 国产午夜精品一区二区三区嫩草| 又紧又大又爽精品一区二区| 久久精品国产精品亚洲精品| 99久久精品国产导航| 日韩精品在线一区二区| 亚洲欧美国产三级| 裸体健美xxxx欧美裸体表演| 91同城在线观看| 91精品国产综合久久小美女| 亚洲欧洲99久久| 国内成人精品2018免费看| 欧美日韩中文另类| 国产精品色眯眯| 九九精品一区二区| 欧美影院一区二区| 国产精品久久久久久久久果冻传媒| 日本不卡视频一二三区| 欧洲国内综合视频| 国产精品福利一区二区| 精品一区二区影视| 欧美日韩高清影院| 亚洲精品成人少妇| 99久免费精品视频在线观看| 久久久青草青青国产亚洲免观| 日韩经典一区二区| 欧美性videosxxxxx| 亚洲精品午夜久久久| 成人黄色一级视频| 亚洲午夜一二三区视频| 成人看片黄a免费看在线| 久久免费看少妇高潮| 黑人精品欧美一区二区蜜桃| 在线成人av网站| 午夜精品福利一区二区三区av| 欧洲亚洲国产日韩| 一区二区三区四区视频精品免费 | 99久久婷婷国产综合精品| 国产欧美视频一区二区三区| 韩国女主播一区二区三区| 日韩三级免费观看| 免费不卡在线视频| 日韩免费在线观看| 久久成人综合网| 久久这里只精品最新地址| 国产在线视频一区二区| 欧美成人r级一区二区三区| 毛片av中文字幕一区二区| 欧美mv和日韩mv国产网站| 久久99久久久欧美国产| 久久久国际精品| www.99精品| 一区二区三区精品在线观看| 欧美日韩视频在线第一区| 日韩中文字幕亚洲一区二区va在线| 91精品国产一区二区三区| 另类人妖一区二区av| 国产亚洲一二三区| 91免费视频网址| 亚洲福利一二三区| 日韩免费高清电影| 国产黄人亚洲片| 一区二区在线免费观看| 欧美精品tushy高清| 奇米影视一区二区三区| 国产免费久久精品| 91国产免费观看| 美腿丝袜亚洲色图| 国产精品久久久久国产精品日日| 欧美亚洲国产一区二区三区| 韩国欧美国产一区| 亚洲精品免费在线观看| 日韩欧美国产一二三区| 成人黄色片在线观看| 亚洲成人自拍一区| 久久精品人人爽人人爽| 91极品美女在线| 国产在线观看一区二区| 亚洲一区二三区| 久久嫩草精品久久久久| 精品视频在线看| 国产美女视频一区| 一区二区三区四区不卡视频| 精品福利一区二区三区| 91免费版在线| 国产精品亚洲视频| 婷婷成人激情在线网| 国产精品久久二区二区| 精品精品欲导航| 欧美揉bbbbb揉bbbbb| 成人app软件下载大全免费| 蜜臀av性久久久久蜜臀aⅴ流畅 | 在线综合+亚洲+欧美中文字幕| 久久久久久久久久看片| 蜜臀精品一区二区三区在线观看| 国产精品理论在线观看| 日韩一区二区三区视频在线 | 亚洲一区精品在线| 国产精品丝袜一区| 欧美大尺度电影在线| 欧美性视频一区二区三区| 成人18视频日本| 激情av综合网| 日本vs亚洲vs韩国一区三区二区| 亚洲靠逼com| 中文字幕综合网| 国产欧美日韩视频在线观看| 精品国产不卡一区二区三区| 4438亚洲最大| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲精品菠萝久久久久久久| 国产三级精品三级| 久久品道一品道久久精品| 精品电影一区二区三区| 欧美tickling网站挠脚心| 日韩一区二区电影在线| 欧美顶级少妇做爰| 欧美精品tushy高清| 欧美日韩精品电影| 欧美精品亚洲二区| 欧美区一区二区三区| 欧美日韩在线免费视频| 欧美丝袜第三区| 欧美日韩午夜在线视频| 欧美日本在线看| 欧美一区二区三区小说| 91精品国产色综合久久不卡蜜臀 | av在线不卡免费看| 91在线观看污| 91丝袜美女网| 欧美日韩卡一卡二| 欧美一区二区三区免费大片| 欧美sm极限捆绑bd| 日本一区二区综合亚洲| 亚洲欧美日韩国产另类专区| 亚洲午夜影视影院在线观看| 奇米综合一区二区三区精品视频| 蜜桃一区二区三区在线| 粉嫩av亚洲一区二区图片| 91年精品国产| 日韩视频一区二区| 国产亚洲精品bt天堂精选| 亚洲视频1区2区| 日韩精品亚洲专区| 国产成人丝袜美腿| 91久久精品午夜一区二区| 日韩三级伦理片妻子的秘密按摩| 中文一区二区在线观看| 亚洲成人资源在线| 国产精品亚洲专一区二区三区 | 欧美一级一区二区| 国产精品三级电影| 亚洲高清免费观看| 国产福利91精品一区| 91国产精品成人| 久久婷婷国产综合精品青草| 亚洲精品日韩综合观看成人91| 免费成人av资源网| 91成人网在线| 国产欧美日韩精品一区| 天堂在线一区二区| 99精品视频在线免费观看| 欧美成人官网二区| 午夜精品久久久久久| caoporn国产一区二区| 日韩视频一区二区三区在线播放| 国产精品每日更新在线播放网址|