C
struct _JPEGDECODER { IMG_FILE * pImageFile; BYTE blJFIF; BYTE bMajorRev; BYTE bMinorRev; BYTE bDataBits; WORD wWidth; WORD wHeight; BYTE bChannels; BYTE abChannelType[MAX_CHANNELS]; BYTE abChannelHSampFactor[MAX_CHANNELS]; BYTE abChannelVSampFactor[MAX_CHANNELS]; BYTE abChannelQuantTableMap[MAX_CHANNELS]; BYTE blQuantUses16bits; WORD awQuantTable[MAX_CHANNELS][64]; WORD wRestartInterval; BYTE bHuffTables; BYTE abHuffAcSymLen[MAX_HUFF_TABLES][16]; BYTE abHuffAcSymbol[MAX_HUFF_TABLES][256]; BYTE abHuffDcSymLen[MAX_HUFF_TABLES][16]; BYTE abHuffDcSymbol[MAX_HUFF_TABLES][16]; WORD awHuffAcSymStart[MAX_HUFF_TABLES][16]; WORD awHuffDcSymStart[MAX_HUFF_TABLES][16]; BYTE abChannelHuffAcTableMap[MAX_CHANNELS]; BYTE abChannelHuffDcTableMap[MAX_CHANNELS]; BYTE bError; WORD wWorkBits; BYTE bBitsAvailable; BYTE bBlocksInOnePass; SHORT asOneBlock[MAX_BLOCKS][64]; WORD wBlockNumber; BYTE abChannelMap[MAX_BLOCKS]; BYTE bSubSampleType; SHORT asPrevDcValue[MAX_CHANNELS]; BYTE * pbCurrentHuffSymLenTable; BYTE * pbCurrentHuffSymbolTable; WORD * pwCurrentHuffSymStartTable; WORD * pwCurrentQuantTable; BYTE abDataBuffer[MAX_DATA_BUF_LEN]; WORD wBufferLen; WORD wBufferIndex; BYTE bFirstBit; WORD wPrevX; WORD wPrevY; };
Description
DATA STRUCTURES
Members
Members |
Description |
IMG_FILE * pImageFile; |
Image file pointer |
BYTE blJFIF; |
JFIF marker found flag |
BYTE bMajorRev; |
Should be 1 |
BYTE bMinorRev; |
Should be 0-2 but is not a show stopper ------- The x/y densities and thumbnail data are ignored |
BYTE bDataBits; |
Data precision, can be 8(, 12 or 16) |
WORD wWidth; |
Width in pixels |
WORD wHeight; |
Height in pixels |
BYTE bChannels; |
Number of channels e.g. YCbCr = 3 |
BYTE blQuantUses16bits; |
If flag is set, it is an error as 16 bit is not supported |
WORD awQuantTable[MAX_CHANNELS][64]; |
Supports only 8 & 16 bit resolutions |
WORD wRestartInterval; |
The restart interval in blocks |
BYTE bHuffTables; |
From DHT |
BYTE abHuffAcSymLen[MAX_HUFF_TABLES][16]; |
Supports only 8 bit resolution |
BYTE abHuffAcSymbol[MAX_HUFF_TABLES][256]; |
Maximum possible symbols are 256 |
BYTE abHuffDcSymLen[MAX_HUFF_TABLES][16]; |
Supports only 8 bit resolution |
BYTE abHuffDcSymbol[MAX_HUFF_TABLES][16]; |
Maximum possible symbols are 16 for DC :-) |
WORD awHuffAcSymStart[MAX_HUFF_TABLES][16]; |
Starting symbol for each length |
WORD awHuffDcSymStart[MAX_HUFF_TABLES][16]; |
Starting symbol for each length |
BYTE abChannelHuffAcTableMap[MAX_CHANNELS]; |
From SOS |
WORD wWorkBits; |
Work memory |
SHORT asOneBlock[MAX_BLOCKS][64]; |
Temporary storage for a 8x8 block |