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

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

?? g726_32.c

?? 讀取SD卡存儲的adpcm碼
?? C
字號:
/*
 * This source code is a product of Sun Microsystems, Inc. and is provided
 * for unrestricted use.  Users may copy or modify this source code without
 * charge.
 *
 * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
 * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
 *
 * Sun source code is provided with no support and without any obligation on
 * the part of Sun Microsystems, Inc. to assist in its use, correction,
 * modification or enhancement.
 *
 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
 * OR ANY PART THEREOF.
 *
 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
 * or profits or other special, indirect and consequential damages, even if
 * Sun has been advised of the possibility of such damages.
 *
 * Sun Microsystems, Inc.
 * 2550 Garcia Avenue
 * Mountain View, California  94043
 */

/*
 * g726_32.c
 *
 * Description:
 *
 * g721_encoder(), g721_decoder()
 *
 * These routines comprise an implementation of the CCITT G.721 ADPCM
 * coding algorithm.  Essentially, this implementation is identical to
 * the bit level description except for a few deviations which
 * take advantage of work station attributes, such as hardware 2's
 * complement arithmetic and large memory.  Specifically, certain time
 * consuming operations such as multiplications are replaced
 * with lookup tables and software 2's complement operations are
 * replaced with hardware 2's complement.
 *
 * The deviation from the bit level specification (lookup tables)
 * preserves the bit level performance specifications.
 *
 * As outlined in the G.721 Recommendation, the algorithm is broken
 * down into modules.  Each section of code below is preceded by
 * the name of the module which it is implementing.
 *
 * The ITU-T G.726 coder is an adaptive differential pulse code modulation
 * (ADPCM) waveform coding algorithm, suitable for coding of digitized
 * telephone bandwidth (0.3-3.4 kHz) speech or audio signals sampled at 8 kHz.
 * This coder operates on a sample-by-sample basis. Input samples may be 
 * represented in linear PCM or companded 8-bit G.711 (m-law/A-law) formats
 * (i.e., 64 kbps). For 32 kbps operation, each sample is converted into a
 * 4-bit quantized difference signal resulting in a compression ratio of 
 * 2:1 over the G.711 format. For 24 kbps 40 kbps operation, the quantized
 * difference signal is 3 bits and 5 bits, respectively.
 *
 * $Log: g726_32.c,v $
 * Revision 1.5  2002/11/20 04:29:13  robertj
 * Included optimisations for G.711 and G.726 codecs, thanks Ted Szoczei
 *
 * Revision 1.1  2002/02/11 23:24:23  robertj
 * Updated to openH323 v1.8.0
 *
 * Revision 1.2  2002/02/10 21:14:54  dereks
 * Add cvs log history to head of the file.
 * Ensure file is terminated by a newline.
 *
 *
 *
 */
#include "g72x.h"
#include "private.h"

static int qtab_721[7] = {-124, 80, 178, 246, 300, 349, 400};
/*
 * Maps G.721 code word to reconstructed scale factor normalized log
 * magnitude values.
 */
static short	_dqlntab[16] = {-2048, 4, 135, 213, 273, 323, 373, 425,
				425, 373, 323, 273, 213, 135, 4, -2048};

/* Maps G.721 code word to log of scale factor multiplier. */
static short	_witab[16] = {-12, 18, 41, 64, 112, 198, 355, 1122,
				1122, 355, 198, 112, 64, 41, 18, -12};
/*
 * Maps G.721 code words to a set of values whose long and short
 * term averages are computed and then compared to give an indication
 * how stationary (steady state) the signal is.
 */
static short	_fitab[16] = {0, 0, 0, 0x200, 0x200, 0x200, 0x600, 0xE00,
				0xE00, 0x600, 0x200, 0x200, 0x200, 0, 0, 0};

/*
 * g721_encoder()
 *
 * Encodes the input vale of linear PCM, A-law or u-law data sl and returns
 * the resulting code. -1 is returned for unknown input coding value.
 */
