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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? melp_sub.c

?? MELPe 1200 bps, fixed point
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/*

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.

*/

/* ===================================== */
/* melp_sub.c: MELP-specific subroutines */
/* ===================================== */

#include "sc1200.h"
#include "mathhalf.h"
#include "math_lib.h"
#include "mat_lib.h"
#include "dsp_sub.h"
#include "melp_sub.h"
#include "pit_lib.h"
#include "constant.h"
#include "coeff.h"
#include "global.h"

/* Filter orders */

#define CONSTANT_SCALE		FALSE
#define MINGAIN				0
#define LOG10OF2X2			1233                         /* 2*log10(2) in Q11 */
#define GAIN_INT_DB_Q8		1280                              /* 5 * (1 << 8) */
#define ONE_Q8				256                                   /* (1 << 8) */
#define THREE_Q8			768                               /* 3 * (1 << 8) */
#define SIX_Q12				24576                            /* 6 * (1 << 12) */
#define TEN_Q11				20480                           /* 10 * (1 << 11) */
#define X0001_Q8			0                             /* 0.001 * (1 << 8) */
#define X01_Q14				1638                           /* 0.1 * (1 << 14) */
#define N2_Q11				-4096                           /* -2 * (1 << 11) */
#define M01_Q15				-3276                         /* -0.1 * (1 << 15) */
#define M10_Q11				-20480                         /* -10 * (1 << 11) */


/* Name: bpvc_ana.c                                                           */
/*  Description: Bandpass voicing analysis                                    */
/*  Inputs:                                                                   */
/*    speech[] - input speech signal                                          */
/*    fpitch[] - initial (floating point) pitch estimates                     */
/*  Outputs:                                                                  */
/*    bpvc[] - bandpass voicing decisions                                     */
/*    pitch[] - frame pitch estimates                                         */
/*  Returns: void                                                             */
/*                                                                            */
/*  Copyright (c) 1995,1997 by Texas Instruments, Inc.  All rights reserved.  */
/*                                                                            */
/* Q values: speech - Q0, fpitch - Q7, bpvc - Q14, pitch - Q7                 */

