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

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

?? melp_syn.c

?? MELPe 1200 bps, fixed point
?? C
?? 第 1 頁 / 共 2 頁
字號:
		ifact = divide_s(syn_begin, FRAME);                   /* ifact in Q15 */

		if (syn_begin >= GAINFR){
			gaincnt = 2;
			temp1 = sub(syn_begin, GAINFR);
			ifact_gain = divide_s(temp1, GAINFR);
		} else {
			gaincnt = 1;
			ifact_gain = divide_s(syn_begin, GAINFR);
		}

		/* interpolate gain.  It is assumed that par->gain[] are obtained     */
		/* from gain_vq_cb[] in "qnt12_cb.c", and gain_vq_cb[] lies between   */
		/* 2564 and 18965 (Q8).  Therefore, the interpolated "gain" is also   */
		/* assumed to be between these two values.                            */
		if (gaincnt > 1){
			/*	gain = ifact_gain * par->gain[gaincnt - 1] +
				   (1.0 - ifact_gain) * par->gain[gaincnt - 2];               */
			L_temp1 = L_mult(par->gain[gaincnt - 1], ifact_gain);
			temp1 = sub(ONE_Q15, ifact_gain);
			L_temp2 = L_mult(par->gain[gaincnt - 2], temp1);
			gain = extract_h(L_add(L_temp1, L_temp2));          /* gain in Q8 */
		} else {
			/*	gain = ifact_gain * par->gain[gaincnt - 1] +
				   (1.0 - ifact_gain) * prev_par.gain[NUM_GAINFR - 1];        */
			L_temp1 = L_mult(par->gain[gaincnt - 1], ifact_gain);
			temp1 = sub(ONE_Q15, ifact_gain);
			L_temp2 = L_mult(prev_par.gain[NUM_GAINFR - 1], temp1);
			gain = extract_h(L_add(L_temp1, L_temp2));          /* gain in Q8 */
		}

