JPEG文件分为两个部分,标记码(Tag)和压缩数据。
码流格式设计依次为:SOI、APP0info、DQTinfo、DRIinfo、SOFinfo、DHTinfo、SOSinfo和EOI。具体结构如下:
#define BYTE unsigned char
#define WORD unsigned short int
#define SOI 0xFFD8 // Start of Image
#define EOI 0xFFD9 // End of Image
static struct APP0info{
WORD marker; // 0xFFE0
WORD length; // 16 for usual JPEG
BYTE JFIFsignature[5]; // ="JFIF",'/0'=0x4A,0x46,0x49,0x46,0x00
WORD version; // 0x0101,0x0102
BYTE xyunits; // 0 for default
WORD xdensity;
WORD ydensity;
BYTE num_of_x;
BYTE num_of_y;
//RGB0---RGBn ??
}APP0info;
static struct DQTinfo{ // Define quantization table
WORD marker; // 0xFFDB
WORD length; // 132 for usual case
BYTE QTYinfo; // Pq(7:4)=0,1:8bit or 16bit precision; Tq(3:0)=0,1,2,3:id of QT table