www.pudn.com > dip_1_1_bmp2jpeg.rar > global.h


#ifndef __GLOBAL__ 
#define __GLOBAL__ 
////////////////////////////////////////////////////////////////////////// 
#define  EOB  0x00 
#define PI 3.14159265358979323846 
 
//-------------------------------- 全局变量--------------------------------------- 
 
// DCT转换尺寸 
static const BYTE myDCTSIZE = 8; 
static const BYTE myDCTBLOCKSIZE = 64;   
 
//量化后DC范围在-2^11 - 2^11 - 1之间,量化后AC范围在-2^10 - 2^10 - 1之间 
static const INT my_AC_MAX_QUANTED = 1023;    //量化后AC的最大值 
static const INT my_AC_MIN_QUANTED = -1024;   //量化后AC的最小值 
static const INT my_DC_MAX_QUANTED = 2047;    //量化后DC的最大值 
static const INT my_DC_MIN_QUANTED = -2048;   //量化后DC的最小值 
 
// 存放DQT段的2个量化表 
static BYTE myYQT[myDCTBLOCKSIZE];  // DCTBLOCKSIZE = 64 ; 
static BYTE myUVQT[myDCTBLOCKSIZE]; 
 
// 存放2个FDCT变换要求格式的量化表 
static FLOAT myYQT_DCT[myDCTBLOCKSIZE]; // DCTBLOCKSIZE = 64 ; 
static FLOAT myUVQT_DCT[myDCTBLOCKSIZE]; 
 
static BYTE  myVLI_TAB[4096]; 
static BYTE* mypVLITAB;     //VLI_TAB的别名,使下标在-2048-2048 
 
 
//正向 8x8 Z变换表 
static const BYTE myFZBT[64] = 
{ 
	0, 1, 5, 6, 14,15,27,28, 
	2, 4, 7, 13,16,26,29,42, 
	3, 8, 12,17,25,30,41,43, 
	9, 11,18,24,31,40,44,53, 
	10,19,23,32,39,45,52,54, 
	20,22,33,38,46,51,55,60, 
	21,34,37,47,50,56,59,61, 
	35,36,48,49,57,58,62,63 
}; 
 
static SHORT msk_sign[12] ={ 
	 
	0x0000,0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400 
}; 
 
 
 
