- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
cjpeg.h
资源名称:jpeg_decode [点击查看]
上传用户:liulu_102
上传日期:2007-01-14
资源大小:193k
文件大小:2k
源码类别:
图片显示
开发平台:
Visual C++
- #if !defined(_JPEGCP_)
- #define _JPEGCP_
- #include <windows.h>
- #include <fstream.h>
- #define FIXED_1 0x00010000
- #define FIXED_half 0x00008000
- #define LONG_TO_FIXED(l) ((l)*FIXED_1)
- #define FLOAT_TO_FIXED(f) ((long)((f)*FIXED_1))
- #define FIXED_TO_SHORT(f) ((short)((f)>>16))
- #define FIXED_TO_BYTE(f) ((BYTE)((f)>>16))
- #define FIXED_TO_LONG(f) ((f)>>16)
- #define JPEGCPERR_NOERROR 0
- #define JPEGCPERR_UNKNOWNERROR 1
- #define JPEGCPERR_UNSUPPORTEDVERSION 2
- #define JPEGCPERR_QTERROR 3
- #define JPEGCPERR_FRAMEERROR 4
- #define JPEGCPERR_HTERROR 5
- #define JPEGCPERR_SOSERROR 6
- #define IDCT_FLOAT 0
- #define IDCT_INT 1
- #define IDCT_MMX 2
- typedef struct NODE
- { NODE *lNode;
- NODE *rNode;
- BOOL isLeave;
- unsigned char code;
- }NODE;
- typedef struct
- { unsigned char *stream;
- UINT bufIdx;
- UINT bitIdx;
- UINT remain;
- }DECODE_PARAM;
- class CHuffmanTable
- {
- private:
- NODE root;
- private:
- public:
- CHuffmanTable();
- ~CHuffmanTable();
- BOOL addNode(UINT len,unsigned char c);
- BOOL addNode(NODE* node,UINT len,unsigned char c);
- void clear();
- void clearNode(NODE* node);
- BOOL deCode(DECODE_PARAM* pa,unsigned char *p);
- public:
- friend class CJpeg;
- };
- typedef struct
- { UINT v,h;
- UINT qtID;
- }COMPONENT;
- typedef struct
- { UINT imgWidth,imgHeight;
- UINT bufWidth,bufHeight;
- int comNum;
- BYTE *image[5];
- }JPEG_IMAGE_INFO;
- class CJpeg
- {
- //private:
- private:
- BOOL error;
- UINT errorCode;
- BOOL opened;
- UINT imgWidth,imgHeight;
- UINT bufWidth,bufHeight;
- UINT numOfCOM;
- UINT ri;
- UINT qt[4][64];
- CHuffmanTable htDC[4];
- CHuffmanTable htAC[4];
- COMPONENT com[6];
- UINT maxH,maxV;
- UINT unitNumH,unitNumV;
- BYTE *image[5];
- void (CJpeg::* pIdctFunc)(short*,BYTE*);
- private:
- void init();
- void idctFloat(short* coef_block,BYTE *output_buf);
- void idctInt (short* coef_block,BYTE *output_buf);
- void domidct8x8llmW(short *inptr,int*,BYTE* outptr);
- void idctMMX(short* coef_block,BYTE *output_buf);
- void storeBlock(UINT comID,UINT num,BYTE *block,BYTE *img);
- void YCbCrToRGB();
- BOOL readQTable(ifstream &ifs);
- BOOL readHTable(ifstream &ifs);
- BOOL readSOF0(ifstream &ifs);
- BOOL readRI(ifstream &ifs);
- BOOL readSOS(ifstream &ifs);
- public:
- CJpeg();
- CJpeg(LPCSTR fileName,UINT idctMode);
- ~CJpeg();
- BOOL operator!();
- BOOL open(LPCSTR fileName,UINT idctMode);
- void getImageInfo(JPEG_IMAGE_INFO* info);
- void close();
- UINT getLastError();
- public:
- };
- #endif