/* Set overall interpolation path based on gain change */

		temp1 = sub(par->gain[NUM_GAINFR - 1], prev_par.gain[NUM_GAINFR - 1]);
		if (abs_s(temp1) > SIX_Q8){
			/* Power surge: use gain adjusted interpolation */
			/*	intfact = (gain - prev_par.gain[NUM_GAINFR - 1])/temp; */
			temp2 = sub(gain, prev_par.gain[NUM_GAINFR - 1]);
			if (((temp2 > 0) && (temp1 < 0)) ||
				((temp2 < 0) && (temp1 > 0)))
				intfact = 0;
			else {
				temp1 = abs_s(temp1);
				temp2 = abs_s(temp2);
				if (temp2 >= temp1)
					intfact = ONE_Q15;
				else
					intfact = divide_s(temp2, temp1);       /* intfact in Q15 */
			}
		} else                             /* Otherwise, linear interpolation */
			intfact = ifact;

		/* interpolate LSF's and convert to LPC filter */
		interp_array(prev_par.lsf, par->lsf, lsf, intfact, LPC_ORD);
		lpc_lsp2pred(lsf, &(lpc[1]), LPC_ORD);

		/* Check signal probability for adaptive spectral enhancement filter */
		temp1 = add(noise_gain, X12_Q8);
		temp2 = add(noise_gain, X30_Q8);
		/* sig_prob in Q15 */
		sig_prob = lin_int_bnd(gain, temp1, temp2, 0, ONE_Q15);

		/* Calculate adaptive spectral enhancement filter coefficients */
		ase_num[0] = ONE_Q12;                   /* ase_num and ase_den in Q12 */
		temp1 = mult(sig_prob, ASE_NUM_BW_Q15);
		lpc_bw_expand(&(lpc[1]), &(ase_num[1]), temp1, LPC_ORD);
		temp1 = mult(sig_prob, ASE_DEN_BW_Q15);
		lpc_bw_expand(&(lpc[1]), ase_den, temp1, LPC_ORD);

		/*	tilt_cof[1] = sig_prob * (intfact * curr_tilt +
								  (1.0 - intfact) * prev_tilt);               */
		temp1 = mult(curr_tilt, intfact);
		intfact1 = sub(ONE_Q15, intfact);
		temp2 = mult(prev_tilt, intfact1);
		temp1 = add(temp1, temp2);
		tilt_cof[1] = mult(sig_prob, temp1);               /* tilt_cof in Q15 */

		/* interpolate pitch and pulse gain */
		/*	syn_gain = SYN_GAIN * (intfact * lpc_gain +
								   (1.0 - intfact) * prev_lpc_gain); */
		temp1 = mult(lpc_gain, intfact);                   /* lpc_gain in Q15 */
		temp2 = mult(prev_lpc_gain, intfact1);
		temp1 = add(temp1, temp2);                            /* temp1 in Q15 */
		syn_gain = mult(SYN_GAIN_Q4, temp1);
                                                            /* syn_gain in Q4 */
		/*	pitch = intfact * par->pitch + (1.0 - intfact) * prev_par.pitch;  */
		temp1 = mult(par->pitch, intfact);
		temp2 = mult(prev_par.pitch, intfact1);
		pitch = add(temp1, temp2);                             /* pitch in Q7 */
	
		/*	pulse_gain = syn_gain * sqrt(pitch); */
		temp1 = sqrt_fxp(pitch, 7);
		L_temp1 = L_mult(syn_gain, temp1);
		L_temp1 = L_shl(L_temp1, 4);
		pulse_gain = extract_h(L_temp1);                  /* pulse_gain in Q0 */

		/* interpolate pulse and noise coefficients */
		temp1 = sqrt_fxp(ifact, 15);
		interp_array(prev_pcof, curr_pcof, pulse_cof, temp1, MIX_ORD + 1);
		interp_array(prev_ncof, curr_ncof, noise_cof, temp1, MIX_ORD + 1);

		set_fc(prev_par.bpvc, &fc_prev);
		set_fc(par->bpvc, &fc_curr);
		temp2 = sub(ONE_Q15, temp1);
		temp1 = mult(temp1, fc_curr);                  /* temp1 is now Q3 */
		temp2 = mult(temp2, fc_prev);                               /* Q3 */
		fc = add(temp1, temp2);                                     /* Q3 */

		/* interpolate jitter */
		/*	jitter = ifact * par->jitter + (1.0 - ifact) * prev_par.jitter;   */
		temp1 = mult(par->jitter, ifact);
		temp2 = sub(ONE_Q15, ifact);                          /* temp2 is Q15 */
		temp2 = mult(prev_par.jitter, temp2);
		jitter = add(temp1, temp2);                          /* jitter is Q15 */

		/* scale gain by 0.05 but keep gain in log. */
		/*	gain = pow(10.0, 0.05 * gain); */
		gain = mult(X005_Q19, gain);                           /* gain in Q12 */

		/* Set period length based on pitch and jitter */
		rand_num(&temp1, ONE_Q15, 1);
		/*	length = pitch * (1.0 - jitter * temp) + 0.5; */
		temp1 = mult(jitter, temp1);
		temp1 = shr(temp1, 1);                                /* temp1 in Q14 */
		temp1 = sub(ONE_Q14, temp1);
		temp1 = mult(pitch, temp1);                           /* length in Q6 */
		length = shift_r(temp1, -6);            /* length in Q0 with rounding */
		if (length < PITCHMIN)
			length = PITCHMIN;
		if (length > PITCHMAX)
			length = PITCHMAX;

		fill(fs_real, ONE_Q13, length);
		fs_real[0] = 0;
		interp_array(prev_par.fs_mag, par->fs_mag, &fs_real[1], intfact,
					 NUM_HARM);

