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

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

?? g729a_postfilt.c

?? DSP上優化的G.729A代碼
?? C
字號:
#include "../Common/typedef.h"
#include "../Include/G729A_basic_op.h"
#include "../Include/G729A_ld8a.h"
#include "../Include/G729A_oper_32b.h"

static Word16 G729Ares2_buf[G729A_PIT_MAX+G729A_L_SUBFR];
static Word16 *G729Ares2;
static Word16 G729Ascal_res2_buf[G729A_PIT_MAX+G729A_L_SUBFR];
static Word16 *G729Ascal_res2;

static Word16 G729Amem_syn_pst[G729A_M];

void G729AInit_Post_Filter(void)
{
	G729Ares2  = G729Ares2_buf + G729A_PIT_MAX;
	G729Ascal_res2  = G729Ascal_res2_buf + G729A_PIT_MAX;
	
	G729ASet_zero(G729Amem_syn_pst, G729A_M);
	G729ASet_zero(G729Ares2_buf, G729A_PIT_MAX+G729A_L_SUBFR);
	G729ASet_zero(G729Ascal_res2_buf, G729A_PIT_MAX+G729A_L_SUBFR);
	
	return;
}

void G729APost_Filter(Word16 *syn, Word16 *Az_4, Word16 *T)
{
	
	Word16 res2_pst[G729A_L_SUBFR]; 
	Word16 syn_pst[G729A_L_FRAME];  
	
	Word16 Ap3[G729A_MP1], Ap4[G729A_MP1];  
	
	Word16 *Az;                          
	Word16   t0_max, t0_min;   
	Word16   i_subfr;            
	
	Word16 h[G729A_L_H];
	
	Word16  i, j;
	Word16  temp1, temp2;
	Word32  L_tmp;
	Word32  *Temp0, *Temp1;
	
    Az = Az_4;
	
    for (i_subfr = 0; i_subfr < G729A_L_FRAME; i_subfr += G729A_L_SUBFR)
    {
		t0_min = G729Asub_s(*T++, 3);
		t0_max = G729Aadd_s(t0_min, 6);
		if (G729Asub_s(t0_max, G729A_PIT_MAX) > 0) {
			t0_max = G729A_PIT_MAX;
			t0_min = G729Asub_s(t0_max, 6);
		}
		
		G729AWeight_Az(Az, G729A_GAMMA2_PST, G729A_M, Ap3);
		G729AWeight_Az(Az, G729A_GAMMA1_PST, G729A_M, Ap4);
		
		G729AResidu(Ap3, &syn[i_subfr], G729Ares2, G729A_L_SUBFR);
		
		Temp0 = (Word32 *)&G729Ares2[0];
		Temp1 = (Word32 *)&G729Ascal_res2[0];
		for (j = G729A_L_SUBFR>>1; j > 0; j--)
		{
			*Temp1++ = _shr2(*Temp0++, 2);
		}
		
		G729Apit_pst_filt(G729Ares2, G729Ascal_res2, t0_min, t0_max, G729A_L_SUBFR, res2_pst);
		
		G729ACopy(Ap3, h, G729A_M+1);
		G729ASet_zero(&h[G729A_M+1], G729A_L_H-G729A_M-1);
		G729ASyn_filt(Ap4, h, h, G729A_L_H, &h[G729A_M+1], 0);
		
		L_tmp = G729AL_mult(h[0], h[0]);
		for (i=1; i<G729A_L_H; i++) L_tmp = G729AL_mac(L_tmp, h[i], h[i]);
		temp1 = G729Aextract_h(L_tmp);
		
		L_tmp = G729AL_mult(h[0], h[1]);
		for (i=1; i<G729A_L_H-1; i++) L_tmp = G729AL_mac(L_tmp, h[i], h[i+1]);
		temp2 = G729Aextract_h(L_tmp);
		
		if(temp2 <= 0) {
			temp2 = 0;
		}
		else {
			temp2 = G729Amult(temp2, G729A_MU);
			temp2 = G729Adiv_s(temp2, temp1);
		}
		
		G729Apreemphasis(res2_pst, temp2, G729A_L_SUBFR);
		
		G729ASyn_filt(Ap4, res2_pst, &syn_pst[i_subfr], G729A_L_SUBFR, G729Amem_syn_pst, 1);
		
		G729Aagc(&syn[i_subfr], &syn_pst[i_subfr], G729A_L_SUBFR);
		
		G729ACopy(&G729Ares2[G729A_L_SUBFR-G729A_PIT_MAX], &G729Ares2[-G729A_PIT_MAX], G729A_PIT_MAX);
		G729ACopy(&G729Ascal_res2[G729A_L_SUBFR-G729A_PIT_MAX], &G729Ascal_res2[-G729A_PIT_MAX], G729A_PIT_MAX);
		
		Az += G729A_MP1;
    }
	
    G729ACopy(&syn[G729A_L_FRAME-G729A_M], &syn[-G729A_M], G729A_M);
	
    G729ACopy(syn_pst, syn, G729A_L_FRAME);
	
    return;
}

