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

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

?? adpcm.c

?? The Audio File Library provides a uniform programming interface to standard digital audio file form
?? C
字號:
/***********************************************************Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam, TheNetherlands.                        All Rights ReservedPermission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and thatboth that copyright notice and this permission notice appear in supporting documentation, and that the names of Stichting MathematischCentrum or CWI not be used in advertising or publicity pertaining todistribution of the software without specific, written prior permission.STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TOTHIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLEFOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGESWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ANACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUTOF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.******************************************************************//*** Intel/DVI ADPCM coder/decoder.**** The algorithm for this coder was taken from the IMA Compatability Project** proceedings, Vol 2, Number 2; May 1992.**** Version 1.2, 18-Dec-92.**** Change log:** - Fixed a stupid bug, where the delta was computed as**   stepsize*code/4 in stead of stepsize*(code+0.5)/4.** - There was an off-by-one error causing it to pick**   an incorrect delta once in a blue moon.** - The NODIVMUL define has been removed. Computations are now always done**   using shifts, adds and subtracts. It turned out that, because the standard**   is defined using shift/add/subtract, you needed bits of fixup code**   (because the div/mul simulation using shift/add/sub made some rounding**   errors that real div/mul don't make) and all together the resultant code**   ran slower than just using the shifts all the time.** - Changed some of the variable names to be more meaningful.*/#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <sys/types.h>#include <stdio.h> /*DBG*/#include "adpcm.h"/* Intel ADPCM step variation table */static const int indexTable[16] ={	-1, -1, -1, -1, 2, 4, 6, 8,	-1, -1, -1, -1, 2, 4, 6, 8,};static const int stepsizeTable[89] ={	7, 8, 9, 10, 11, 12, 13, 14, 16, 17,	19, 21, 23, 25, 28, 31, 34, 37, 41, 45,	50, 55, 60, 66, 73, 80, 88, 97, 107, 118,	130, 143, 157, 173, 190, 209, 230, 253, 279, 307,	337, 371, 408, 449, 494, 544, 598, 658, 724, 796,	876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,	2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,	5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,	15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767};    void _af_adpcm_coder (int16_t *indata, u_int8_t *outdata, int len,	struct adpcm_state *state){    int16_t *inp;		/* Input buffer pointer */    u_int8_t *outp;		/* Output buffer pointer */    int val;			/* Current input sample value */    int sign;			/* Current adpcm sign bit */    int delta;			/* Current adpcm output value */    int diff;			/* Difference between val and valprev */    int step;			/* Stepsize */    int valpred;		/* Predicted output value */    int vpdiff;			/* Current change to valpred */    int index;			/* Current step change index */    int outputbuffer;		/* place to keep previous 4-bit value */    int bufferstep;		/* toggle between outputbuffer/output */    outp = outdata;    inp = indata;    valpred = state->valprev;    index = state->index;    step = stepsizeTable[index];        bufferstep = 1;    for ( ; len > 0 ; len-- ) {	val = *inp++;	/* Step 1 - compute difference with previous value */	diff = val - valpred;	sign = (diff < 0) ? 8 : 0;	if ( sign ) diff = (-diff);	/* Step 2 - Divide and clamp */	/* Note:	** This code *approximately* computes:	**    delta = diff*4/step;	**    vpdiff = (delta+0.5)*step/4;	** but in shift step bits are dropped. The net result of this is	** that even if you have fast mul/div hardware you cannot put it to	** good use since the fixup would be too expensive.	*/	delta = 0;	vpdiff = (step >> 3);		if ( diff >= step ) {	    delta = 4;	    diff -= step;	    vpdiff += step;	}	step >>= 1;	if ( diff >= step  ) {	    delta |= 2;	    diff -= step;	    vpdiff += step;	}	step >>= 1;	if ( diff >= step ) {	    delta |= 1;	    vpdiff += step;	}	/* Step 3 - Update previous value */	if ( sign )	  valpred -= vpdiff;	else	  valpred += vpdiff;	/* Step 4 - Clamp previous value to 16 bits */	if ( valpred > 32767 )	  valpred = 32767;	else if ( valpred < -32768 )	  valpred = -32768;	/* Step 5 - Assemble value, update index and step values */	delta |= sign;		index += indexTable[delta];	if ( index < 0 ) index = 0;	if ( index > 88 ) index = 88;	step = stepsizeTable[index];	/* Step 6 - Output value */	if ( bufferstep ) {	    outputbuffer = delta & 0x0f;	} else {	    *outp++ = ((delta << 4) & 0xf0) | outputbuffer;	}	bufferstep = !bufferstep;    }    /* Output last step, if needed */    if ( !bufferstep )      *outp++ = outputbuffer;        state->valprev = valpred;    state->index = index;}void _af_adpcm_decoder (u_int8_t *indata, int16_t *outdata, int len,	struct adpcm_state *state){    u_int8_t *inp;		/* Input buffer pointer */    int16_t *outp;		/* output buffer pointer */    int sign;			/* Current adpcm sign bit */    int delta;			/* Current adpcm output value */    int step;			/* Stepsize */    int valpred;		/* Predicted value */    int vpdiff;			/* Current change to valpred */    int index;			/* Current step change index */    int inputbuffer;		/* place to keep next 4-bit value */    int bufferstep;		/* toggle between inputbuffer/input */    outp = outdata;    inp = indata;    valpred = state->valprev;    index = state->index;    step = stepsizeTable[index];    bufferstep = 0;        for ( ; len > 0 ; len-- ) {		/* Step 1 - get the delta value */	if ( bufferstep ) {	    delta = (inputbuffer >> 4) & 0xf;	} else {	    inputbuffer = *inp++;	    delta = inputbuffer & 0xf;	}	bufferstep = !bufferstep;	/* Step 2 - Find new index value (for later) */	index += indexTable[delta];	if ( index < 0 ) index = 0;	if ( index > 88 ) index = 88;	/* Step 3 - Separate sign and magnitude */	sign = delta & 8;	delta = delta & 7;	/* Step 4 - Compute difference and new predicted value */	/*	** Computes 'vpdiff = (delta+0.5)*step/4', but see comment	** in adpcm_coder.	*/	vpdiff = step >> 3;	if ( delta & 4 ) vpdiff += step;	if ( delta & 2 ) vpdiff += step>>1;	if ( delta & 1 ) vpdiff += step>>2;	if ( sign )	  valpred -= vpdiff;	else	  valpred += vpdiff;	/* Step 5 - clamp output value */	if ( valpred > 32767 )	  valpred = 32767;	else if ( valpred < -32768 )	  valpred = -32768;	/* Step 6 - Update step value */	step = stepsizeTable[index];	/* Step 7 - Output value */	*outp++ = valpred;    }    state->valprev = valpred;    state->index = index;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久色成人在线| 欧美a级理论片| 一区二区三区在线观看网站| 亚洲精品成人精品456| 麻豆精品在线看| 成人免费毛片高清视频| 欧美精品一卡二卡| 亚洲国产高清在线| 美腿丝袜一区二区三区| 欧美日韩国产一二三| 精品人在线二区三区| 亚洲色图欧美在线| 国产一区二区精品在线观看| 欧美综合色免费| 久久久一区二区| 天天综合天天综合色| 国产iv一区二区三区| 91麻豆精品91久久久久同性| 亚洲欧洲成人精品av97| 国内久久精品视频| 欧美高清视频一二三区 | 一区二区三区日韩欧美精品| 麻豆精品一区二区| 欧美性一区二区| 国产精品麻豆一区二区| 久久国产精品无码网站| 欧美色中文字幕| 国产欧美日韩三区| 精品中文av资源站在线观看| 91搞黄在线观看| 国产精品视频你懂的| 六月婷婷色综合| 欧美日韩一二区| 亚洲精品乱码久久久久久黑人 | 五月天网站亚洲| jizz一区二区| 国产女同互慰高潮91漫画| 美女免费视频一区二区| 欧美日韩mp4| 一片黄亚洲嫩模| 99国产精品久久久久久久久久| 国产亚洲精品精华液| 国产中文一区二区三区| 欧美大片在线观看| 久久精品免费看| 91麻豆精品国产91久久久久 | 国产精品一区二区三区乱码| 日韩欧美成人一区| 麻豆91小视频| 久久久久久影视| 国产一区二区导航在线播放| 久久婷婷成人综合色| 国产精品小仙女| 久久久噜噜噜久噜久久综合| 国产一区二区三区美女| 久久精品水蜜桃av综合天堂| 国产中文字幕精品| 欧美韩国日本不卡| 99国产欧美久久久精品| 亚洲精品国产精品乱码不99| 欧美亚洲免费在线一区| 亚洲二区在线视频| 精品久久久三级丝袜| 国产一区二区不卡在线| 国产精品卡一卡二| 91福利社在线观看| 免费日韩伦理电影| 久久精品这里都是精品| www.色精品| 亚洲影院理伦片| 6080亚洲精品一区二区| 国产一区二区美女| 136国产福利精品导航| 欧美日韩一区中文字幕| 奇米精品一区二区三区四区 | 日韩久久精品一区| 成人一级视频在线观看| 亚洲欧美电影一区二区| 欧美日韩亚洲综合一区| 韩国女主播一区二区三区| 国产精品久久久久三级| 欧美日韩中文国产| 国产精品99久| 亚洲综合丁香婷婷六月香| 4438亚洲最大| 福利一区二区在线观看| 亚洲电影欧美电影有声小说| ww久久中文字幕| 91亚洲精品乱码久久久久久蜜桃 | 成人av网站免费| 亚洲成人av一区二区| 欧美精品一区二区三区在线播放 | 成人毛片在线观看| 婷婷久久综合九色国产成人 | 欧美综合欧美视频| 国产精品综合在线视频| 午夜欧美电影在线观看| 欧美精彩视频一区二区三区| 欧美日韩中字一区| www.欧美色图| 国产中文字幕一区| 午夜激情久久久| 国产精品久久99| 欧美tk丨vk视频| 欧美日韩成人一区| av在线播放不卡| 精品午夜一区二区三区在线观看| 亚洲精品免费视频| 国产精品美女久久久久aⅴ| 7777精品伊人久久久大香线蕉经典版下载 | 天天亚洲美女在线视频| 亚洲欧洲av在线| 久久久久久毛片| 欧美一二三区精品| 欧美日韩国产高清一区| 91视视频在线观看入口直接观看www | 欧美在线你懂得| 99精品偷自拍| 国产成人精品一区二区三区四区 | 欧洲视频一区二区| 99re热这里只有精品免费视频| 国产一区久久久| 另类综合日韩欧美亚洲| 午夜精品久久久久久久久久| 亚洲精品久久嫩草网站秘色| 国产精品久久久久久亚洲伦 | 日韩一区二区三区四区| 欧美人妇做爰xxxⅹ性高电影| 色呦呦一区二区三区| www.久久精品| 99国产精品久| 91美女片黄在线观看91美女| www.亚洲精品| 91在线国产福利| av亚洲精华国产精华精| 99精品国产热久久91蜜凸| 91小视频免费观看| 91激情五月电影| 91久久线看在观草草青青| 色女孩综合影院| 在线免费观看日本欧美| 欧美日韩国产免费| 日韩美女主播在线视频一区二区三区| 日韩一区二区在线看| 精品入口麻豆88视频| 久久美女高清视频| 国产精品色眯眯| 亚洲男人的天堂在线aⅴ视频| 樱花影视一区二区| 人人精品人人爱| 国产乱子轮精品视频| 成人蜜臀av电影| 色av一区二区| 欧美一区二区三区精品| 精品国产青草久久久久福利| 国产欧美日韩中文久久| 亚洲另类在线视频| 免费看日韩a级影片| 国产99久久久久| 一本到不卡免费一区二区| 欧美视频你懂的| 26uuu国产在线精品一区二区| 国产精品全国免费观看高清| 一二三四社区欧美黄| 久草精品在线观看| 91在线精品一区二区三区| 欧美一卡二卡在线| 国产精品乱码久久久久久| 午夜精品久久久久久久久久久| 韩国一区二区视频| 欧美在线一二三| 久久久久久久久久美女| 一区二区三区在线观看国产| 精品在线播放免费| 色又黄又爽网站www久久| 欧美大片一区二区| 亚洲三级电影网站| 美女视频黄 久久| 91在线观看美女| 久久综合九色综合97婷婷| 一区二区三区在线免费观看| 国产一区二区91| 欧美区在线观看| 中文字幕中文在线不卡住| 蜜臀久久99精品久久久画质超高清 | 国产喂奶挤奶一区二区三区| 亚洲高清在线精品| 北岛玲一区二区三区四区 | 成人黄色片在线观看| 日韩免费视频一区| 香蕉加勒比综合久久| 波多野结衣亚洲一区| 欧美精品一区二区三区高清aⅴ | jlzzjlzz国产精品久久| 日韩欧美亚洲另类制服综合在线 | 国内久久精品视频| 3d动漫精品啪啪| 亚洲精品一二三区| 北条麻妃国产九九精品视频| 久久久久国产精品麻豆ai换脸|