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

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

?? nb_celp.cpp

?? KphoneSI (kpsi) is a SIP (Session Initiation Protocol) user agent for Linux, with which you can in
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
/* Copyright (C) 2002 Jean-Marc Valin    File: nb_celp.c   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 "nb_celp.h"#include "lpc.h"#include "lsp.h"#include "ltp.h"#include "quant_lsp.h"#include "cb_search.h"#include "filters.h"#include "stack_alloc.h"#include "vq.h"#include "speex_bits.h"#include "vbr.h"#include "misc.h"#include "speex_callbacks.h"#ifdef SLOW_TRIG#include "math_approx.h"#define cos speex_cos#endif#ifndef M_PI#define M_PI           3.14159265358979323846  /* pi */#endif#ifndef NULL#define NULL 0#endif#define SUBMODE(x) st->submodes[st->submodeID]->xfloat exc_gain_quant_scal3[8]={-2.794750, -1.810660, -1.169850, -0.848119, -0.587190, -0.329818, -0.063266, 0.282826};float exc_gain_quant_scal1[2]={-0.35, 0.05};#define sqr(x) ((x)*(x))void *nb_encoder_init(SpeexMode *m){   EncState *st;   SpeexNBMode *mode;   int i;   mode=(SpeexNBMode *)m->mode;   st = (EncState*)speex_alloc(sizeof(EncState)+8000*sizeof(float));   if (!st)      return NULL;   st->stack = ((char*)st) + sizeof(EncState);      st->mode=m;   st->frameSize = mode->frameSize;   st->windowSize = st->frameSize*3/2;   st->nbSubframes=mode->frameSize/mode->subframeSize;   st->subframeSize=mode->subframeSize;   st->lpcSize = mode->lpcSize;   st->bufSize = mode->bufSize;   st->gamma1=mode->gamma1;   st->gamma2=mode->gamma2;   st->min_pitch=mode->pitchStart;   st->max_pitch=mode->pitchEnd;   st->lag_factor=mode->lag_factor;   st->lpc_floor = mode->lpc_floor;   st->preemph = mode->preemph;     st->submodes=mode->submodes;   st->submodeID=st->submodeSelect=mode->defaultSubmode;   st->pre_mem=0;   st->pre_mem2=0;   st->bounded_pitch = 1;   /* Allocating input buffer */   st->inBuf = PUSH(st->stack, st->bufSize, float);   st->frame = st->inBuf + st->bufSize - st->windowSize;   /* Allocating excitation buffer */   st->excBuf = PUSH(st->stack, st->bufSize, float);   st->exc = st->excBuf + st->bufSize - st->windowSize;   st->swBuf = PUSH(st->stack, st->bufSize, float);   st->sw = st->swBuf + st->bufSize - st->windowSize;   st->exc2Buf = PUSH(st->stack, st->bufSize, float);   st->exc2 = st->exc2Buf + st->bufSize - st->windowSize;   st->innov = PUSH(st->stack, st->frameSize, float);   /* Asymmetric "pseudo-Hamming" window */   {      int part1, part2;      part1 = st->subframeSize*7/2;      part2 = st->subframeSize*5/2;      st->window = PUSH(st->stack, st->windowSize, float);      for (i=0;i<part1;i++)         st->window[i]=.54-.46*cos(M_PI*i/part1);      for (i=0;i<part2;i++)         st->window[part1+i]=.54+.46*cos(M_PI*i/part2);   }   /* Create the window for autocorrelation (lag-windowing) */   st->lagWindow = PUSH(st->stack, st->lpcSize+1, float);   for (i=0;i<st->lpcSize+1;i++)      st->lagWindow[i]=exp(-.5*sqr(2*M_PI*st->lag_factor*i));   st->autocorr = PUSH(st->stack, st->lpcSize+1, float);   st->buf2 = PUSH(st->stack, st->windowSize, float);   st->lpc = PUSH(st->stack, st->lpcSize+1, float);   st->interp_lpc = PUSH(st->stack, st->lpcSize+1, float);   st->interp_qlpc = PUSH(st->stack, st->lpcSize+1, float);   st->bw_lpc1 = PUSH(st->stack, st->lpcSize+1, float);   st->bw_lpc2 = PUSH(st->stack, st->lpcSize+1, float);   st->lsp = PUSH(st->stack, st->lpcSize, float);   st->qlsp = PUSH(st->stack, st->lpcSize, float);   st->old_lsp = PUSH(st->stack, st->lpcSize, float);   st->old_qlsp = PUSH(st->stack, st->lpcSize, float);   st->interp_lsp = PUSH(st->stack, st->lpcSize, float);   st->interp_qlsp = PUSH(st->stack, st->lpcSize, float);   st->rc = PUSH(st->stack, st->lpcSize, float);   st->first = 1;   for (i=0;i<st->lpcSize;i++)   {      st->lsp[i]=(M_PI*((float)(i+1)))/(st->lpcSize+1);   }   st->mem_sp = PUSH(st->stack, st->lpcSize, float);   st->mem_sw = PUSH(st->stack, st->lpcSize, float);   st->mem_sw_whole = PUSH(st->stack, st->lpcSize, float);   st->mem_exc = PUSH(st->stack, st->lpcSize, float);   st->pi_gain = PUSH(st->stack, st->nbSubframes, float);   st->pitch = PUSH(st->stack, st->nbSubframes, int);   st->vbr = PUSHS(st->stack, VBRState);   vbr_init(st->vbr);   st->vbr_quality = 8;   st->vbr_enabled = 0;   st->vad_enabled = 0;   st->dtx_enabled = 0;   st->abr_enabled = 0;   st->abr_drift = 0;   st->complexity=2;   st->sampling_rate=8000;   st->dtx_count=0;   return st;}void nb_encoder_destroy(void *state){   EncState *st=(EncState *)state;   /* Free all allocated memory */   vbr_destroy(st->vbr);   /*Free state memory... should be last*/   speex_free(st);}int nb_encode(void *state, float *in, SpeexBits *bits){   EncState *st;   int i, sub, roots;   int ol_pitch;   float ol_pitch_coef;   float ol_gain;   float *res, *target, *mem;   char *stack;   float *syn_resp;   float lsp_dist=0;   float *orig;   st=(EncState *)state;   stack=st->stack;   /* Copy new data in input buffer */   speex_move(st->inBuf, st->inBuf+st->frameSize, (st->bufSize-st->frameSize)*sizeof(float));   st->inBuf[st->bufSize-st->frameSize] = in[0] - st->preemph*st->pre_mem;   for (i=1;i<st->frameSize;i++)      st->inBuf[st->bufSize-st->frameSize+i] = in[i] - st->preemph*in[i-1];   st->pre_mem = in[st->frameSize-1];   /* Move signals 1 frame towards the past */   speex_move(st->exc2Buf, st->exc2Buf+st->frameSize, (st->bufSize-st->frameSize)*sizeof(float));   speex_move(st->excBuf, st->excBuf+st->frameSize, (st->bufSize-st->frameSize)*sizeof(float));   speex_move(st->swBuf, st->swBuf+st->frameSize, (st->bufSize-st->frameSize)*sizeof(float));   /* Window for analysis */   for (i=0;i<st->windowSize;i++)      st->buf2[i] = st->frame[i] * st->window[i];   /* Compute auto-correlation */   _spx_autocorr(st->buf2, st->autocorr, st->lpcSize+1, st->windowSize);   st->autocorr[0] += 10;        /* prevents NANs */   st->autocorr[0] *= st->lpc_floor; /* Noise floor in auto-correlation domain */   /* Lag windowing: equivalent to filtering in the power-spectrum domain */   for (i=0;i<st->lpcSize+1;i++)      st->autocorr[i] *= st->lagWindow[i];   /* Levinson-Durbin */   wld(st->lpc+1, st->autocorr, st->rc, st->lpcSize);   st->lpc[0]=1;   /* LPC to LSPs (x-domain) transform */   roots=lpc_to_lsp (st->lpc, st->lpcSize, st->lsp, 15, 0.2, stack);   /* Check if we found all the roots */   if (roots==st->lpcSize)   {      /* LSP x-domain to angle domain*/      for (i=0;i<st->lpcSize;i++)         st->lsp[i] = acos(st->lsp[i]);   } else {      /* Search again if we can afford it */      if (st->complexity>1)         roots = lpc_to_lsp (st->lpc, st->lpcSize, st->lsp, 11, 0.05, stack);      if (roots==st->lpcSize)       {         /* LSP x-domain to angle domain*/         for (i=0;i<st->lpcSize;i++)            st->lsp[i] = acos(st->lsp[i]);      } else {         /*If we can't find all LSP's, do some damage control and use previous filter*/         for (i=0;i<st->lpcSize;i++)         {            st->lsp[i]=st->old_lsp[i];         }      }   }   lsp_dist=0;   for (i=0;i<st->lpcSize;i++)      lsp_dist += (st->old_lsp[i] - st->lsp[i])*(st->old_lsp[i] - st->lsp[i]);   /* Whole frame analysis (open-loop estimation of pitch and excitation gain) */   {      if (st->first)         for (i=0;i<st->lpcSize;i++)            st->interp_lsp[i] = st->lsp[i];      else         for (i=0;i<st->lpcSize;i++)            st->interp_lsp[i] = .375*st->old_lsp[i] + .625*st->lsp[i];      lsp_enforce_margin(st->interp_lsp, st->lpcSize, .002);      /* Compute interpolated LPCs (unquantized) for whole frame*/      for (i=0;i<st->lpcSize;i++)         st->interp_lsp[i] = cos(st->interp_lsp[i]);      lsp_to_lpc(st->interp_lsp, st->interp_lpc, st->lpcSize,stack);      /*Open-loop pitch*/      if (!st->submodes[st->submodeID] || st->vbr_enabled || st->vad_enabled || SUBMODE(forced_pitch_gain) ||          SUBMODE(lbr_pitch) != -1)      {         int nol_pitch[6];         float nol_pitch_coef[6];                  bw_lpc(st->gamma1, st->interp_lpc, st->bw_lpc1, st->lpcSize);         bw_lpc(st->gamma2, st->interp_lpc, st->bw_lpc2, st->lpcSize);                  filter_mem2(st->frame, st->bw_lpc1, st->bw_lpc2, st->sw, st->frameSize, st->lpcSize, st->mem_sw_whole);         open_loop_nbest_pitch(st->sw, st->min_pitch, st->max_pitch, st->frameSize,                                nol_pitch, nol_pitch_coef, 6, stack);         ol_pitch=nol_pitch[0];         ol_pitch_coef = nol_pitch_coef[0];         /*Try to remove pitch multiples*/         for (i=1;i<6;i++)         {            if ((nol_pitch_coef[i]>.85*ol_pitch_coef) &&                 (fabs(nol_pitch[i]-ol_pitch/2.0)<=1 || fabs(nol_pitch[i]-ol_pitch/3.0)<=1 ||                  fabs(nol_pitch[i]-ol_pitch/4.0)<=1 || fabs(nol_pitch[i]-ol_pitch/5.0)<=1))            {               /*ol_pitch_coef=nol_pitch_coef[i];*/               ol_pitch = nol_pitch[i];            }         }         /*if (ol_pitch>50)           ol_pitch/=2;*/         /*ol_pitch_coef = sqrt(ol_pitch_coef);*/      } else {         ol_pitch=0;         ol_pitch_coef=0;      }      /*Compute "real" excitation*/      fir_mem2(st->frame, st->interp_lpc, st->exc, st->frameSize, st->lpcSize, st->mem_exc);      /* Compute open-loop excitation gain */      ol_gain=0;      for (i=0;i<st->frameSize;i++)         ol_gain += st->exc[i]*st->exc[i];            ol_gain=sqrt(1+ol_gain/st->frameSize);   }   /*VBR stuff*/   if (st->vbr && (st->vbr_enabled||st->vad_enabled))   {            if (st->abr_enabled)      {         float qual_change=0;         if (st->abr_drift2 * st->abr_drift > 0)         {            /* Only adapt if long-term and short-term drift are the same sign */            qual_change = -.00001*st->abr_drift/(1+st->abr_count);            if (qual_change>.05)               qual_change=.05;            if (qual_change<-.05)               qual_change=-.05;         }         st->vbr_quality += qual_change;         if (st->vbr_quality>10)            st->vbr_quality=10;         if (st->vbr_quality<0)            st->vbr_quality=0;      }      st->relative_quality = vbr_analysis(st->vbr, in, st->frameSize, ol_pitch, ol_pitch_coef);      /*if (delta_qual<0)*/      /*  delta_qual*=.1*(3+st->vbr_quality);*/      if (st->vbr_enabled)       {         int mode;         int choice=0;         float min_diff=100;         mode = 8;         while (mode)         {            int v1;            float thresh;            v1=(int)floor(st->vbr_quality);            if (v1==10)               thresh = vbr_nb_thresh[mode][v1];            else               thresh = (st->vbr_quality-v1)*vbr_nb_thresh[mode][v1+1] + (1+v1-st->vbr_quality)*vbr_nb_thresh[mode][v1];            if (st->relative_quality > thresh &&                 st->relative_quality-thresh<min_diff)            {               choice = mode;               min_diff = st->relative_quality-thresh;            }            mode--;         }         mode=choice;         if (mode==0)         {            if (st->dtx_count==0 || lsp_dist>.05 || !st->dtx_enabled || st->dtx_count>20)            {               mode=1;               st->dtx_count=1;            } else {               mode=0;               st->dtx_count++;            }         } else {            st->dtx_count=0;         }         speex_encoder_ctl(state, SPEEX_SET_MODE, &mode);         if (st->abr_enabled)         {            int bitrate;            speex_encoder_ctl(state, SPEEX_GET_BITRATE, &bitrate);            st->abr_drift+=(bitrate-st->abr_enabled);            st->abr_drift2 = .95*st->abr_drift2 + .05*(bitrate-st->abr_enabled);            st->abr_count += 1.0;         }      } else {         /*VAD only case*/         int mode;         if (st->relative_quality<2)         {            if (st->dtx_count==0 || lsp_dist>.05 || !st->dtx_enabled || st->dtx_count>20)            {               st->dtx_count=1;               mode=1;            } else {               mode=0;               st->dtx_count++;            }         } else {            st->dtx_count = 0;            mode=st->submodeSelect;         }         /*speex_encoder_ctl(state, SPEEX_SET_MODE, &mode);*/         st->submodeID=mode;      }    } else {      st->relative_quality = -1;   }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美喷水一区二区| 国产日韩欧美不卡在线| 精品国产乱码久久久久久浪潮| 国产日韩在线不卡| 亚洲超丰满肉感bbw| 国产老妇另类xxxxx| 欧美日韩激情一区| 亚洲欧洲成人精品av97| 91香蕉视频污| 精品99久久久久久| 午夜精品福利久久久| 91麻豆免费观看| 欧美激情综合网| 精品一区二区三区久久| 欧美三级中文字幕| 亚洲色图色小说| 成人做爰69片免费看网站| 91精品中文字幕一区二区三区| 亚洲免费在线视频一区 二区| 国产成人av网站| 欧美成人艳星乳罩| 日本va欧美va精品发布| 欧美丝袜自拍制服另类| 一区二区三区av电影| av影院午夜一区| 欧美国产一区二区在线观看| 久久国产麻豆精品| 日韩精品中文字幕一区| 日韩激情一区二区| 欧美裸体bbwbbwbbw| 亚洲一区二区三区中文字幕在线| 成人av在线电影| 亚洲欧美在线观看| 99久久综合99久久综合网站| 亚洲国产精品高清| 成人午夜av在线| 国产欧美日本一区视频| 高清在线观看日韩| 国产精品成人网| 91网站在线播放| 国产在线一区观看| 国产日本一区二区| 波多野洁衣一区| 亚洲丝袜制服诱惑| 欧美性欧美巨大黑白大战| 亚洲精品第一国产综合野| 91久久免费观看| 日日骚欧美日韩| 日韩欧美国产综合一区| 国产一区二区在线看| 国产欧美日韩亚州综合| 成人免费精品视频| 亚洲欧美日韩成人高清在线一区| 一本大道久久a久久精二百| 一级特黄大欧美久久久| 欧美日韩国产综合久久| 麻豆91精品视频| 国产欧美日韩精品a在线观看| 91在线观看美女| 亚洲v精品v日韩v欧美v专区| 欧美一区二区三区影视| 国产一区二区三区综合| 亚洲欧美怡红院| 欧美一区二区三区免费观看视频| 美女一区二区三区在线观看| 久久久99久久| 色婷婷国产精品综合在线观看| 亚洲丶国产丶欧美一区二区三区| 日韩西西人体444www| 国产精品一区二区三区四区 | 99久久国产综合精品色伊| 亚洲黄色小视频| www久久久久| 一本色道久久综合亚洲91 | 91亚洲精品久久久蜜桃网站| 亚洲图片自拍偷拍| 精品美女一区二区三区| 日本久久一区二区三区| 欧美在线观看一区二区| 国内外成人在线视频| 亚洲精品免费一二三区| xvideos.蜜桃一区二区| 欧美亚洲国产怡红院影院| 韩国精品在线观看| 亚洲国产婷婷综合在线精品| 国产午夜精品一区二区三区嫩草 | 中文字幕一区二区三区在线不卡 | 91视视频在线观看入口直接观看www | 欧美精品电影在线播放| 成人丝袜视频网| 秋霞电影网一区二区| 亚洲精品成人天堂一二三| 国产亚洲精品7777| 欧美一区三区四区| 色先锋aa成人| 国产高清一区日本| 日本不卡视频一二三区| 一区二区三区四区高清精品免费观看 | 国产欧美1区2区3区| 欧美精品vⅰdeose4hd| 99re在线精品| 成人午夜伦理影院| 国产综合成人久久大片91| 日本成人中文字幕在线视频| 一区二区三区四区在线| 亚洲人吸女人奶水| 国产精品亲子伦对白| 国产精品免费丝袜| 国产日韩精品一区二区浪潮av| 91精品一区二区三区久久久久久| 欧美亚洲一区三区| 欧美无人高清视频在线观看| 色综合久久久网| 色综合久久久久综合体| 91性感美女视频| 色婷婷综合久久久中文字幕| 不卡在线观看av| 成人免费高清视频| 成人教育av在线| av在线不卡观看免费观看| 不卡一区二区中文字幕| 色综合色狠狠综合色| 一本色道久久综合狠狠躁的推荐 | 99久久精品国产一区二区三区 | 久久精品噜噜噜成人88aⅴ| 蜜臀久久久久久久| 久久99国产乱子伦精品免费| 免费高清不卡av| 国产精品一区二区你懂的| 国产麻豆一精品一av一免费| 粉嫩av一区二区三区| 成人99免费视频| 欧美亚洲国产一区在线观看网站| 欧美日韩国产精品自在自线| 欧美一区二区二区| 26uuu色噜噜精品一区| 欧美国产视频在线| 亚洲精品美腿丝袜| 日本人妖一区二区| 国产精品一区二区在线观看网站| 成人精品高清在线| 在线观看亚洲一区| 日韩三级在线观看| 久久久久国产精品麻豆 | 精品国产3级a| 国产精品三级视频| 99精品久久只有精品| 91精品1区2区| 精品久久国产字幕高潮| 国产欧美一区二区精品仙草咪| 中文字幕中文字幕一区| 午夜精品福利一区二区三区av| 国产一区久久久| 91国内精品野花午夜精品| 日韩欧美www| 亚洲婷婷国产精品电影人久久| 午夜私人影院久久久久| 国产精品一级黄| 欧美亚洲动漫另类| 久久久久久99久久久精品网站| 一色桃子久久精品亚洲| 免费看日韩a级影片| caoporm超碰国产精品| 欧美一区二区三区婷婷月色| 国产女主播一区| 日韩在线观看一区二区| 不卡欧美aaaaa| 欧美一二三区精品| 亚洲欧美一区二区三区久本道91| 久久99蜜桃精品| 欧美网站大全在线观看| 亚洲国产成人一区二区三区| 午夜精品久久久久| 97久久久精品综合88久久| 精品国产伦理网| 香蕉乱码成人久久天堂爱免费| 成人免费电影视频| 久久亚洲精精品中文字幕早川悠里| 依依成人综合视频| 成人小视频免费观看| 日韩精品一区二区三区蜜臀| 亚洲午夜久久久久久久久电影院 | 亚洲国产日韩a在线播放| 欧美乱熟臀69xxxxxx| 亚洲国产激情av| 国产精品一区在线观看你懂的| 欧美丰满少妇xxxxx高潮对白| 一区二区三区在线观看动漫| 国产成人免费视频| 精品国产一区二区三区四区四| 午夜精品一区在线观看| 欧美性大战久久久| 一区二区三区四区中文字幕| 成人18视频在线播放| 国产精品女主播av| 国产成人精品免费看| 久久久www成人免费无遮挡大片| 久久99精品国产91久久来源| 日韩无一区二区| 日韩av成人高清|