void bpvc_ana(Shortword speech[], Shortword fpitch[], Shortword bpvc[],
			  Shortword *pitch)
{
	register Shortword	i, section;
	static Shortword	bpfsp[NUM_BANDS][PITCH_FR - FRAME];
	static Shortword	bpfdelin[NUM_BANDS][BPF_ORD];
	static Shortword	bpfdelout[NUM_BANDS][BPF_ORD];
	static Shortword	envdel[NUM_BANDS][ENV_ORD];
	static Shortword	envdel2[NUM_BANDS];
	static BOOLEAN	firstTime = TRUE;
	Shortword	sigbuf[BPF_ORD + PITCH_FR];
	Shortword	pcorr, temp, scale;
	Shortword	filt_index;



	if (firstTime){
		for (i = 0; i < NUM_BANDS; i++){
			v_zap(bpfsp[i], PITCH_FR - FRAME);
			v_zap(bpfdelin[i], BPF_ORD);
			v_zap(bpfdelout[i], BPF_ORD);
		}
		for (i = 0; i < NUM_BANDS; i++)
			v_zap(envdel[i], ENV_ORD);
		v_zap(envdel2, NUM_BANDS);
		firstTime = FALSE;
	}

	/* Filter lowest band and estimate pitch */
	v_equ(&sigbuf[BPF_ORD], bpfsp[0], PITCH_FR - FRAME);
	v_equ(&sigbuf[BPF_ORD + PITCH_FR - FRAME],
		  &speech[PITCH_FR - FRAME - PITCHMAX], FRAME);

	for (section = 0; section < BPF_ORD/2; section ++){
		iir_2nd_s(&sigbuf[BPF_ORD + PITCH_FR - FRAME],
				  &bpf_den[section*3], &bpf_num[section*3],
				  &sigbuf[BPF_ORD + PITCH_FR - FRAME], &bpfdelin[0][section*2],
				  &bpfdelout[0][section*2], FRAME);
	}
	v_equ(bpfsp[0], &sigbuf[BPF_ORD + FRAME], PITCH_FR - FRAME);

	/* Scale signal for pitch correlations */
	f_pitch_scale(&sigbuf[BPF_ORD], &sigbuf[BPF_ORD], PITCH_FR);

	*pitch = frac_pch(&sigbuf[BPF_ORD + PITCHMAX], bpvc, fpitch[0], 5,
					  PITCHMIN, PITCHMAX, PITCHMIN_Q7, PITCHMAX_Q7,
					  MINLENGTH);

	for (i = 1; i < NUM_PITCHES; i++){
		temp = frac_pch(&sigbuf[BPF_ORD + PITCHMAX], &pcorr, fpitch[i], 5,
						PITCHMIN, PITCHMAX, PITCHMIN_Q7, PITCHMAX_Q7,
						MINLENGTH);

		/* choose largest correlation value */
		if (pcorr > bpvc[0]){
			*pitch = temp;
			bpvc[0] = pcorr;
		}
	}

	/* Calculate bandpass voicing for frames */
	for (i = 1; i < NUM_BANDS; i++){
		/* Bandpass filter input speech */
		v_equ(&sigbuf[BPF_ORD], bpfsp[i], PITCH_FR - FRAME);
		v_equ(&sigbuf[BPF_ORD + PITCH_FR - FRAME],
			  &speech[PITCH_FR - FRAME - PITCHMAX], FRAME);

		for (section = 0; section < BPF_ORD/2; section++){
			filt_index = (Shortword) (i*(BPF_ORD/2)*3 + section*3);
			iir_2nd_s(&sigbuf[BPF_ORD + PITCH_FR - FRAME],
					  &bpf_den[filt_index], &bpf_num[filt_index],
					  &sigbuf[BPF_ORD + PITCH_FR - FRAME],
					  &bpfdelin[i][section*2], &bpfdelout[i][section*2],
					  FRAME);
		}
		v_equ(bpfsp[i], &sigbuf[BPF_ORD + FRAME], PITCH_FR - FRAME);

		/* Scale signal for pitch correlations */
		scale = f_pitch_scale(&sigbuf[BPF_ORD], &sigbuf[BPF_ORD], PITCH_FR);

		/* Check correlations for each frame */
		temp = frac_pch(&sigbuf[BPF_ORD + PITCHMAX], &bpvc[i], *pitch, 0,
						PITCHMIN, PITCHMAX, PITCHMIN_Q7, PITCHMAX_Q7,
						MINLENGTH);

		/* Calculate envelope of bandpass filtered input speech */
		/* update delay buffers without scaling */
		temp = shr(envdel2[i], scale);
		envdel2[i] = shr(sigbuf[BPF_ORD + FRAME - 1], (Shortword) (-scale));
		v_equ_shr(&sigbuf[BPF_ORD - ENV_ORD], envdel[i], scale, ENV_ORD);
		envelope(&sigbuf[BPF_ORD], temp, &sigbuf[BPF_ORD], PITCH_FR);
		v_equ_shr(envdel[i], &sigbuf[BPF_ORD + FRAME - ENV_ORD],
				  (Shortword) (-scale), ENV_ORD);

		/* Scale signal for pitch correlations */
		f_pitch_scale(&sigbuf[BPF_ORD], &sigbuf[BPF_ORD], PITCH_FR);

		/* Check correlations for each frame */
		temp = frac_pch(&sigbuf[BPF_ORD + PITCHMAX], &pcorr, *pitch, 0,
						PITCHMIN, PITCHMAX, PITCHMIN_Q7, PITCHMAX_Q7,
						MINLENGTH);

		/* reduce envelope correlation */
		pcorr = sub(pcorr, X01_Q14);

		if (pcorr > bpvc[i])
			bpvc[i] = pcorr;
	}
}


/* Name: dc_rmv.c                                                             */
/*	Description: remove DC from input signal                                  */
/*	Inputs:                                                                   */
/*	  sigin[] - input signal                                                  */
/*	  dcdel[] - filter delay history (size DC_ORD)                            */
/*	  frame - number of samples to filter                                     */
/*	Outputs:                                                                  */
/*	  sigout[] - output signal                                                */
/*	  dcdel[] - updated filter delay history                                  */
/*	Returns: void                                                             */
/*                                                                            */
/*	Copyright (c) 1995,1997 by Texas Instruments, Inc.	All rights reserved.  */

/* DC removal filter                                                          */
/* 4th order Chebychev Type II 60 Hz removal filter                           */
/* cutoff = 60 Hz, stop = -30 dB                                              */
/* matlab commands: [z, p, k] = cheby2(4, 30, 0.015, 'high');                 */
/*						sos = zp2sos(z, p, k);                                */
/* order of sections swapped                                                  */

