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

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

?? melp_syn.c

?? MELPe 1200 bps, fixed point
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* ================================================================== */
/*                                                                    */ 
/*    Microsoft Speech coder     ANSI-C Source Code                   */
/*    SC1200 1200 bps speech coder                                    */
/*    Fixed Point Implementation      Version 7.0                     */
/*    Copyright (C) 2000, Microsoft Corp.                             */
/*    All rights reserved.                                            */
/*                                                                    */ 
/* ================================================================== */

/*

2.4 kbps MELP Proposed Federal Standard speech coder

Fixed-point C code, version 1.0

Copyright (c) 1998, Texas Instruments, Inc.

Texas Instruments has intellectual property rights on the MELP
algorithm.	The Texas Instruments contact for licensing issues for
commercial and non-government use is William Gordon, Director,
Government Contracts, Texas Instruments Incorporated, Semiconductor
Group (phone 972 480 7442).

The fixed-point version of the voice codec Mixed Excitation Linear
Prediction (MELP) is based on specifications on the C-language software
simulation contained in GSM 06.06 which is protected by copyright and
is the property of the European Telecommunications Standards Institute
(ETSI). This standard is available from the ETSI publication office
tel. +33 (0)4 92 94 42 58. ETSI has granted a license to United States
Department of Defense to use the C-language software simulation contained
in GSM 06.06 for the purposes of the development of a fixed-point
version of the voice codec Mixed Excitation Linear Prediction (MELP).
Requests for authorization to make other use of the GSM 06.06 or
otherwise distribute or modify them need to be addressed to the ETSI
Secretariat fax: +33 493 65 47 16.

*/

#include "sc1200.h"
#include "mathhalf.h"
#include "macro.h"
#include "lpc_lib.h"
#include "mat_lib.h"
#include "vq_lib.h"
#include "fs_lib.h"
#include "math_lib.h"
#include "constant.h"
#include "global.h"
#include "harm.h"
#include "fsvq_cb.h"
#include "dsp_sub.h"
#include "melp_sub.h"
#include "coeff.h"

#if POSTFILTER
#include "postfilt.h"
#endif

#define INV_LPC_ORD			2979
                               /* ((1.0/(LPC_ORD + 1))*(1<<15) + 0.5) for Q15 */
#define X005_Q19			26214                         /* 0.05 * (1 << 19) */
#define X025_Q15			8192                          /* 0.25 * (1 << 15) */
#define X1_732_Q14			28377                        /* 1.732 * (1 << 14) */
#define X12_Q8				3072                           /* 12.0 * (1 << 8) */
#define X30_Q8				7680                           /* 30.0 * (1 << 8) */
#define TIME_DOMAIN_SYN		FALSE
#define TILT_ORD			1
#define SCALEOVER			10
#define INV_SCALEOVER_Q18	26214              /* ((1.0/SCALEOVER)*(1 << 18)) */
#define PDEL				SCALEOVER

#if (MIX_ORD > DISP_ORD)
#define BEGIN MIX_ORD
#else
#define BEGIN DISP_ORD
#endif

#define ORIGINAL_SYNTH_GAIN		FALSE
#if ORIGINAL_SYNTH_GAIN
#define SYN_GAIN_Q4				16000                    /* (1000.0*(1 << 4)) */
#else
#define SYN_GAIN_Q4				32000
#endif


static struct melp_param	prev_par;
static Shortword	sigsave[PITCHMAX];
static Shortword	syn_begin;
static BOOLEAN	erase;

/* Prototype */

static void		melp_syn(struct melp_param *par, Shortword sp_out[]);

/****************************************************************************
**
** Function:		synthesis
**
** Description: 	The synthesis routine for the sc1200 coder
**
** Arguments:
**
**	melp_param *par ---- output encoded melp parameters
**	Shortword sp_in[] ---- input speech data buffer
**
** Return value:	None
**
*****************************************************************************/
void synthesis(struct melp_param *par, Shortword sp_out[])
{
	register Shortword	i;


	/* Copy previous period of processed speech to output array */
	if (syn_begin > 0){
		if (syn_begin > frameSize){                             /* impossible */
			v_equ(sp_out, sigsave, frameSize);
			/* past end: save remainder in sigsave[0] */
			v_equ(sigsave, &sigsave[frameSize], (Shortword) (syn_begin - frameSize));
		} else
			v_equ(sp_out, sigsave, syn_begin);
	}

	erase = FALSE;                                         /* no erasures yet */

	/* Read and decode channel input buffer. */
	if (rate == RATE2400)
		erase = melp_chn_read(&quant_par, par, &prev_par, chbuf);
#if !SKIP_CHANNEL
	else
		erase = (BOOLEAN) low_rate_chn_read(&quant_par, par, &prev_par);
#endif

	if (rate == RATE2400){
		par->uv_flag = quant_par.uv_flag[0];
		melp_syn(par, sp_out);
	} else {
		for (i = 0; i < NF; i++){
			melp_syn(&par[i], &sp_out[i*FRAME]);
			if ((syn_begin > 0) && (i < NF - 1))
				v_equ(&sp_out[(i + 1)*FRAME], sigsave, syn_begin);
		}
	}
}