void G729Apit_pst_filt(Word16 *signal, Word16 *scal_sig, Word16 t0_min, Word16 t0_max, Word16 L_subfr, Word16 *signal_pst)
{
	Word16 i, j, t0;
	Word16 g0, gain, cmax, en, en0;
	Word16 *p, *p1, *deb_sig;
	Word32 corr, cor_max, ener, ener0, temp;
	Word32 L_temp;
	
	deb_sig = &scal_sig[-t0_min];
	cor_max = G729AMIN_32;
	t0 = t0_min;              
	for (i=t0_min; i<=t0_max; i++)
	{
		corr = 0;
		p    = scal_sig;
		p1   = deb_sig;
		for (j=0; j<L_subfr; j++)
			corr = G729AL_mac(corr, *p++, *p1++);
		
		L_temp = G729AL_sub(corr, cor_max);
		if (L_temp > (Word32)0)
		{
			cor_max = corr;
			t0 = i;
		}
		deb_sig--;
	}
	
	ener = 1;
	p = scal_sig - t0;
	for ( i=0; i<L_subfr ;i++, p++)
		ener = G729AL_mac(ener, *p, *p);
	
	ener0 = 1;
	p = scal_sig;
	for ( i=0; i<L_subfr; i++, p++)
		ener0 = G729AL_mac(ener0, *p, *p);
	
	if (cor_max < 0)
	{
		cor_max = 0;
	}
	
	temp = cor_max;
	if (ener > temp)
	{
		temp = ener;
	}
	if (ener0 > temp)
	{
		temp = ener0;
	}
	j = G729Anorm_l(temp);
	cmax = G729Around(G729AL_shl(cor_max, j));
	en = G729Around(G729AL_shl(ener, j));
	en0 = G729Around(G729AL_shl(ener0, j));

	temp = G729AL_mult(cmax, cmax);
	temp = G729AL_sub(temp, G729AL_shr(G729AL_mult(en, en0), 1));
	
	if (temp < (Word32)0)            
	{                              
		for (i = 0; i < L_subfr; i++)
			signal_pst[i] = signal[i];
		return;
	}
	
	if (G729Asub_s(cmax, en) > 0)     
	{
		g0 = G729A_INV_GAMMAP;
		gain = G729A_GAMMAP_2;
	}
	else {
		cmax = G729Ashr_s(G729Amult(cmax, G729A_GAMMAP), 1); 
		en = G729Ashr_s(en, 1);        
		i = G729Aadd_s(cmax, en);
		if(i > 0)
		{
			gain = G729Adiv_s(cmax, i);    
			g0 = G729Asub_s(32767, gain);  
		}
		else
		{
			g0 =  32767;
			gain = 0;
		}
	}
		
	for (i = 0; i < L_subfr; i++)
	{
		signal_pst[i] = G729Aadd_s(G729Amult(g0, signal[i]), G729Amult(gain, signal[i-t0]));
		
	}
	
	return;
}

void G729Apreemphasis(Word16 *signal, Word16 g, Word16 L)
{
	static Word16 G729A_mem_pre = 0;
	Word16 *p1, *p2, temp, i;
	
	p1 = signal + L - 1;
	p2 = p1 - 1;
	temp = *p1;
	
	for (i = 0; i <= L-2; i++)
	{
		*p1-- = G729Asub_s(*p1, G729Amult(g, *p2--));
	}
	
	*p1 = G729Asub_s(*p1, G729Amult(g, G729A_mem_pre));
	
	G729A_mem_pre = temp;
	
	return;
}