void dc_rmv(Shortword sigin[], Shortword sigout[], Shortword delin[],
			Shortword delout_hi[], Shortword delout_lo[],
			Shortword frame)
{
	static const Shortword	dc_num[(DC_ORD/2)*3] = {             /* Maybe Q13 */
#if NEW_DC_FILTER
		8192,  -16376, 8192,
		8192,  -16370, 8192,
		7353,  -14706, 7353
#else
		7769, -15534, 7769,
		8007, -15999, 8007
#endif
	};

	/* Signs of coefficients for dc_den are reversed.  dc_den[0] and          */
	/* dc_den[3] are ignored.                                                 */
	static const Shortword	dc_den[(DC_ORD/2)*3] = {
#if NEW_DC_FILTER
		-8192, 15729, -7569,
		-8192, 16111, -7959,
		-8192, 15520, -7353
#else
		-8192, 15521, -7358,
		-8192, 15986, -7836
#endif
	};
	register Shortword	section;

	/* Remove DC from input speech */
	v_equ(sigout, sigin, frame);
	for (section = 0; section < DC_ORD/2; section++)
		iir_2nd_d(sigout, &dc_den[section*3], &dc_num[section*3], sigout,
				  &delin[section*2], &delout_hi[section*2],
				  &delout_lo[section*2], frame);
}


/* This function removes the DC component of a given signal sigin[].  It      */
/* computes the offset Sum(sigin[])/len by                                    */
/* Sum(sigin[])/len = Sum(sigin[])/2^up_shift * (two_power_down/len) * 2      */
/* where two_power_down <= len < 2^up_shift.  This way we ensure that         */
/* Sum(sigin[])/up_shift does not overflow, (two_power_down/len) is a Q15     */
/* and the multiplication by 2 is straightforward.                            */
/*                                                                            */
/* Originally this function was written in such a way that we use a Shortword */
/* for "sum", and it is important to make sure there is no overflow with      */
/* "sum".  However, later it was found a siginificant inaccuracy is           */
/* introduced if we shift all sigin[] by up_shift (losing significant digits) */
/* and then add them.  This means when "len" is large the result could be     */
/* wrong.  Now "sum" is declared a Longword and all these problems disappear. */

