JPEG标准中推荐的缺省huffman编码表(一)

2014-11-24 11:33:06 · 作者: · 浏览: 51
/* created(bruin, 2002.11.26) */
typedef unsigned char BYTE;
/* entry in huffman table: the entry index is the symbol value */
typedef struct{
BYTE size; /* number of bits of the huffman code. <= 16 */
WORD code; /* huffman code in the least signficant bits */
}HUFF_ENTRY;
/* JPEG DHT format of 4 typical huffman tables given in "ISO/IEC 10918-1, 1993(e), Annex K":
+ luminance DC coefficient difference,
+ luminance AC coefficient,
+ chrominance DC coefficient difference, and
+ chrominance AC coeeficient
this block of data can be obtained by simply dumping a typical jpeg file.
*/
注意:霍夫曼表一般包括四个部分,直流亮度霍夫曼值(DC Luminance)、交流亮度霍夫曼值(AC Luminance)、直流色度霍夫曼值(DC Chrominance)、交流色度霍夫曼值(AC Chrominance),但是在具体应用中,这四部分的顺序是可以调整的,比如在mjpg-Streamer中的顺序是:直流亮度、直流色度、交流亮度、交流色度。
static BYTE s_default_dht[] = {
0xff,0xc4, /* DHT (Define Huffman Table) identifier */
0x01,0xa2, /* section size: 0x01a2, from this two bytes to the end, inclusive */
0x00, /* DC Luminance */
0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* BITS */
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, /* HUFFVALS */
0x10, /* AC Luminance */
0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d, /* BITS */
0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07, /* HUFFVALS */
0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,
0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,
0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,
0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,
0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,
0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,
0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
0xf9,0xfa,
0x01, /* DC Chrominance */
0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, /* BITS */
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, /* HUFFVALS */
0x11, /* AC Chrominance */
0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77, /* BITS */
0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71, /* HUFFVALS */
0x13,0x22,0x32,0x81,