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

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

?? g72x.c

?? DM642平臺上的H.264源碼(可實時運行)
?? C
字號:
/*
 * g72x.c
 *
 * Common routines for G.721 and G.723 conversions.
 */

#include "g72x.h"

static short power2[15] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80,
			0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000};

/*
 * quan()
 *
 * quantizes the input val against the table of size short integers.
 * It returns i if table[i - 1] <= val < table[i].
 *
 * Using linear search for simple coding.
 */
static short
quan(
	short		val,
	short		*table,
	short		size)
{
	short		i;
	for (i = 0; i < size; i++)
		if (val < *table++)
			break;
	return (i);
}

/*
 * fmult()
 *
 * returns the integer product of the 14-bit integer "an" and
 * "floating point" representation (4-bit exponent, 6-bit mantessa) "srn".
 */
static short
fmult(
	short		an,
	short		srn)
{
	short		anmag, anexp, anmant;
	short		wanexp,  wanmant;//wanmag,
	short		retval;

	anmag = (an > 0) ? an : ((-an) & 0x1FFF);
	anexp = quan(anmag, power2, 15) - 6;
	anmant = (anmag == 0) ? 32 :
	    (anexp >= 0) ? anmag >> anexp : anmag << -anexp;
	wanexp = anexp + ((srn >> 6) & 0xF) - 13;

	wanmant = (anmant * (srn & 077) + 0x30) >> 4;
	retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) :
	    (wanmant >> -wanexp);

	return (((an ^ srn) < 0) ? -retval : retval);
}

/*
 * g72x_init_state()
 *
 * This routine initializes and/or resets the g72x_state structure
 * pointed to by 'state_ptr'.
 * All the initial state values are specified in the CCITT G.721 document.
 */
void
g72x_init_state(
	struct g72x_state *state_ptr)
{
	int		cnta;

	state_ptr->yu = 544;

	for (cnta = 0; cnta < 2; cnta++) {
		state_ptr->a[cnta] = 0;
		state_ptr->pk[cnta] = 0;
		state_ptr->sr[cnta] = 32;
	}
	for (cnta = 0; cnta < 6; cnta++) {
		state_ptr->b[cnta] = 0;
		state_ptr->dq[cnta] = 32;
	}

}

/*
 * predictor_zero()
 *
 * computes the estimated signal from 6-zero predictor.
 *
 */
short
predictor_zero(
	struct g72x_state *state_ptr)
{
	int		i;
	short		sezi;

	sezi = fmult(state_ptr->b[0] >> 2, state_ptr->dq[0]);
	for (i = 1; i < 6; i++)			/* ACCUM */
		sezi += fmult(state_ptr->b[i] >> 2, state_ptr->dq[i]);
	return (sezi);
}
/*
 * predictor_pole()
 *
 * computes the estimated signal from 2-pole predictor.
 *
 */
short
predictor_pole(
	struct g72x_state *state_ptr)
{
	return (fmult(state_ptr->a[1] >> 2, state_ptr->sr[1]) +
	    fmult(state_ptr->a[0] >> 2, state_ptr->sr[0]));
}
/*
 * step_size()
 *
 * computes the quantization step size of the adaptive quantizer.
 *
 */

/*
 * quantize()
 *
 * Given a raw sample, 'd', of the difference signal and a
 * quantization step size scale factor, 'y', this routine returns the
 * ADPCM codeword to which that sample gets quantized.  The step
 * size scale factor division operation is done in the log base 2 domain
 * as a subtraction.
 */
short
quantize(
	short		d,	/* Raw difference signal sample */
	short		y,	/* Step size multiplier */
	short		*table,	/* quantization table */
	short		size)	/* table size of short integers */
{
	short		dqm;	/* Magnitude of 'd' */
	short		exp;	/* Integer part of base 2 log of 'd' */
	short		mant;	/* Fractional part of base 2 log */
	short		dl;	/* Log of magnitude of 'd' */
	short		dln;	/* Step size scale factor normalized log */
	int		i;

	/*
	 * LOG
	 *
	 * Compute base 2 log of 'd', and store in 'dl'.
	 */
	dqm = abs(d);
	exp = quan(dqm >> 1, power2, 15);
	mant = ((dqm << 7) >> exp) & 0x7F;	/* Fractional portion. */
	dl = (exp << 7) + mant;

	/*
	 * SUBTB
	 *
	 * "Divide" by step size multiplier.
	 */
	dln = dl - (y >> 2);

	/*
	 * QUAN
	 *
	 * Obtain codword i for 'd'.
	 */
	i = quan(dln, table, size);
	if (d < 0)			/* take 1's complement of i */
		return ((size << 1) + 1 - i);
	else if (i == 0)		/* take 1's complement of 0 */
		return ((size << 1) + 1); /* new in 1988 */
	else
		return (i);
}
/*
 * reconstruct()
 *
 * Returns reconstructed difference signal 'dq' obtained from
 * codeword 'i' and quantization step size scale factor 'y'.
 * Multiplication is performed in log base 2 domain as addition.
 */