void remove_dc(Shortword sigin[], Shortword sigout[], Shortword len)
{
	register Shortword	i;
	Shortword	up_shift, two_power_down;
	Longword	sum;
	Shortword	temp;
	Shortword	offset;


	/* Find up_shift and two_power_down.  Note that two_power_down can be     */
	/* equal to len.                                                          */

	temp = norm_s(len);
	up_shift = sub(15, temp);
	temp = sub(up_shift, 1);
	two_power_down = shl(1, temp);

	sum = 0;
	for (i = 0; i < len; i++)
		sum = L_add(sum, L_deposit_l(sigin[i]));
	sum = L_shr(sum, up_shift);

	/* if (len > two_power_down) */
	/* if condition has been removed 'cos it is always true */
	{
		temp = divide_s(two_power_down, len);                          /* Q15 */
		offset = mult(extract_l(sum), temp);
	}
	offset = shl(offset, 1);

	for (i = 0; i < len; i++)
		sigout[i] = sub(sigin[i], offset);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福利视频一区| 成人的网站免费观看| 亚洲国产精品ⅴa在线观看| 欧美一区二区女人| 欧美三级电影网| 亚洲午夜精品久久久久久久久| 最新日韩av在线| 亚洲欧洲日韩女同| 自拍偷拍亚洲综合| 一区二区在线看| 亚洲高清免费观看| 日韩av网站在线观看| 婷婷夜色潮精品综合在线| 婷婷久久综合九色国产成人| 亚洲成人一二三| 久久99久久99精品免视看婷婷| 美腿丝袜亚洲综合| 国产一区二区在线看| 丁香另类激情小说| 色欧美乱欧美15图片| 欧美人妇做爰xxxⅹ性高电影| 欧美二区乱c少妇| 欧美tickling挠脚心丨vk| 国产日韩欧美a| 一区二区三区毛片| 欧美aaaaaa午夜精品| 老司机精品视频线观看86| 国产精品影音先锋| 色综合一区二区三区| 制服丝袜中文字幕一区| 久久精品视频一区| 国产精品不卡在线| 日韩黄色在线观看| 成人av动漫网站| 欧美日韩美女一区二区| 久久久亚洲精华液精华液精华液| 国产精品久久久久久久久晋中 | 99在线视频精品| 国产一区二区三区最好精华液| 成人视屏免费看| 欧美综合在线视频| 久久久91精品国产一区二区三区| 成人动漫中文字幕| 91精品国产一区二区人妖| 中文字幕第一区二区| 亚洲一区二区三区三| 国产一区二区中文字幕| 午夜精品成人在线| 国产美女一区二区三区| 欧美乱妇15p| 国产视频一区二区在线观看| 欧美唯美清纯偷拍| 国产精品伦理一区二区| 日韩精品成人一区二区三区| 99re视频这里只有精品| 亚洲精品一线二线三线| 亚洲午夜久久久| av电影在线观看一区| 国产资源精品在线观看| 欧美视频第二页| 最好看的中文字幕久久| 国产在线视视频有精品| 欧美精品日韩一区| 亚洲精品第一国产综合野| 成人性生交大片免费看视频在线| 欧美一区二区三区不卡| 亚洲精品国久久99热| 国产成人午夜精品影院观看视频| 欧美精品高清视频| 亚洲大尺度视频在线观看| 国产精品成人一区二区三区夜夜夜| 久久国产精品色婷婷| 91麻豆精品国产| 日韩电影在线观看电影| 欧美午夜精品理论片a级按摩| 亚洲乱码国产乱码精品精的特点| 国产成人精品一区二| 国产视频在线观看一区二区三区| 久久99精品久久久久久动态图 | 亚洲伊人伊色伊影伊综合网| 91浏览器入口在线观看| 亚洲免费观看高清| 97se亚洲国产综合自在线不卡| 欧美高清在线精品一区| 粉嫩av一区二区三区在线播放 | 麻豆精品精品国产自在97香蕉| 欧美日韩国产在线观看| 青椒成人免费视频| 精品嫩草影院久久| 国产·精品毛片| 亚洲欧洲国产日本综合| 91国产视频在线观看| 亚洲成人自拍一区| 日韩欧美一区二区视频| 日韩二区在线观看| 久久综合久久99| 成人美女在线观看| 一卡二卡三卡日韩欧美| 51久久夜色精品国产麻豆| 久久丁香综合五月国产三级网站| 久久精品这里都是精品| 顶级嫩模精品视频在线看| 亚洲精选免费视频| 欧美一二三四区在线| 大陆成人av片| 亚洲成年人网站在线观看| 日韩欧美专区在线| heyzo一本久久综合| 亚洲午夜久久久久久久久久久 | 色综合中文字幕| 久久国产精品一区二区| 国产精品美女久久久久久久网站| 欧美综合在线视频| 久久久精品综合| 色综合久久久久综合体| 久久成人免费电影| 有码一区二区三区| 精品日韩99亚洲| 亚洲成a人片综合在线| 国产午夜精品理论片a级大结局| 色成年激情久久综合| 日韩avvvv在线播放| 666欧美在线视频| 99这里都是精品| 老司机精品视频线观看86| 一区二区三区视频在线看| 久久久亚洲精华液精华液精华液| 欧美男生操女生| 成人爱爱电影网址| 国产一区二区三区国产| 五月激情综合色| 日韩一区在线看| 久久久久免费观看| 91麻豆精品91久久久久同性| 91麻豆精东视频| 国产自产视频一区二区三区| 亚洲综合成人在线视频| 中文字幕 久热精品 视频在线| 91年精品国产| 国产风韵犹存在线视精品| 图片区小说区国产精品视频 | 91福利国产成人精品照片| 国产一区亚洲一区| 久久电影国产免费久久电影| 亚洲国产一区二区a毛片| 亚洲精品视频在线| 国产精品夫妻自拍| 亚洲欧洲av在线| 国产欧美综合在线观看第十页| 欧美电影免费观看完整版| 在线观看亚洲一区| 91麻豆精品秘密| 91捆绑美女网站| www.视频一区| 91网站视频在线观看| 成人国产精品免费观看动漫| 国产欧美久久久精品影院| 中文一区二区在线观看| 亚洲成人福利片| 国模冰冰炮一区二区| 欧洲精品在线观看| 成人高清视频在线| 91蜜桃视频在线| 日韩一区二区三区四区| 亚洲国产高清在线观看视频| 亚洲精品免费在线观看| 天天做天天摸天天爽国产一区| 中文字幕成人av| 五月婷婷欧美视频| 欧美色涩在线第一页| 国产酒店精品激情| 91视频在线看| 91麻豆产精品久久久久久| 日本精品视频一区二区| av在线播放一区二区三区| www.亚洲免费av| 国产精品一区二区在线看| 国产一区二区精品久久| 97精品国产97久久久久久久久久久久| 99久久精品99国产精品| 色综合久久99| 欧美视频在线观看一区二区| 日韩精品在线一区| 久久欧美一区二区| 国产精品久久久久桃色tv| 一区二区三区在线播| 日韩精品一二区| 狠狠色狠狠色综合日日91app| 天天色综合天天| 国产在线国偷精品产拍免费yy| 国产黄人亚洲片| 色综合一区二区三区| 久久欧美中文字幕| 中文字幕一区二区三区四区不卡 | 亚洲午夜久久久久久久久电影院| 亚洲r级在线视频| 国产剧情在线观看一区二区| 99国产精品视频免费观看| 欧美色偷偷大香| 在线成人av影院|