// Y 分量 DC 系数码表  
static BYTE STD_Y_DC_NR[16]={0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; // 各比特长度码字个数!  
// UV 分量 DC 系数码表 
static BYTE STD_UV_DC_NR[16]={0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; // 各比特长度码字个数!  
// Y 分量 AC 系数码表  
static BYTE STD_Y_AC_NR[16]={0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0X7D };// 各比特长度码字个数! 0X7D = 125  
// UV 分量 AC 系数码表 
static BYTE STD_UV_AC_NR[16]={0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0X77}; // 各比特长度码字个数! 0X77 = 119 
 
static BYTE mySTD_Y_DC_NRCODES[17]; 
static BYTE mySTD_UV_DC_NRCODES[17]; 
static BYTE mySTD_Y_AC_NRCODES[17]; 
static BYTE mySTD_UV_AC_NRCODES[17]; 
 
////////////////////////////////////////////////////////////////////////// 
typedef struct tagVLCTABLE { 
	BYTE sym1_val;     // 码字中间格式的符号1, DC码表为(Size), AC码表为(RunLength, Size) 
	BYTE codeLen;      // huffman 码字长度,最大为16,用一字节表示 
	UINT codeword;     // huffman 码字的值,不超过16位,这里用32位记录  
}VLCTABLE; 
 
//定义四张Huffman码字表,码表按照码字的大小顺序排序; 
static VLCTABLE VLCTAB_DC_Y[12]; 
static VLCTABLE VLCTAB_DC_UV[12]; 
static VLCTABLE VLCTAB_AC_Y[162]; 
static VLCTABLE VLCTAB_AC_UV[162]; 
 
/* 
//DC系数Y分量码表 
static VLCTABLE VLCTAB_DC_Y[12] = { 
	{0,2,0},	{1,3,2},	{2,3,3},	 {3,3,4}, 
	{4,3,5},	{5,3,6},	{6,4,14},	 {7,5,30}, 
	{8,6,62},	{9,7,126},	{10,8,254},	 {11,9,510}  
}; 
//DC系数UV分量码表 
static VLCTABLE VLCTAB_DC_UV[12] = { 
	{0,2,0},	{1,2,1},	{2,2,2}, 	 {3,3,6}, 
	{4,4,14},	{5,5,30},	{6,6,62},	 {7,7,126}, 
	{8,8,254},	{9,9,510},	{10,10,1022},{11,11,2046} 
 
}; 
//AC系数Y分量码表 
static VLCTABLE VLCTAB_AC_Y[162] = { 
 
	{0x01,2,0},		{0x02,2,1},		{0x03,3,4},		{0x00,4,10},	 {0x04,4,11},	 {0x11,4,12},  
	{0x05,5,26},	{0x12,5,27},	{0x21,5,28},	{0x31,6,58},	 {0x41,6,59},	 {0x06,7,120}, 
	{0x13,7,121},	{0x51,7,122},	{0x61,7,123},	{0x07,8,248},	 {0x22,8,249},	 {0x71,8,250}, 
	{0x14,9,502},	{0x32,9,503},	{0x81,9,504},	{0x91,9,505},	 {0xa1,9,506},	 {0x08,10,1014}, 
	{0x23,10,1015}, {0x42,10,1016}, {0xb1,10,1017}, {0xc1,10,1018},  {0x15,11,2038}, {0x52,11,2039},  
	{0xd1,11,2040}, {0xf0,11,2041}, {0x24,12,4084}, {0x33,12,4085},	 {0x62,12,4086}, {0x72,12,4087}, 
	{0x82,15,32704},{0x09,16,65410},{0x0a,16,65411},{0x16,16,65412}, {0x17,16,65413},{0x18,16,65414}, 
	{0x19,16,65415},{0x1a,16,65416},{0x25,16,65417},{0x26,16,65418}, {0x27,16,65419},{0x28,16,65420}, 
	{0x29,16,65421},{0x2a,16,65422},{0x34,16,65423},{0x35,16,65424}, {0x36,16,65425},{0x37,16,65426}, 
	{0x38,16,65427},{0x39,16,65428},{0x3a,16,65429},{0x43,16,65430}, {0x44,16,65431},{0x45,16,65432}, 
	{0x46,16,65433},{0x47,16,65434},{0x48,16,65435},{0x49,16,65436}, {0x4a,16,65437},{0x53,16,65438}, 
	{0x54,16,65439},{0x55,16,65440},{0x56,16,65441},{0x57,16,65442}, {0x58,16,65443},{0x59,16,65444}, 
	{0x5a,16,65445},{0x63,16,65446},{0x64,16,65447},{0x65,16,65448}, {0x66,16,65449},{0x67,16,65450},  
	{0x68,16,65451},{0x69,16,65452},{0x6a,16,65453},{0x73,16,65454}, {0x74,16,65455},{0x75,16,65456},  
	{0x76,16,65457},{0x77,16,65458},{0x78,16,65459},{0x79,16,65460}, {0x7a,16,65461},{0x83,16,65462}, 
	{0x84,16,65463},{0x85,16,65464},{0x86,16,65465},{0x87,16,65466}, {0x88,16,65467},{0x89,16,65468}, 
	{0x8a,16,65469},{0x92,16,65470},{0x93,16,65471},{0x94,16,65472}, {0x95,16,65473},{0x96,16,65474}, 
	{0x97,16,65475},{0x98,16,65476},{0x99,16,65477},{0x9a,16,65478}, {0xa2,16,65479},{0xa3,16,65480}, 
	{0xa4,16,65481},{0xa5,16,65482},{0xa6,16,65483},{0xa7,16,65484}, {0xa8,16,65485},{0xa9,16,65486},  
	{0xaa,16,65487},{0xb2,16,65488},{0xb3,16,65489},{0xb4,16,65490}, {0xb5,16,65491},{0xb6,16,65492}, 
	{0xb7,16,65493},{0xb8,16,65494},{0xb9,16,65495},{0xba,16,65496}, {0xc2,16,65497},{0xc3,16,65498}, 
	{0xc4,16,65499},{0xc5,16,65500},{0xc6,16,65501},{0xc7,16,65502}, {0xc8,16,65503},{0xc9,16,65504}, 
	{0xca,16,65505},{0xd2,16,65506},{0xd3,16,65507},{0xd4,16,65508}, {0xd5,16,65509},{0xd6,16,65510},  
	{0xd7,16,65511},{0xd8,16,65512},{0xd9,16,65513},{0xda,16,65514}, {0xe1,16,65515},{0xe2,16,65516}, 
	{0xe3,16,65517},{0xe4,16,65518},{0xe5,16,65519},{0xe6,16,65520}, {0xe7,16,65521},{0xe8,16,65522}, 
	{0xe9,16,65523},{0xea,16,65524},{0xf1,16,65525},{0xf2,16,65526}, {0xf3,16,65527},{0xf4,16,65528}, 
	{0xf5,16,65529},{0xf6,16,65530},{0xf7,16,65531},{0xf8,16,65532}, {0xf9,16,65533},{0xfa,16,65534} 
}; 
//AC系数UV分量码表 
static VLCTABLE VLCTAB_AC_UV[162] ={ 
 
	{0x00,2,0},		{0x01,2,1},		 {0x02,3,4},	 {0x03,4,10},	  {0x11,4,11},	  {0x04,5,24},  
	{0x05,5,25},    {0x21,5,26},     {0x31,5,27},    {0x06,6,56},     {0x12,6,57},    {0x41,6,58},  
	{0x51,6,59},    {0x07,7,120},    {0x61,7,121},   {0x71,7,122},	  {0x13,8,246},   {0x22,8,247},  
	{0x32,8,248},   {0x81,8,249},    {0x08,9,500},   {0x14,9,501},    {0x42,9,502},   {0x91,9,503}, 
	{0xa1,9,504},   {0xb1,9,505},    {0xc1,9,506},   {0x09,10,1014},  {0x23,10,1015}, {0x33,10,1016}, 
	{0x52,10,1017}, {0xf0,10,1018},  {0x15,11,2038}, {0x62,11,2039},  {0x72,11,2040}, {0xd1,11,2041},  
	{0x0a,12,4084}, {0x16,12,4085},  {0x24,12,4086}, {0x34,12,4087},  {0xe1,14,16352},{0x25,15,32706},  
	{0xf1,15,32707},{0x17,16,65416}, {0x18,16,65417},{0x19,16,65418}, {0x1a,16,65419},{0x26,16,65420}, 
	{0x27,16,65421},{0x28,16,65422}, {0x29,16,65423},{0x2a,16,65424}, {0x35,16,65425},{0x36,16,65426},  
	{0x37,16,65427},{0x38,16,65428}, {0x39,16,65429},{0x3a,16,65430}, {0x43,16,65431},{0x44,16,65432},  
	{0x45,16,65433},{0x46,16,65434}, {0x47,16,65435},{0x48,16,65436}, {0x49,16,65437},{0x4a,16,65438},  
	{0x53,16,65439},{0x54,16,65440}, {0x55,16,65441},{0x56,16,65442}, {0x57,16,65443},{0x58,16,65444}, 
	{0x59,16,65445},{0x5a,16,65446}, {0x63,16,65447},{0x64,16,65448}, {0x65,16,65449},{0x66,16,65450}, 
	{0x67,16,65451},{0x68,16,65452}, {0x69,16,65453},{0x6a,16,65454}, {0x73,16,65455},{0x74,16,65456},  
	{0x75,16,65457},{0x76,16,65458}, {0x77,16,65459},{0x78,16,65460}, {0x79,16,65461},{0x7a,16,65462},  
	{0x82,16,65463},{0x83,16,65464}, {0x84,16,65465},{0x85,16,65466}, {0x86,16,65467},{0x87,16,65468}, 
	{0x88,16,65469},{0x89,16,65470}, {0x8a,16,65471},{0x92,16,65472}, {0x93,16,65473},{0x94,16,65474}, 
	{0x95,16,65475},{0x96,16,65476}, {0x97,16,65477},{0x98,16,65478}, {0x99,16,65479},{0x9a,16,65480},  
	{0xa2,16,65481},{0xa3,16,65482}, {0xa4,16,65483},{0xa5,16,65484}, {0xa6,16,65485},{0xa7,16,65486}, 
	{0xa8,16,65487},{0xa9,16,65488}, {0xaa,16,65489},{0xb2,16,65490}, {0xb3,16,65491},{0xb4,16,65492}, 
	{0xb5,16,65493},{0xb6,16,65494}, {0xb7,16,65495},{0xb8,16,65496}, {0xb9,16,65497},{0xba,16,65498},  
	{0xc2,16,65499},{0xc3,16,65500}, {0xc4,16,65501},{0xc5,16,65502}, {0xc6,16,65503},{0xc7,16,65504}, 
	{0xc8,16,65505},{0xc9,16,65506}, {0xca,16,65507},{0xd2,16,65508}, {0xd3,16,65509},{0xd4,16,65510},  
	{0xd5,16,65511},{0xd6,16,65512}, {0xd7,16,65513},{0xd8,16,65514}, {0xd9,16,65515},{0xda,16,65516}, 
	{0xe2,16,65517},{0xe3,16,65518}, {0xe4,16,65519},{0xe5,16,65520}, {0xe6,16,65521},{0xe7,16,65522},  
	{0xe8,16,65523},{0xe9,16,65524}, {0xea,16,65525},{0xf2,16,65526}, {0xf3,16,65527},{0xf4,16,65528},  
	{0xf5,16,65529},{0xf6,16,65530}, {0xf7,16,65531},{0xf8,16,65532}, {0xf9,16,65533},{0xfa,16,65534} 
}; 
*/ 
 
////////////////////////////////////////////////////////////////////////// 
#endif