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

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

?? decode.c

?? jpeg快速算法,用于TI和philips的DSP開發
?? C
字號:
/*
 *********************************************************************
 * File name: decode.c
 * Version: 5.0(release v1.0)    Date: Jan 12, 2006
 * Author:  xiezm                Email: xiezm@wxintech.cn
 * Company: Wuxi Intech co., ltd.
 *
 * Project: Jpeg Decoder for Trio
 *********************************************************************
 */
#define  DECODE_GLOBALS

#include "cf6_chess.h"

#include "djpg.h"
#include "bitstream.h"

#define DC 0
#define AC 1

//#define INT_P362 362
//#define INT_P473 473
//#define INT_P277 277
//#define INT_M669 (-669)


const int natural_order[DCT_SIZE2] =
{
	 0,  1,  8, 16,  9,  2,  3, 10,
	17, 24, 32, 25, 18, 11,  4,  5,
	12, 19, 26, 33, 40, 48, 41, 34,
	27, 20, 13,  6,  7, 14, 21, 28,
	35, 42, 49, 56, 57, 50, 43,	36,
	29, 22, 15, 23, 30, 37, 44, 51,
	58, 59, 52, 45, 38, 31, 39, 46,
	53,	60, 61, 54, 47, 55, 62, 63
};

int errorHuffman=0;

void decode_initial(void)
{
	int i;

	decode_bitstream_initial();

	for(i=0;i<MAX_COMPS;i++)
	{
		PreDC[i] = 0;
	}

	for(i=1;i<16;i++)
	{
		shift_std[i] = 1<<(i-1);
		shift_offset[i] = (((-1) << i) + 1);
	}

#if 0
	for(i=0;i<32;i++)
	{
		cellingR_tab[i] = 0;
		cellingG_tab[i] = 0;
		cellingB_tab[i] = 0;
	}
	for(i=0;i<64;i++)
	{
		cellingR_tab[i+32] = ((i>>1)<<11);
		cellingG_tab[i+32] = (i<<5);
		cellingB_tab[i+32] = (i>>1);
	}
	for(i=0;i<32;i++)
	{
		cellingR_tab[i+96] = 0x00F800;
		cellingG_tab[i+96] = 0x0007E0;
		cellingB_tab[i+96] = 0x00001F;
	}

	cellingR = &cellingR_tab[32];
	cellingG = &cellingG_tab[32];
	cellingB = &cellingB_tab[32];
#else 
	for(i=0;i<128;i++)
	{
		cellingR_tab1[i] = 0;
		cellingG_tab1[i] = 0;
		cellingB_tab1[i] = 0;
	}
	for(i=0;i<256;i++)
	{
		cellingR_tab1[i+128] = ((i>>3)<<11);
		cellingG_tab1[i+128] = ((i>>2)<<5);
		cellingB_tab1[i+128] = (i>>3);
	}
	for(i=0;i<128;i++)
	{
		cellingR_tab1[i+384] = 0x00F800;
		cellingG_tab1[i+384] = 0x0007E0;
		cellingB_tab1[i+384] = 0x00001F;
	}

	cellingR = &cellingR_tab1[128];
	cellingG = &cellingG_tab1[128];
	cellingB = &cellingB_tab1[128];

#endif



	restart_marker = 0;	
	
	INT_P454 = 454;
	INT_M88 = -88;
	INT_M183 = -183;
	INT_P359 = 359;
	
	INT_P362 = 362;
	INT_P473 = 473;
	INT_P277 = 277;
	INT_M669 = -669;
}

unsigned int de_huffman_cal()
{
	int l = 9;
	int code;

	code = get_bits(l);
	while (code > htbl->maxcode[l])
	{
		code <<= 1;
		code |= get_bits(1);
		l++;
	}

	if (l > 16)
	{
		errorHuffman = 15;
		return 0;//error(15);
		l = 16;			/* fake the result */
	}
	return (htbl->symbol[(unsigned int) (code + htbl->valoffset[l])]);
}

#if 1   //yover_optimize_0822
unsigned int de_huffman(void)
{
	unsigned int peek, nb;

	peek = peek_byte();
  	if ((nb = htbl->look_nbits[peek]) != 0) 
	{
		drop_bits(nb);
		return(htbl->look_sym[peek]);
	}
    return de_huffman_cal();
}
#else
#define de_huffman(dhfm)						\
{												\
	unsigned int peek, nb;						\
	peek = peek_byte();							\
  	if ((nb = htbl->look_nbits[peek]) != 0)		\
	{											\
		drop_bits(nb);							\
		dhfm = (htbl->look_sym[peek]);			\
	}											\
	else										\
		dhfm = de_huffman_cal();				\
}
#endif