/* Name: melp_syn.c                                                           */
/*  Description: MELP synthesis                                               */
/*    This program takes the new parameters for a speech                      */
/*    frame and synthesizes the output speech.  It keeps                      */
/*    an internal record of the previous frame parameters                     */
/*    to use for interpolation.                                               */
/*  Inputs:                                                                   */
/*    *par - MELP parameter structure                                         */
/*  Outputs:                                                                  */
/*    speech[] - output speech signal                                         */
/*  Returns: void                                                             */

static void		melp_syn(struct melp_param *par, Shortword sp_out[])
{
	register Shortword	i;
	static BOOLEAN	firstTime = TRUE;
	static Shortword	noise_gain = MIN_NOISE_Q8;
	static Shortword	prev_lpc_gain = ONE_Q15;
	static Shortword	lpc_del[LPC_ORD];                               /* Q0 */
	static Shortword	prev_tilt;
	static Shortword	prev_pcof[MIX_ORD + 1], prev_ncof[MIX_ORD + 1];
	static Shortword	disp_del[DISP_ORD];
	static Shortword	ase_del[LPC_ORD], tilt_del[TILT_ORD];
	static Shortword	pulse_del[MIX_ORD], noise_del[MIX_ORD];
	Shortword	fs_real[PITCHMAX];
	Shortword	sig2[BEGIN + PITCHMAX];
	Shortword	sigbuf[BEGIN + PITCHMAX];
	Shortword	gaincnt, length;
	Shortword	intfact, intfact1, ifact, ifact_gain;
	Shortword	gain, pulse_gain, pitch, jitter;
	Shortword	curr_tilt, tilt_cof[TILT_ORD + 1];
	Shortword	sig_prob, syn_gain, lpc_gain;
	Shortword	lsf[LPC_ORD];
	Shortword	lpc[LPC_ORD + 1];
	Shortword	ase_num[LPC_ORD + 1], ase_den[LPC_ORD];
	Shortword	curr_pcof[MIX_ORD + 1], curr_ncof[MIX_ORD + 1];
	Shortword	pulse_cof[MIX_ORD + 1], noise_cof[MIX_ORD + 1];
	Shortword	temp1, temp2;
	Longword	L_temp1, L_temp2;
	Shortword	fc_prev, fc_curr, fc;

	/* Update adaptive noise level estimate based on last gain */
	if (firstTime){
		noise_gain = par->gain[NUM_GAINFR - 1];           /* noise_gain in Q8 */
		prev_tilt = 0;
		v_zap(prev_pcof, MIX_ORD + 1);
		v_zap(prev_ncof, MIX_ORD + 1);
		prev_ncof[MIX_ORD/2] = ONE_Q15;
		v_zap(disp_del, DISP_ORD);
		v_zap(ase_del, LPC_ORD);
		v_zap(tilt_del, TILT_ORD);
		v_zap(pulse_del, MIX_ORD);
		v_zap(noise_del, MIX_ORD);
		firstTime = FALSE;
	} else if (!erase){
		for (i = 0; i < NUM_GAINFR; i++){
			noise_est(par->gain[i], &noise_gain, UPCONST_Q19, DOWNCONST_Q17,
					  MIN_NOISE_Q8, MAX_NOISE_Q8);

			/* Adjust gain based on noise level (noise suppression) */
			noise_sup(&par->gain[i], noise_gain, MAX_NS_SUP_Q8, MAX_NS_ATT_Q8,
					  NFACT_Q8);
		}
	}

	if (par->uv_flag && (rate == RATE1200)){
		fill(par->fs_mag, ONE_Q13, NUM_HARM);
		par->pitch = UV_PITCH_Q7;
		par->jitter = X025_Q15;
	}

	/* Un-weight Fourier magnitudes */
	if (!par->uv_flag && !erase)
		window_Q(par->fs_mag, w_fs_inv, par->fs_mag, NUM_HARM, 14);

	/* Clamp LSP bandwidths to avoid sharp LPC filters */
	lpc_clamp(par->lsf, BWMIN_Q15, LPC_ORD);

	/* Calculate spectral tilt for current frame for spectral enhancement */
	tilt_cof[0] = ONE_Q15;                                 /* tilt_cof in Q15 */
	lpc_lsp2pred(par->lsf, &(lpc[1]), LPC_ORD);

	/* Use LPC prediction gain for adaptive scaling */

	/*	lpc_gain = sqrt(lpc_pred2refl(lpc, sig2, LPC_ORD)); */
	/* Here we only make use of sig2[0] from the returned value instead of    */
	/* using the whole array sig2[].                                          */

	lpc_gain = lpc_pred2refl(&(lpc[1]), sig2, LPC_ORD);
	lpc_gain = sqrt_fxp(lpc_gain, 15);                     /* lpc_gain in Q15 */
	if (sig2[0] < 0)
		curr_tilt = shr(sig2[0], 1);                      /* curr_tilt in Q15 */
	else
		curr_tilt = 0;

	/* Disable pitch interpolation for high-pitched onsets */

	/*	if (par->pitch < 0.5*prev_par.pitch &&
		par->gain[0] > 6.0 + prev_par.gain[NUM_GAINFR - 1]) */

	temp1 = shr(prev_par.pitch, 1);
	temp2 = add(SIX_Q8, prev_par.gain[NUM_GAINFR - 1]);
	if ((par->pitch < temp1) && (par->gain[0] > temp2)){
		/* copy current pitch into previous */
		prev_par.pitch = par->pitch;
	}

	/* Set pulse and noise coefficients based on voicing strengths */
	v_zap(curr_pcof, MIX_ORD + 1);                        /* curr_pcof in Q14 */
	v_zap(curr_ncof, MIX_ORD + 1);                        /* curr_ncof in Q14 */
	for (i = 0; i < NUM_BANDS; i++){
		if (par->bpvc[i] > X05_Q14)
			v_add(curr_pcof, bp_cof[i], MIX_ORD + 1);    /* bp_cof in Q14 */
		else
			v_add(curr_ncof, bp_cof[i], MIX_ORD + 1);
	}

	/* Process each pitch period */
	while (syn_begin < FRAME){

		/* interpolate previous and current parameters */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品国产热久久91蜜凸| 亚洲欧美日韩国产成人精品影院| 国产精品99久久久久久久vr| 1000部国产精品成人观看| 欧美日高清视频| 日韩三级中文字幕| 成人性生交大片免费| 日本成人在线网站| 中文字幕av不卡| 777午夜精品免费视频| 成人一区在线观看| 久久日韩粉嫩一区二区三区 | 国产成人在线视频免费播放| 一二三区精品福利视频| 欧美tk—视频vk| 欧美精品色一区二区三区| 国产一区二区看久久| 日韩欧美www| 欧美日韩国产成人在线免费| 国产suv精品一区二区6| 精品制服美女久久| 亚洲免费观看高清在线观看| 国产suv精品一区二区883| 日韩亚洲欧美成人一区| 成人一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 欧美日韩高清一区| 一本大道久久a久久综合婷婷| 麻豆国产欧美一区二区三区| 天天色天天爱天天射综合| 欧美高清一级片在线观看| 精品久久一二三区| 6080午夜不卡| 精品视频免费在线| 91视频www| 亚洲成a人片综合在线| 中文字幕中文字幕在线一区| 26uuu久久综合| 欧美变态口味重另类| 欧美日韩激情在线| 欧美另类变人与禽xxxxx| 一本一道综合狠狠老| 国产aⅴ综合色| 国产在线播放一区| 这里是久久伊人| 欧美一区二区日韩| 欧美亚洲一区二区在线观看| 欧美亚洲图片小说| 日韩欧美综合一区| 国产精品福利影院| 久久精品男人天堂av| 国产午夜精品理论片a级大结局| 欧美精品日日鲁夜夜添| 91精品午夜视频| 欧美日韩精品一区二区三区蜜桃 | 精品少妇一区二区三区免费观看 | 奇米影视在线99精品| 国产精品国产三级国产有无不卡 | 在线一区二区三区四区五区| 在线欧美一区二区| 色视频成人在线观看免| 9i在线看片成人免费| 福利一区福利二区| 丁香激情综合国产| 色婷婷久久久久swag精品| 91亚洲精品乱码久久久久久蜜桃| 日本道色综合久久| 欧日韩精品视频| 日韩视频一区在线观看| 日韩一级二级三级| 中文乱码免费一区二区| 日本一区二区高清| 在线日韩av片| 欧美顶级少妇做爰| 91国产丝袜在线播放| 91麻豆精品91久久久久同性| 91麻豆精品国产自产在线观看一区| 日韩欧美亚洲另类制服综合在线| 欧美精品v日韩精品v韩国精品v| 精品久久久三级丝袜| 久久久久久久电影| 亚洲人成伊人成综合网小说| 国产视频一区二区在线| 国产精品美女一区二区三区 | 色吊一区二区三区 | 国产亚洲一本大道中文在线| 亚洲丝袜制服诱惑| 夜夜嗨av一区二区三区 | 国产精品一区免费视频| 久久66热re国产| 色婷婷激情久久| 91精品国模一区二区三区| 国产精品乱人伦中文| 一区二区三区美女视频| 国产a精品视频| 欧洲亚洲精品在线| 国产日韩欧美精品综合| 亚洲视频在线观看三级| 男女性色大片免费观看一区二区| 黄色成人免费在线| 欧美在线视频你懂得| 日韩精品专区在线影院重磅| 精品日韩在线观看| 亚洲国产欧美另类丝袜| 日本不卡一二三区黄网| 欧洲av一区二区嗯嗯嗯啊| 欧美精品一区二区高清在线观看| 一区二区三区四区不卡视频| 精品在线视频一区| 欧美日韩高清影院| 久久久久久久性| 高清不卡一区二区在线| 久久精品一区二区三区四区| 亚洲色图在线视频| 国产麻豆一精品一av一免费| av一区二区三区在线| 欧美一区二区日韩| 亚洲日本在线a| 午夜欧美在线一二页| 91丝袜高跟美女视频| 欧美挠脚心视频网站| 亚洲综合成人在线| 国产成人在线网站| 久久久久久黄色| 日韩影视精彩在线| 91精品久久久久久久久99蜜臂| 亚洲视频一二三| av动漫一区二区| 久久久久久麻豆| 国产一区三区三区| 欧美精品在欧美一区二区少妇| 亚洲在线观看免费| 91在线码无精品| 亚洲摸摸操操av| 国产99一区视频免费| 亚洲国产高清aⅴ视频| 精品国产91洋老外米糕| 另类的小说在线视频另类成人小视频在线 | 欧美电影在线免费观看| 欧美亚洲免费在线一区| 亚洲男女一区二区三区| 成人综合在线观看| **欧美大码日韩| 国产成a人无v码亚洲福利| 国产日韩欧美激情| 国产麻豆精品在线观看| 91精品在线免费| 91成人在线精品| 国产成人丝袜美腿| 99久久久无码国产精品| 成人综合日日夜夜| 日韩美女天天操| 亚洲国产精品久久久男人的天堂| 国内精品在线播放| 国产日韩欧美制服另类| 国产精品主播直播| 91精品国产福利| 国产精品一区专区| 欧美精品久久99| 美女诱惑一区二区| 亚洲欧洲一区二区在线播放| 国产偷v国产偷v亚洲高清| 中文字幕国产一区二区| 亚洲国产岛国毛片在线| 亚洲欧洲性图库| 亚洲激情五月婷婷| 欧美精品一区二区三区一线天视频 | 色综合久久综合网97色综合| 男人的天堂久久精品| 成人三级伦理片| 6080yy午夜一二三区久久| 中文字幕免费不卡| 国产一区在线不卡| 日韩三级视频在线观看| 日韩美女精品在线| 美女网站在线免费欧美精品| 91色|porny| 91精品啪在线观看国产60岁| 最新中文字幕一区二区三区| 亚洲二区视频在线| 久久99日本精品| 在线播放日韩导航| 亚洲乱码国产乱码精品精98午夜 | 一本一道久久a久久精品综合蜜臀| 欧美视频在线不卡| 综合激情成人伊人| 亚洲一区二区三区四区的| 日韩影院免费视频| 91久久人澡人人添人人爽欧美| 久久综合给合久久狠狠狠97色69| 丝袜a∨在线一区二区三区不卡| 国产喷白浆一区二区三区| 国产欧美日韩视频在线观看| 国产乱码精品一区二区三| 欧美一区二区在线视频| 亚洲成人一区二区| 色婷婷一区二区三区四区| 欧美mv日韩mv国产| 国产老女人精品毛片久久| 国产一区二区三区国产|