int g726_32_encoder(
	int		sl,
	int		in_coding,
	g726_state *state_ptr)
{
	int		sezi;
	int		sez;			/* ACCUM */
	int		se;
	int		d;				/* SUBTA */
	int		y;				/* MIX */
	int		i;
	int		dq;
	int		sr;				/* ADDB */
	int		dqsez;			/* ADDC */

	switch (in_coding) {	/* linearize input sample to 14-bit PCM */
	case AUDIO_ENCODING_ALAW:
		sl = alaw2linear(sl) >> 2;
		break;
	case AUDIO_ENCODING_ULAW:
		sl = ulaw2linear(sl) >> 2;
		break;
	case AUDIO_ENCODING_LINEAR:
		sl >>= 2;			/* 14-bit dynamic range */
		break;
	default:
		return (-1);
	}

	sezi = predictor_zero(state_ptr);
	sez = sezi >> 1;
	se = (sezi + predictor_pole(state_ptr)) >> 1;	/* estimated signal */

	d = sl - se;				/* estimation difference */

	/* quantize the prediction difference */
	y = step_size(state_ptr);		/* quantizer step size */
	i = quantize(d, y, qtab_721, 7);	/* i = ADPCM code */

	dq = reconstruct(i & 8, _dqlntab[i], y);	/* quantized est diff */

	sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq;	/* reconst. signal */

	dqsez = sr + sez - se;			/* pole prediction diff. */

	update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr);

	return (i);
}

/*
 * g721_decoder()
 *
 * Description:
 *
 * Decodes a 4-bit code of G.721 encoded data of i and
 * returns the resulting linear PCM, A-law or u-law value.
 * return -1 for unknown out_coding value.
 */