#if TIME_DOMAIN_SYN

		/* Use inverse DFT for pulse excitation */
		idft_real(fs_real, &sigbuf[BEGIN], length);          /* sigbuf in Q15 */

		/* Delay overall signal by PDEL samples (circular shift) */
		/* use fs_real as a scratch buffer */

		v_equ(fs_real, &sigbuf[BEGIN], length);
		v_equ(&sigbuf[BEGIN + PDEL], fs_real, length - PDEL);
		v_equ(&sigbuf[BEGIN], &fs_real[length - PDEL], PDEL);

		/* Scale by pulse gain */
		v_scale(&sigbuf[BEGIN], pulse_gain, length);          /* sigbuf in Q0 */

		/* Filter and scale pulse excitation */
		v_equ(&sigbuf[BEGIN - MIX_ORD], pulse_del, MIX_ORD);
		v_equ(pulse_del, &sigbuf[length + BEGIN - MIX_ORD], MIX_ORD);
		zerflt_Q(&sigbuf[BEGIN], pulse_cof, &sigbuf[BEGIN], MIX_ORD, length,
				 14);

		temp1 = shr(mult(X1_732_Q14, syn_gain), 3);                     /* Q0 */
		/* Get scaled noise excitation */
		rand_num(&sig2[BEGIN], temp1, length);                  /* sig2 in Q0 */

		/* Filter noise excitation */
		v_equ(&sig2[BEGIN - MIX_ORD], noise_del, MIX_ORD);
		v_equ(noise_del, &sig2[length + BEGIN - MIX_ORD], MIX_ORD);
		zerflt_Q(&sig2[BEGIN], noise_cof, &sig2[BEGIN], MIX_ORD, length, 14);
		/* Add two excitation signals (mixed excitation) */
        v_add(&sigbuf[BEGIN], &sig2[BEGIN], length);          /* sigbuf in Q0 */

#else
        harm_syn_pitch(fs_real, &sigbuf[BEGIN], fc, length);
		v_scale(&sigbuf[BEGIN], pulse_gain, length);        /* sigbuf[] is Q0 */
#endif

		/* Adaptive spectral enhancement */
		v_equ(&sigbuf[BEGIN - LPC_ORD], ase_del, LPC_ORD);
		lpc_synthesis(&sigbuf[BEGIN], &sigbuf[BEGIN], ase_den, LPC_ORD,
					  length);
		v_equ(ase_del, &sigbuf[BEGIN + length - LPC_ORD], LPC_ORD);

		zerflt(&sigbuf[BEGIN], ase_num, &sigbuf[BEGIN], LPC_ORD, length);
		v_equ(&sigbuf[BEGIN - TILT_ORD], tilt_del, TILT_ORD);
		v_equ(tilt_del, &sigbuf[length + BEGIN - TILT_ORD], TILT_ORD);
		zerflt_Q(&sigbuf[BEGIN], tilt_cof, &sigbuf[BEGIN], TILT_ORD, length,
				 15);

		/* Possible Signal overflow at this point! */
		/* Perform LPC synthesis filtering */
		v_equ(&sigbuf[BEGIN - LPC_ORD], lpc_del, LPC_ORD);
		lpc_synthesis(&sigbuf[BEGIN], &sigbuf[BEGIN], &(lpc[1]), LPC_ORD,
					  length);
		v_equ(lpc_del, &sigbuf[length + BEGIN - LPC_ORD], LPC_ORD);
		/* Adjust scaling of synthetic speech, sigbuf in Q0 */
		scale_adj(&sigbuf[BEGIN], gain, length, SCALEOVER, INV_SCALEOVER_Q18);

		/* Implement pulse dispersion filter on output speech */
		v_equ(&sigbuf[BEGIN - DISP_ORD], disp_del, DISP_ORD);
		v_equ(disp_del, &sigbuf[length + BEGIN - DISP_ORD], DISP_ORD);
		zerflt_Q(&sigbuf[BEGIN], disp_cof, &sigbuf[BEGIN], DISP_ORD,
				 length, 15);

		/* Copy processed speech to output array (not past frame end) */
		if (add(syn_begin, length) >= FRAME){
			v_equ(&sp_out[syn_begin], &sigbuf[BEGIN], (Shortword) (FRAME - syn_begin));

#if POSTFILTER
			postfilt(sp_out, prev_par.lsf, par->lsf);
#endif

			/* past end: save remainder in sigsave[0] */
			v_equ(sigsave, &sigbuf[BEGIN + FRAME - syn_begin],
				  (Shortword) (length - (FRAME - syn_begin)));
		} else
			v_equ(&sp_out[syn_begin], &sigbuf[BEGIN], length);

		/* Update syn_begin for next period */
		syn_begin = add(syn_begin, length);
	}

	/* Save previous pulse and noise filters for next frame */
	v_equ(prev_pcof, curr_pcof, MIX_ORD + 1);
	v_equ(prev_ncof, curr_ncof, MIX_ORD + 1);

	/* Copy current parameters to previous parameters for next time */
	prev_par = *par;
	prev_tilt = curr_tilt;
	prev_lpc_gain = lpc_gain;

	/* Update syn_begin for next frame */
	syn_begin = sub(syn_begin, FRAME);
}