short
reconstruct(
	short		sign,	/* 0 for non-negative value */
	short		dqln,	/* G.72x codeword */
	short		y)	/* Step size multiplier */
{
	short		dql;	/* Log of 'dq' magnitude */
	short		dex;	/* Integer part of log */
	short		dqt;
	short		dq;	/* Reconstructed difference signal sample */

	dql = dqln + (y >> 2);	/* ADDA */

	if (dql < 0) {
		return ((sign) ? -0x8000 : 0);
	} else {		/* ANTILOG */
		dex = (dql >> 7) & 15;
		dqt = 128 + (dql & 127);
		dq = (dqt << 7) >> (14 - dex);
		return ((sign) ? (dq - 0x8000) : dq);
	}
}


/*
 * update()
 *
 * updates the state variables for each output code
 */
void
update(
	short		y,		/* quantizer step size */
	short		wi,		/* scale factor multiplier */
	short		dq,		/* quantized prediction difference */
	short		sr,		/* reconstructed signal */
	short		dqsez,		/* difference from 2-pole predictor */
	struct g72x_state *state_ptr)	/* coder state pointer */
{
	int		cnt;
	short		mag, exp;	/* Adaptive predictor, FLOAT A */
	short		a2p;		/* LIMC */
	short		a1ul;		/* UPA1 */
	short		pks1;	/* UPA2 */
	short		fa1;
	short		pk0;

	pk0 = (dqsez < 0) ? 1 : 0;	/* needed in updating predictor poles */

	mag = dq & 0x7FFF;		/* prediction difference magnitude */


	/* FUNCTW & FILTD & DELAY */
	/* update non-steady state step size multiplier */
	state_ptr->yu = y - (y >> 5) + wi;//wi=W[I(k)]>>5

	/* LIMB */
	if (state_ptr->yu < 544)	/* 544 <= yu <= 5120 */
		state_ptr->yu = 544;
	else if (state_ptr->yu > 5120)
		state_ptr->yu = 5120;


	/*
	 * Adaptive predictor coefficients.
	 */
	pks1 = pk0 ^ state_ptr->pk[0];		/* UPA2 */

	/* update predictor pole a[1] */
	a2p = state_ptr->a[1] - (state_ptr->a[1] >> 7);
	if (dqsez != 0) {
		fa1 = (pks1) ? state_ptr->a[0] : -state_ptr->a[0];
		if (fa1 < -8191)	/* a2p = function of fa1 */
		a2p -= 0x100;
		else if (fa1 > 8191)
			a2p += 0xFF;
		else
			a2p += fa1 >> 5;

		if (pk0 ^ state_ptr->pk[1])
			/* LIMC */
			if (a2p <= -12160)
				a2p = -12288;
			else if (a2p >= 12416)
				a2p = 12288;
			else
				a2p -= 0x80;
		else if (a2p <= -12416)
			a2p = -12288;
			else if (a2p >= 12160)
				a2p = 12288;
			else
				a2p += 0x80;
	}

	/* TRIGB & DELAY */
	state_ptr->a[1] = a2p;

	/* UPA1 */
	/* update predictor pole a[0] */
	state_ptr->a[0] -= state_ptr->a[0] >> 8;
	if (dqsez != 0)
		if (pks1 == 0)
			state_ptr->a[0] += 192;
		else
			state_ptr->a[0] -= 192;

	/* LIMD */
	a1ul = 15360 - a2p;
	if (state_ptr->a[0] < -a1ul)
		state_ptr->a[0] = -a1ul;
	else if (state_ptr->a[0] > a1ul)
		state_ptr->a[0] = a1ul;