int g726_32_decoder(
	int		i,
	int		out_coding,
	g726_state *state_ptr)
{
	int		sezi;
	int		sez;			/* ACCUM */
	int		sei;
	int		se;
	int		y;				/* MIX */
	int		dq;
	int		sr;				/* ADDB */
	int		dqsez;
	long	lino;

	i &= 0x0f;				/* mask to get proper bits */
	sezi = predictor_zero(state_ptr);
	sez = sezi >> 1;
	sei = sezi + predictor_pole(state_ptr);
	se = sei >> 1;			/* se = estimated signal */

	y = step_size(state_ptr);	/* dynamic quantizer step size */

	dq = reconstruct(i & 0x08, _dqlntab[i], y); /* quantized diff. */

	sr = (dq < 0) ? (se - (dq & 0x3FFF)) : se + dq;	/* reconst. signal */

	dqsez = sr - se + sez;			/* pole prediction diff. */

	update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr);

	switch (out_coding) {
	case AUDIO_ENCODING_ALAW:
		return (tandem_adjust_alaw(sr, se, y, i, 8, qtab_721));
	case AUDIO_ENCODING_ULAW:
		return (tandem_adjust_ulaw(sr, se, y, i, 8, qtab_721));
	case AUDIO_ENCODING_LINEAR:
        lino = (long)sr << 2;  /* this seems to overflow a short*/
		lino = lino > 32767 ? 32767 : lino;
		lino = lino < -32768 ? -32768 : lino;
		return lino;//(sr << 2);	/* sr was 14-bit dynamic range */
	default:
		return (-1);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久在线观看免费| 成人免费在线播放视频| 国产亚洲欧美日韩日本| 一区二区三区成人| 精品影视av免费| 在线观看日韩一区| 精品国产免费久久| 亚洲高清在线视频| 99re热视频精品| 精品免费视频一区二区| 亚洲一区二区三区三| 不卡的av在线| 国产婷婷色一区二区三区| 天天射综合影视| 欧洲亚洲精品在线| 国产精品国产三级国产有无不卡| 久久精品国产77777蜜臀| 日本韩国欧美在线| 中文字幕一区二区日韩精品绯色| 国内精品免费在线观看| 在线观看免费视频综合| 亚洲欧洲国产日韩| 成人伦理片在线| 久久亚洲捆绑美女| 麻豆国产精品官网| 日韩一区二区不卡| 免费观看91视频大全| 欧美日韩国产综合一区二区三区| 一区二区三区小说| 色综合天天综合给合国产| 国产精品久久一级| hitomi一区二区三区精品| 国产欧美一区二区三区沐欲| 国产精品中文有码| 久久久三级国产网站| 国产剧情一区在线| 国产喷白浆一区二区三区| 国产九色sp调教91| 欧美国产日韩一二三区| 成人a免费在线看| 亚洲视频一二三区| 在线亚洲免费视频| 午夜视频久久久久久| 7777精品伊人久久久大香线蕉完整版 | 久久成人18免费观看| 91精品国产综合久久福利| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩久久不卡| 日韩av电影天堂| 久久先锋影音av鲁色资源网| 国产成a人无v码亚洲福利| 中文字幕免费不卡在线| 91蜜桃在线观看| 亚洲成av人片在线观看无码| 日韩一区二区在线观看视频| 国产在线视频一区二区三区| 欧美激情在线免费观看| 91麻豆免费在线观看| 日韩电影在线一区| 中文幕一区二区三区久久蜜桃| 美国毛片一区二区三区| 国产三级三级三级精品8ⅰ区| 成人精品视频一区二区三区| 亚洲精品美腿丝袜| 91麻豆精品91久久久久久清纯 | 欧美图片一区二区三区| 亚洲gay无套男同| 久久女同性恋中文字幕| 91亚洲国产成人精品一区二三| 午夜精品久久久久影视| 欧美精品一区二区蜜臀亚洲| 99精品视频一区| 日韩精品国产精品| 国产精品美女久久久久久| 欧美三级在线播放| 国产乱色国产精品免费视频| 一区二区三区影院| 久久夜色精品国产欧美乱极品| 91国内精品野花午夜精品| 久久国产欧美日韩精品| 亚洲人成网站影音先锋播放| 欧美一卡在线观看| 色综合天天综合在线视频| 韩国v欧美v日本v亚洲v| 亚洲午夜成aⅴ人片| 国产亚洲综合性久久久影院| 欧美人与z0zoxxxx视频| 国产.精品.日韩.另类.中文.在线.播放| 亚洲一区二区精品视频| 国产欧美日韩在线| 日韩欧美色综合| 欧美三级在线播放| 91美女片黄在线观看| 激情五月婷婷综合网| 亚洲第一狼人社区| 亚洲欧洲av在线| 久久久久久久久97黄色工厂| 88在线观看91蜜桃国自产| 99精品桃花视频在线观看| 国产伦精品一区二区三区免费迷| 五月天激情小说综合| 亚洲色图一区二区| 国产精品九色蝌蚪自拍| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩精品欧美日韩精品一综合| 99久久99久久综合| 成人激情小说乱人伦| 国产精品一区三区| 一卡二卡欧美日韩| 一区二区在线观看视频在线观看| 亚洲精品一区二区三区影院 | 国模冰冰炮一区二区| 亚洲伊人伊色伊影伊综合网| 国产亚洲1区2区3区| 日韩三级av在线播放| 欧美一区二区视频免费观看| 欧美日韩在线三级| 亚洲欧洲色图综合| 色av一区二区| 91激情五月电影| 日本久久一区二区三区| 91美女片黄在线观看91美女| 色狠狠一区二区三区香蕉| 色哟哟一区二区三区| youjizz国产精品| 91亚洲国产成人精品一区二三 | 欧美国产激情一区二区三区蜜月| 精品电影一区二区三区| 久久精品在这里| 亚洲色图一区二区三区| 亚洲国产sm捆绑调教视频| 午夜成人在线视频| 久久精品国产一区二区三 | 五月天丁香久久| 看电视剧不卡顿的网站| 激情小说欧美图片| 99久久免费国产| 欧美一a一片一级一片| 在线成人av网站| 久久天天做天天爱综合色| 欧美精品一区二区精品网| 欧美激情综合五月色丁香小说| 日韩欧美一区二区三区在线| 日韩久久精品一区| 久久伊99综合婷婷久久伊| 久久精品一区二区三区不卡| 国产精品色眯眯| 亚洲国产激情av| 自拍av一区二区三区| 欧美一区二区三区四区在线观看| 精品美女在线观看| 亚洲天堂av老司机| 免费看黄色91| 成人av资源下载| 在线播放一区二区三区| 国产亚洲综合性久久久影院| 亚洲永久精品国产| 国产精品一区三区| 欧美片在线播放| 欧美极品aⅴ影院| 日韩经典中文字幕一区| 丁香啪啪综合成人亚洲小说| 欧美乱妇15p| 国产精品久久一卡二卡| 蜜臂av日日欢夜夜爽一区| 99久久精品国产毛片| 精品毛片乱码1区2区3区| 中文字幕亚洲一区二区av在线| 日韩成人午夜电影| av在线播放不卡| 26uuu亚洲综合色| 亚洲一级片在线观看| 国产91丝袜在线播放0| 欧美一卡二卡在线| 一区二区三区四区乱视频| 国产精品18久久久| 在线成人免费观看| 亚洲线精品一区二区三区八戒| 国产成人在线观看| 日韩美一区二区三区| 亚洲高清视频在线| 91亚洲精品乱码久久久久久蜜桃| 国产色91在线| 卡一卡二国产精品| 欧美网站一区二区| 亚洲视频狠狠干| 丁香激情综合五月| 久久久久久久精| 国内偷窥港台综合视频在线播放| 欧美日韩国产色站一区二区三区| 亚洲色欲色欲www在线观看| 成人黄色网址在线观看| 久久久综合视频| 国产一区二区三区免费播放| 日韩欧美中文字幕精品| 日韩av在线播放中文字幕| 欧美性videosxxxxx| 一卡二卡三卡日韩欧美| 欧美亚洲国产一区二区三区| 一区二区欧美精品|