/* =========================================================== */
/* melp_syn_init() performs initialization for melp synthesis. */
/* =========================================================== */

void melp_syn_init()
{
	register Shortword	i;
	Shortword	temp;


	v_zap(prev_par.gain, NUM_GAINFR);
	prev_par.pitch = UV_PITCH_Q7;
	temp = 0;
	for (i = 0; i < LPC_ORD; i++){
		temp = add(temp, INV_LPC_ORD);
		prev_par.lsf[i] = temp;
	}
	prev_par.jitter = 0;
	v_zap(&prev_par.bpvc[0], NUM_BANDS);
	syn_begin = 0;
	v_zap(sigsave, PITCHMAX);

	fill(prev_par.fs_mag, ONE_Q13, NUM_HARM);

	/* Initialize fixed MSE weighting and inverse of weighting */

	if (!w_fs_init){
		vq_fsw(w_fs, NUM_HARM, X60_Q9);
		for (i = 0; i < NUM_HARM; i++)
			w_fs_inv[i] = divide_s(ONE_Q13, w_fs[i]);      /* w_fs_inv in Q14 */
		w_fs_init = TRUE;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区二区三区四区| 国产欧美精品国产国产专区| 一区二区三区小说| 成人精品免费看| 久久久久综合网| 国产一区二区美女诱惑| 精品免费国产二区三区| 久久精品国产一区二区| 日韩午夜精品电影| 蜜桃91丨九色丨蝌蚪91桃色| 欧美一区二区三区白人| 日韩精品一级二级| 日韩午夜在线观看视频| 久久国产精品99久久久久久老狼| 日韩一区二区免费视频| 另类的小说在线视频另类成人小视频在线| 欧美一区二区视频网站| 日本伊人色综合网| 日韩一区二区三区在线| 看国产成人h片视频| 精品欧美一区二区在线观看| 国产福利一区二区三区视频在线| 国产拍欧美日韩视频二区| 高清视频一区二区| 国产精品嫩草99a| 97精品久久久午夜一区二区三区 | 最新热久久免费视频| yourporn久久国产精品| 玉米视频成人免费看| 欧美日韩另类一区| 日韩不卡一区二区| 亚洲精品在线电影| 国产69精品久久久久毛片| 亚洲图片激情小说| 欧美网站一区二区| 久久精品国产亚洲aⅴ| 国产午夜精品理论片a级大结局| 成人avav在线| 一区二区三区免费网站| 欧美日韩一区二区三区在线| 日本美女视频一区二区| 久久青草国产手机看片福利盒子| 成人一区二区三区视频在线观看| 日韩一区在线播放| 9191国产精品| 国产精品自在欧美一区| 中文在线免费一区三区高中清不卡| 色综合久久88色综合天天| 日韩不卡一区二区三区| 国产欧美一区二区精品性色| 色视频欧美一区二区三区| 美女性感视频久久| 国产精品久久久久久久久快鸭| 91国偷自产一区二区开放时间| 日韩av一区二区三区四区| 国产亚洲综合在线| 日本韩国欧美三级| 久久精品国产秦先生| 日韩精品一二三区| 久久久久久久一区| 91国产丝袜在线播放| 久久精品国产秦先生| 亚洲图片激情小说| 精品国产91乱码一区二区三区| aaa欧美大片| 七七婷婷婷婷精品国产| 国产精品电影一区二区| 欧美一区二区三区在线观看视频| 成人av综合一区| 青草av.久久免费一区| 国产精品久久久久精k8 | 欧美亚洲国产一区在线观看网站 | www.久久久久久久久| 日韩高清欧美激情| 中文字幕欧美一| 91精品国产综合久久蜜臀| 9久草视频在线视频精品| 日韩精品成人一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 56国语精品自产拍在线观看| 成a人片亚洲日本久久| 日本成人在线视频网站| 亚洲男人天堂av网| 久久―日本道色综合久久| 欧美色视频在线观看| 成人国产精品免费网站| 麻豆精品一二三| 亚洲午夜一区二区| 一色屋精品亚洲香蕉网站| 精品不卡在线视频| 欧美色倩网站大全免费| 成人美女视频在线观看18| 精品综合久久久久久8888| 亚洲成人动漫在线免费观看| 国产精品久99| 久久久久久久久伊人| 欧美一区欧美二区| 欧美视频一区二区三区在线观看| 成人黄色电影在线| 国产精品一二三四| 美女任你摸久久| 亚洲成人精品影院| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕精品一区二区精品绿巨人| 日韩一区二区在线观看视频 | 欧美大片在线观看一区二区| 欧美色图12p| 91成人网在线| 99久久精品国产一区| 国产mv日韩mv欧美| 国产美女在线观看一区| 老司机一区二区| 免费日韩伦理电影| 日本中文字幕一区二区有限公司| 亚洲高清三级视频| 亚洲资源中文字幕| 一区二区三区四区不卡视频 | 欧美精品一区二区蜜臀亚洲| 欧美精选一区二区| 欧美丝袜丝交足nylons图片| 91久久线看在观草草青青| 91玉足脚交白嫩脚丫在线播放| 成人性生交大片免费看中文| 国产精品一区二区三区99| 极品美女销魂一区二区三区免费| 免费精品视频在线| 免费精品视频在线| 久久精品二区亚洲w码| 日韩精品成人一区二区三区| 琪琪一区二区三区| 久久国产婷婷国产香蕉| 精品一区二区三区影院在线午夜| 久久精品国产澳门| 极品美女销魂一区二区三区免费| 极品少妇一区二区| 国产激情偷乱视频一区二区三区| 国产精选一区二区三区| 国产精品18久久久久久久网站| 国产福利91精品一区| 成人av电影免费观看| 99久久99久久精品免费观看| 色综合天天视频在线观看| 日本韩国欧美国产| 欧美日韩中文精品| 91精品国产色综合久久不卡蜜臀| 欧美一二三四区在线| wwwwxxxxx欧美| 国产欧美1区2区3区| 国产精品传媒在线| 亚洲精品久久久久久国产精华液| 亚洲一区二区五区| 日本特黄久久久高潮| 国内精品国产三级国产a久久| 国产v日产∨综合v精品视频| 91麻豆视频网站| 欧美日韩在线电影| 日韩限制级电影在线观看| 国产亚洲精品福利| 亚洲手机成人高清视频| 亚洲电影你懂得| 麻豆成人久久精品二区三区小说| 国产乱码精品一区二区三区av| 日韩欧美在线网站| 久久免费看少妇高潮| 国产精品久久久久久久久久久免费看 | 欧美影院精品一区| 日韩欧美国产一区二区三区| 国产视频在线观看一区二区三区| 亚洲欧美激情插| 青椒成人免费视频| 成人毛片视频在线观看| 欧美色精品天天在线观看视频| 精品国产亚洲在线| 亚洲人成影院在线观看| 日韩精品视频网| 成人精品一区二区三区中文字幕| 日本高清无吗v一区| 日韩欧美国产综合一区| 国产精品第四页| 男男成人高潮片免费网站| www.av精品| 欧美一级欧美一级在线播放| 国产精品青草久久| 午夜一区二区三区在线观看| 国产一区二区福利| 91官网在线观看| 精品久久久久久综合日本欧美| 日韩一区欧美小说| 麻豆国产一区二区| 91免费国产在线| 精品少妇一区二区三区日产乱码 | 日本特黄久久久高潮| 成人国产电影网| 91精品国产欧美一区二区18| 国产精品美日韩| 人人狠狠综合久久亚洲| www.66久久| 久久人人爽爽爽人久久久| 亚洲高清视频中文字幕| www.日韩精品|