	/* UPB : update predictor zeros b[6] */
	for (cnt = 0; cnt < 6; cnt++) {
		/* for G.721 and 24Kbps G.723 */
		state_ptr->b[cnt] -= state_ptr->b[cnt] >> 8;
		if (dq & 0x7FFF) {			/* XOR */
			if ((dq ^ state_ptr->dq[cnt]) >= 0)
				state_ptr->b[cnt] += 128;
			else
				state_ptr->b[cnt] -= 128;
		}
	}
	
	for (cnt = 5; cnt > 0; cnt--)
		state_ptr->dq[cnt] = state_ptr->dq[cnt-1];
	/* FLOAT A : convert dq[0] to 4-bit exp, 6-bit mantissa f.p. */
	if (mag == 0) {
		state_ptr->dq[0] = (dq >= 0) ? 0x20 : 0xFC20;
	} else {
		exp = quan(mag, power2, 15);
		state_ptr->dq[0] = (dq >= 0) ?
		    (exp << 6) + ((mag << 6) >> exp) :
		    (exp << 6) + ((mag << 6) >> exp) - 0x400;
	}

	state_ptr->sr[1] = state_ptr->sr[0];
	/* FLOAT B : convert sr to 4-bit exp., 6-bit mantissa f.p. */
	if (sr == 0) {
		state_ptr->sr[0] = 0x20;
	} else if (sr > 0) {
		exp = quan(sr, power2, 15);
		state_ptr->sr[0] = (exp << 6) + ((sr << 6) >> exp);
	} else if (sr > -32768) {
		mag = -sr;
		exp = quan(mag, power2, 15);
		state_ptr->sr[0] =  (exp << 6) + ((mag << 6) >> exp) - 0x400;
	} else
		state_ptr->sr[0] = 0xFC20;