void restart_decode(void)
{
	drop_bits(bits_left%8);		//sync
	if((0x00ff!=get_bits(8)) || ((get_bits(8) - RST0) != restart_marker))
	{
		error(17);
	}
	restart_marker++;
	restart_marker %= 8;
	PreDC[0] = 0;
	PreDC[1] = 0;
	PreDC[2] = 0;
}

void fast_IDCT(int rec_idx);

int decode_data_unit(int comp, int rec_idx)
{
	unsigned int bits;
	unsigned int RS;
	unsigned int SSSS;
	unsigned int RRRR;
	unsigned int K;
	int Diff;
	int iRet = 0;

	int chess_storage(YMEM) *qtbl;

	int *inptr;
	int *wsptr;
	int *outptr;
	
	int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
	int tmp10, tmp11, tmp12, tmp13;
	int z5, z10, z11, z12, z13;

	
	/* decode DC */
	//cal Diff
	htbl = &dc_huff_tbl[Tdi[comp]];
	//yover_optimize_0822, de_huffman(bits);
	bits = de_huffman();//yover_optimize_0822, 
	if(errorHuffman==15)
	{
		return 15;
	}


	if(bits)
	{
		Diff = get_bits(bits);
		Diff = (Diff < shift_std[bits] ? (Diff + shift_offset[bits]) : Diff);
	}
	else
	{
		Diff = 0;
	}
	ZZ[0] = (PreDC[comp] += Diff);
	
	/* decode ACs */
	htbl = &ac_huff_tbl[Tai[comp]];
	for(K=1;K<DCT_SIZE2;K++)
	{
		ZZ[K] = 0;			//can use memset
	}
	K=1;
	do{
		int ac_tmp;
		//yover_optimize_0822, de_huffman(RS);
		RS = de_huffman();//yover_optimize_0822, 
		if(errorHuffman==15)
		{
			return 15;
		}

		SSSS = RS & 0x0f;
		RRRR = RS >> 4;
		if(SSSS)
		{
			K += RRRR;
			//Decode_zz[k]
			ac_tmp = get_bits(SSSS);
			ZZ[K] = (ac_tmp < shift_std[SSSS] ? ac_tmp + shift_offset[SSSS] : ac_tmp);
		}
		else
		{
			if(15 == RRRR)
			{
				K += 16;
				continue;
			}
			else
			{
				K=64;
				break;
			}
		}
		K++;
	}while(K < 64);/*while(64 == K);*/
	if(64 != K)
	{
		error(16);
	}

	//de-quantiz
	qtbl = (int chess_storage(YMEM) *)quant_tbl[Tqi[comp]];
	inptr = reconstruc_buffer[rec_idx];
	for(K=0;K<DCT_SIZE2;K++)
	{
		inptr[natural_order[K]] = (ZZ[K] * qtbl[K])  >> 10;
	}
	
  	wsptr = ZZ;
	for(K=DCT_SIZE; K>0; K--)
	{
		tmp0 = inptr[0];
		tmp4 = inptr[8];
	    tmp1 = inptr[16];
	    tmp5 = inptr[24];
    	tmp2 = inptr[32];
    	tmp6 = inptr[40];
    	tmp3 = inptr[48];
	    tmp7 = inptr[56];
    	
    	tmp10 = tmp0 + tmp2;
    	tmp11 = tmp0 - tmp2;
    	
    	tmp13 = tmp1 + tmp3;
    	tmp12 = ((INT_P362*(tmp1 - tmp3))>>8) - tmp13;
    	
    	tmp0 = tmp10 + tmp13;
    	tmp3 = tmp10 - tmp13;
    	tmp1 = tmp11 + tmp12;
    	tmp2 = tmp11 - tmp12;
    
		z13 = tmp6 + tmp5;
		z10 = tmp6 - tmp5;
		z11 = tmp4 + tmp7;
		z12 = tmp4 - tmp7;

		tmp7 = z11 + z13;
		tmp11 = (INT_P362*(z11 - z13))>>8;
		z5 =    ((z10 + z12)*INT_P473);
		tmp10 = ((INT_P277*z12 - z5)>>8);
		tmp12 = ((INT_M669*z10 + z5)>>8);

		tmp6 = tmp12 - tmp7;
		tmp5 = tmp11 - tmp6;
		tmp4 = tmp10 + tmp5;

		wsptr[0]  =  (tmp0 + tmp7);
		wsptr[8]  =  (tmp1 + tmp6);
		wsptr[16] =  (tmp2 + tmp5);
		wsptr[24] =  (tmp3 - tmp4);
		wsptr[32] =  (tmp3 + tmp4);
		wsptr[40] =  (tmp2 - tmp5);
		wsptr[48] =  (tmp1 - tmp6);
		wsptr[56] =  (tmp0 - tmp7);

		inptr++;
		wsptr++;
	}

	/* pass 2 */
	wsptr = ZZ;
	outptr = reconstruc_buffer[rec_idx];
	for(K=DCT_SIZE; K>0; K--)
	{
		tmp10 = (wsptr[0] + wsptr[4]);
		tmp11 = (wsptr[0] - wsptr[4]);

		tmp13 = (wsptr[2] + wsptr[6]);
		tmp12 = ((INT_P362*(wsptr[2] - wsptr[6]))>>8) - tmp13;

		tmp0 = tmp10 + tmp13;
		tmp3 = tmp10 - tmp13;
		tmp1 = tmp11 + tmp12;
		tmp2 = tmp11 - tmp12;

		z13 = wsptr[5] + wsptr[3];
		z10 = wsptr[5] - wsptr[3];
		z11 = wsptr[1] + wsptr[7];
		z12 = wsptr[1] - wsptr[7];

		tmp7 = z11 + z13;
		tmp11 = (INT_P362*(z11 - z13))>>8;

		z5 = (z10 + z12)*INT_P473;
		tmp10 = ((INT_P277*z12 - z5)>>8);
		tmp12 = ((INT_M669*z10 + z5)>>8);

		tmp6 = tmp12 - tmp7;
		tmp5 = tmp11 - tmp6;
		tmp4 = tmp10 + tmp5;

		*outptr++ = ((tmp0 + tmp7)>>5);
		*outptr++ = ((tmp1 + tmp6)>>5);
		*outptr++ = ((tmp2 + tmp5)>>5);
		*outptr++ = ((tmp3 - tmp4)>>5);
		*outptr++ = ((tmp3 + tmp4)>>5);
		*outptr++ = ((tmp2 - tmp5)>>5);
		*outptr++ = ((tmp1 - tmp6)>>5);
		*outptr++ = ((tmp0 - tmp7)>>5);
		wsptr += DCT_SIZE;
	}
	return iRet;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丝袜美腿综合| 国产精品美女一区二区在线观看| 成人福利在线看| 国产精品一二三四五| 精品一区二区成人精品| 久草热8精品视频在线观看| 激情综合色综合久久综合| 精品一区二区三区免费观看| 国产成人亚洲综合a∨婷婷图片 | 日本一区二区电影| 国产日韩欧美高清在线| 国产精品国产精品国产专区不蜜| 国产精品欧美极品| 亚洲综合色视频| 日产国产欧美视频一区精品| 久久精品国产久精国产| 精品亚洲porn| 91在线一区二区三区| 欧美专区亚洲专区| 日韩精品专区在线影院观看| 久久久久久久久久看片| 欧美国产乱子伦| 亚洲综合视频在线观看| 美女国产一区二区| 成人黄色一级视频| 欧美日韩在线播放三区| 精品国产一区二区三区四区四| 国产欧美一区二区三区网站| 亚洲女人的天堂| 日本三级韩国三级欧美三级| 国产成人av影院| 精品视频资源站| 国产亚洲精品久| 亚洲大片精品永久免费| 国产九色精品成人porny| 色悠悠久久综合| 精品国内二区三区| 亚洲天堂成人在线观看| 日本欧美一区二区三区| 国产精品一二三在| 在线不卡欧美精品一区二区三区| 久久久精品国产免大香伊| 依依成人综合视频| 国产风韵犹存在线视精品| 欧美日韩国产乱码电影| 国产欧美日韩一区二区三区在线观看| 亚洲男人的天堂在线观看| 麻豆精品视频在线观看免费| 色久综合一二码| 久久品道一品道久久精品| 亚洲成人免费在线| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日韩午夜在线影院| 亚洲伦理在线精品| 粉嫩av一区二区三区在线播放| 欧美日韩色综合| 亚洲色图欧美偷拍| 国产成人自拍网| 欧美mv日韩mv亚洲| 首页国产欧美久久| 欧美亚洲一区二区在线观看| 国产精品电影院| 国产成a人无v码亚洲福利| 欧美电影免费观看高清完整版在线观看 | 欧美人成免费网站| 亚洲五码中文字幕| 91福利在线播放| 一级做a爱片久久| 色88888久久久久久影院按摩| 国产色婷婷亚洲99精品小说| 黄网站免费久久| 欧美成人艳星乳罩| 国产在线精品一区在线观看麻豆| 欧美一区二区三区视频在线| 日韩成人午夜电影| 欧美一区二区三区不卡| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美三级电影网站| 天天影视网天天综合色在线播放 | 丝袜a∨在线一区二区三区不卡| 日本电影欧美片| 亚洲电影欧美电影有声小说| 欧美中文一区二区三区| 亚洲高清一区二区三区| 欧美精品三级日韩久久| 久久国产乱子精品免费女| xvideos.蜜桃一区二区| 经典三级视频一区| 亚洲国产精品高清| 99国产一区二区三精品乱码| 亚洲精品免费在线观看| 在线观看av一区| 喷白浆一区二区| 久久你懂得1024| 99久久婷婷国产综合精品电影| 亚洲欧美国产三级| 7777女厕盗摄久久久| 国产美女在线观看一区| 中文字幕一区二区三区四区不卡| 在线免费观看日韩欧美| 免费成人在线影院| 欧美国产日产图区| 欧美亚洲动漫制服丝袜| 久久电影国产免费久久电影| 国产欧美在线观看一区| 欧美手机在线视频| 精品一区二区三区的国产在线播放| 中文字幕久久午夜不卡| 欧美日韩日日骚| 国产伦理精品不卡| 亚洲国产成人精品视频| 久久免费偷拍视频| 91电影在线观看| 国产真实精品久久二三区| 亚洲精品久久7777| 精品卡一卡二卡三卡四在线| 91视频一区二区| 九九**精品视频免费播放| 日韩久久一区二区| 欧美精品一区二区三区视频| 在线免费亚洲电影| 高清不卡在线观看| 裸体一区二区三区| 一区二区三区资源| 欧美激情一区二区三区在线| 欧美精品欧美精品系列| av不卡在线观看| 国产精品一区二区久久精品爱涩 | 国产精品亚洲专一区二区三区| 夜夜精品视频一区二区| 国产日韩欧美制服另类| 日韩视频免费直播| 欧美无乱码久久久免费午夜一区 | 国产精品天美传媒| 日韩欧美电影在线| 欧美三级三级三级| 色婷婷综合久色| 99精品黄色片免费大全| 国产91精品免费| 国产精品系列在线观看| 捆绑调教一区二区三区| 日韩国产一二三区| 日韩黄色在线观看| 亚洲777理论| 亚洲.国产.中文慕字在线| 亚洲精品高清视频在线观看| 国产精品久久一级| 国产精品欧美一区喷水| 中文字幕va一区二区三区| 久久久久亚洲蜜桃| 2021中文字幕一区亚洲| 精品国产91乱码一区二区三区| 日韩一区二区精品在线观看| 欧美一区二区女人| 91精品国产美女浴室洗澡无遮挡| 欧美日韩一级黄| 91精品国产手机| 日韩精品一区二区在线| 精品久久久久一区| 久久综合久久综合久久| 26uuu国产日韩综合| 亚洲国产精品99久久久久久久久| 国产三级三级三级精品8ⅰ区| 国产午夜精品一区二区| 国产精品乱码人人做人人爱| 亚洲天堂精品视频| 一区二区免费在线播放| 天天亚洲美女在线视频| 免费一区二区视频| 国产精品18久久久久久久久 | 免费av成人在线| 国产综合久久久久影院| 成人综合在线观看| 91日韩在线专区| 欧美精品第1页| 精品国产乱码久久久久久老虎| 久久久精品黄色| 一区二区视频在线| 美女视频黄免费的久久| 国产精品12区| 欧美性猛片aaaaaaa做受| 欧美xxxxx裸体时装秀| 国产精品视频观看| 亚洲成人免费视频| 国产露脸91国语对白| 色婷婷av一区二区| 欧美变态口味重另类| 亚洲免费伊人电影| 美腿丝袜亚洲色图| 91麻豆国产在线观看| 欧美一区二区三区色| 亚洲欧洲韩国日本视频| 蜜桃一区二区三区四区| 91小视频免费观看| 精品国产乱码久久久久久蜜臀| 亚洲人成7777| 激情五月婷婷综合| 欧美这里有精品| 国产精品久久看| 久久99精品国产|