void G729Aagc(Word16 *sig_in, Word16 *sig_out, Word16 l_trm)
{
	static Word16 G729A_past_gain=4096;         
	Word16 i, exp;
	Word16 gain_in, gain_out, g0, gain;                    
	Word32 s;
	
	Word16 signal[G729A_L_SUBFR];
	
	for(i=0; i<l_trm; i++)
		signal[i] = G729Ashr_s(sig_out[i], 2);
	
	s = 0;
	for(i=0; i<l_trm; i++)
		s = G729AL_mac(s, signal[i], signal[i]);
	
	if (s == 0) {
		G729A_past_gain = 0;
		return;
	}
	exp = G729Asub_s(G729Anorm_l(s), 1);
	gain_out = G729Around(G729AL_shl(s, exp));
	
	for(i=0; i<l_trm; i++)
		signal[i] = G729Ashr_s(sig_in[i], 2);
	
	s = 0;
	for(i=0; i<l_trm; i++)
		s = G729AL_mac(s, signal[i], signal[i]);
	
	if (s == 0) {
		g0 = 0;
	}
	else {
		i = G729Anorm_l(s);
		gain_in = G729Around(G729AL_shl(s, i));
		exp = G729Asub_s(exp, i);
		
		s = G729AL_deposit_l(G729Adiv_s(gain_out,gain_in));  
		s = G729AL_shl(s, 7);          
		s = G729AL_shr(s, exp);       
		
		s = G729AInv_sqrt(s);         
		i = G729Around(G729AL_shl(s,9));   
		
		g0 = G729Amult(i, G729A_AGC_FAC1);       
	}
		
	gain = G729A_past_gain;
	for(i=0; i<l_trm; i++) {
		gain = G729Amult(gain, G729A_AGC_FAC);
		gain = G729Aadd_s(gain, g0);
		sig_out[i] = G729Aextract_h(G729AL_shl(G729AL_mult(sig_out[i], gain), 3));
	}
	G729A_past_gain = gain;
	
	return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久国产精品厨房| 91超碰这里只有精品国产| 久久久久久久久久久久久久久99 | 国精产品一区一区三区mba视频| 欧美高清激情brazzers| 日本成人在线看| 久久精品一区二区三区不卡牛牛| 久久er精品视频| 中文字幕第一区二区| 91影视在线播放| 亚洲午夜三级在线| 精品毛片乱码1区2区3区| 国内精品在线播放| 国产精品理论在线观看| 色拍拍在线精品视频8848| 肉丝袜脚交视频一区二区| 日韩免费看的电影| 波波电影院一区二区三区| 一区二区三区在线免费播放| 欧美色涩在线第一页| 黄色日韩三级电影| 中文字幕一区二区三区蜜月| 欧美视频在线一区| 久久99精品视频| 亚洲人一二三区| 欧美va亚洲va| 色综合网色综合| 男女男精品网站| 日韩美女视频一区二区| 91精品一区二区三区久久久久久| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲视频小说图片| 日韩久久久精品| 色综合久久久久综合体桃花网| 午夜精品福利在线| 国产精品久久福利| 欧美一区二区视频在线观看2022| 国产91精品一区二区麻豆网站 | 亚洲久草在线视频| 日韩免费电影网站| 欧美性猛交xxxx乱大交退制版 | 欧美三级午夜理伦三级中视频| 久久精品国产色蜜蜜麻豆| 一区二区三区四区乱视频| 久久亚洲一区二区三区明星换脸 | 国产精品久久久久久一区二区三区| 欧美精品久久天天躁| 色综合久久天天综合网| 国产成人免费视频精品含羞草妖精| 亚洲福利视频一区二区| 1区2区3区国产精品| 久久日一线二线三线suv| 欧美日韩在线播放三区| www.日本不卡| 国产一区二区毛片| 日韩激情中文字幕| 亚洲综合色婷婷| 亚洲色图色小说| 国产精品国产三级国产aⅴ无密码| 日韩欧美久久一区| 3751色影院一区二区三区| 日本道免费精品一区二区三区| 国产成人免费在线视频| 国内外成人在线| 久久精品久久精品| 久久精品国产成人一区二区三区| 亚洲国产wwwccc36天堂| 亚洲国产精品久久久久婷婷884| 国产精品第一页第二页第三页| 久久日一线二线三线suv| 亚洲精品一线二线三线| 精品乱人伦小说| 亚洲精品在线观看视频| 久久影院电视剧免费观看| 欧美成人性战久久| 337p粉嫩大胆噜噜噜噜噜91av| 日韩欧美区一区二| 欧美mv和日韩mv的网站| 精品三级av在线| 久久先锋资源网| 国产欧美1区2区3区| 久久色成人在线| 国产精品丝袜黑色高跟| 亚洲欧洲av色图| 一区二区三区四区在线| 亚洲在线成人精品| 天堂va蜜桃一区二区三区漫画版| 午夜视频在线观看一区二区| 亚洲成av人片一区二区梦乃| 亚洲.国产.中文慕字在线| 奇米影视一区二区三区小说| 久久se精品一区二区| 国产精品一品视频| 色综合天天综合色综合av| 91传媒视频在线播放| 欧美精品自拍偷拍| 欧美成人在线直播| 欧美国产欧美综合| 亚洲一级二级三级| 日本美女一区二区三区| 国产一区二区三区av电影| 99麻豆久久久国产精品免费| 日本高清无吗v一区| 在线成人免费视频| 2020日本不卡一区二区视频| 国产精品初高中害羞小美女文| 一区二区三区高清| 九色porny丨国产精品| 成人一区二区三区在线观看 | 日本不卡视频一二三区| 国产91综合网| 欧美丝袜丝交足nylons图片| 欧美sm美女调教| 亚洲人xxxx| 久久精品国产精品亚洲红杏| av电影一区二区| 91精品国产乱码| 国产精品素人一区二区| 日韩成人一区二区三区在线观看| 国产精品88888| 欧美精品三级日韩久久| 国产日产欧美一区| 婷婷丁香激情综合| www.亚洲人| 精品国精品国产尤物美女| 亚洲日本欧美天堂| 狠狠色丁香九九婷婷综合五月| 99免费精品视频| 精品国产乱码久久久久久影片| 亚洲日本青草视频在线怡红院| 久久99精品久久久久久| 欧美日韩美少妇| 国产精品久久午夜| 激情亚洲综合在线| 欧美日韩一区小说| 亚洲欧洲国产专区| 国产精品正在播放| 日韩你懂的电影在线观看| 一区二区三区在线免费视频| 成人网男人的天堂| 精品国产凹凸成av人导航| 亚洲午夜久久久久久久久电影院 | 亚洲午夜电影网| 91视频在线看| 日本一区二区三级电影在线观看 | 经典三级视频一区| 欧美日韩一区不卡| 一区二区三区资源| av电影在线观看一区| 欧美激情一区二区在线| 狠狠狠色丁香婷婷综合久久五月| 欧美美女视频在线观看| 亚洲码国产岛国毛片在线| 国产91精品一区二区麻豆亚洲| 亚洲精品一区二区三区影院| 日本少妇一区二区| 91麻豆精品国产91久久久更新时间| 亚洲欧洲日韩一区二区三区| 成人免费的视频| 中文字幕国产精品一区二区| 国产成人精品亚洲777人妖| 久久久久久一二三区| 国产一区二区主播在线| 久久天天做天天爱综合色| 激情久久久久久久久久久久久久久久| 制服丝袜中文字幕一区| 视频在线观看一区| 欧美精品aⅴ在线视频| 香蕉加勒比综合久久| 777午夜精品视频在线播放| 婷婷久久综合九色综合绿巨人 | 国产成人在线视频播放| 国产偷国产偷精品高清尤物| 成人午夜精品在线| 国产精品三级久久久久三级| 成人精品国产福利| 日韩理论片在线| 欧美偷拍一区二区| 日韩高清在线观看| 日韩精品中午字幕| 国产成人精品三级| 亚洲精品自拍动漫在线| 欧美喷水一区二区| 美女视频黄频大全不卡视频在线播放| 日韩一级大片在线观看| 国产综合色精品一区二区三区| 国产视频在线观看一区二区三区 | a亚洲天堂av| 一区二区三区不卡视频 | 国产激情视频一区二区在线观看 | 综合亚洲深深色噜噜狠狠网站| 91麻豆国产精品久久| 偷拍自拍另类欧美| 欧美精品一区二区高清在线观看| 成人美女在线视频| 亚洲综合自拍偷拍| 欧美xfplay| 91久久线看在观草草青青| 日本91福利区| 日韩理论在线观看|