	/* DELAY A */
	state_ptr->pk[1] = state_ptr->pk[0];
	state_ptr->pk[0] = pk0;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱对白刺激视频不卡 | 色久综合一二码| 国产精品天干天干在观线| 国内外成人在线视频| 久久综合九色综合欧美亚洲| 黄色成人免费在线| 久久久久免费观看| 国产成人av一区二区三区在线| 欧美国产成人精品| 色狠狠一区二区| 丝袜美腿高跟呻吟高潮一区| 精品少妇一区二区三区在线视频| 国产呦萝稀缺另类资源| 国产精品成人一区二区艾草| 在线视频你懂得一区二区三区| 亚洲影院理伦片| 日韩欧美一区在线观看| 国产精品一区二区在线看| 国产精品污污网站在线观看| 91免费视频网| 日本不卡视频在线观看| 久久久久久久久蜜桃| av综合在线播放| 午夜伦欧美伦电影理论片| 精品久久久久久久人人人人传媒| 懂色av一区二区在线播放| 一区二区三区蜜桃| 欧美精品一区二区不卡| 一本大道久久a久久精二百| 免费亚洲电影在线| 亚洲日本电影在线| 精品美女一区二区三区| 色欧美片视频在线观看| 麻豆国产欧美一区二区三区| 中文字幕一区av| 91麻豆精品国产91久久久久| 成人精品视频网站| 日韩中文字幕麻豆| 中文字幕在线观看一区二区| 91精品国产综合久久久久| www.成人在线| 蜜桃一区二区三区四区| 亚洲人成精品久久久久久| 日韩欧美在线1卡| 欧洲精品在线观看| 成人高清免费在线播放| 蜜桃视频免费观看一区| 一区二区不卡在线播放 | 韩国三级电影一区二区| 亚洲码国产岛国毛片在线| www欧美成人18+| 欧美日韩国产bt| 99久久综合精品| 国产综合久久久久久鬼色| 视频一区中文字幕| 亚洲精品乱码久久久久久久久| 久久亚洲影视婷婷| 欧美精品视频www在线观看 | 亚洲男人的天堂在线观看| 久久先锋影音av鲁色资源网| 欧美精品乱码久久久久久按摩| 色综合久久久久久久| 国产v日产∨综合v精品视频| 激情六月婷婷久久| 男女男精品网站| 日精品一区二区| 午夜免费久久看| 亚洲成av人影院| 亚洲一区二区在线视频| 1024成人网| 亚洲欧洲在线观看av| 亚洲国产成人在线| 中文欧美字幕免费| 中文字幕精品三区| 国产精品免费丝袜| 中文字幕一区日韩精品欧美| 国产精品三级电影| 国产精品久久久久久户外露出| 国产日产欧美一区二区视频| 国产亚洲一二三区| 国产欧美日韩久久| 国产精品久久久久aaaa| 亚洲欧洲精品一区二区精品久久久| 亚洲国产成人私人影院tom| 久久亚洲私人国产精品va媚药| 久久一区二区视频| 国产蜜臀av在线一区二区三区| 国产午夜一区二区三区| 国产精品色婷婷久久58| 亚洲欧洲性图库| 亚洲sss视频在线视频| 亚洲成a人片综合在线| 日韩高清电影一区| 91视频91自| 99国产精品久久久久| 日本高清不卡视频| 欧美一区二区三区在线观看视频| 日韩三级精品电影久久久| 26uuu成人网一区二区三区| 欧美精彩视频一区二区三区| 中文字幕在线观看不卡| 午夜欧美一区二区三区在线播放| 蜜臀va亚洲va欧美va天堂| 国产成人亚洲综合a∨猫咪| 97se狠狠狠综合亚洲狠狠| 欧美午夜不卡在线观看免费| 日韩三级中文字幕| 国产精品第13页| 偷窥国产亚洲免费视频| 国内精品视频一区二区三区八戒| 菠萝蜜视频在线观看一区| 欧美曰成人黄网| 精品少妇一区二区三区免费观看 | 久久美女艺术照精彩视频福利播放 | 中文字幕精品—区二区四季| 亚洲欧美激情小说另类| 蜜臀av一区二区在线免费观看| 成人三级伦理片| 欧美日韩国产影片| 国产清纯在线一区二区www| 一区二区三区在线免费| 国产一区啦啦啦在线观看| 91福利在线观看| 久久久亚洲午夜电影| 亚洲影视资源网| 国产精品一区二区三区网站| 欧美天堂一区二区三区| 久久久青草青青国产亚洲免观| 亚洲精品ww久久久久久p站 | 国产成人精品一区二| 欧美日韩不卡视频| 国产精品美女久久久久久久久久久 | 91精品国产全国免费观看 | 亚洲欧美影音先锋| 久久精品久久99精品久久| 色狠狠综合天天综合综合| 久久亚洲一区二区三区四区| 污片在线观看一区二区| 成人av免费在线观看| 精品人伦一区二区色婷婷| 亚洲一区二区在线免费观看视频| 成人性生交大合| 精品卡一卡二卡三卡四在线| 婷婷开心久久网| 色婷婷国产精品| 成人免费小视频| 国产91精品一区二区麻豆亚洲| 日韩色视频在线观看| 午夜欧美在线一二页| 91极品美女在线| 中文字幕日韩欧美一区二区三区| 国产丶欧美丶日本不卡视频| 日韩一区二区不卡| 午夜精品福利在线| 欧美性色欧美a在线播放| 亚洲人成网站影音先锋播放| 国产成人亚洲综合a∨婷婷图片| 精品久久久久香蕉网| 久久精品噜噜噜成人av农村| 欧美一区二区视频观看视频| 日韩高清一区在线| 在线播放欧美女士性生活| 亚洲午夜羞羞片| 欧美午夜免费电影| 午夜精彩视频在线观看不卡| 欧美色图第一页| 亚洲成人av在线电影| 欧美日韩中文字幕一区| 亚洲一区二区三区四区在线观看| 色老头久久综合| 午夜精品久久久| 777午夜精品免费视频| 秋霞电影网一区二区| 日韩一区二区电影网| 精品制服美女丁香| 久久综合久色欧美综合狠狠| 国产福利视频一区二区三区| 国产网站一区二区三区| 国产69精品久久久久毛片| 成人免费在线观看入口| 91黄色激情网站| 午夜精品免费在线| 日韩美一区二区三区| 国产一区三区三区| 中文字幕一区二区三区精华液| 色一情一乱一乱一91av| 五月天亚洲精品| 精品999在线播放| 成人高清av在线| 亚洲国产精品一区二区久久恐怖片| 欧美精品视频www在线观看| 久久机这里只有精品| 中文字幕二三区不卡| 欧美在线|欧美| 韩国av一区二区三区| 亚洲天天做日日做天天谢日日欢| 欧洲av在线精品| 国产综合色在线| 一区二区三区国产精华| 精品久久久久久久久久久久久久久久久 |