KJpegLib.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //---------------------------------------------------------------------------
  2. // Sword3 Engine (c) 1999-2000 by Kingsoft
  3. //
  4. // File: KJpegLib.h
  5. // Date: 2000.08.08
  6. // Code: Daniel Wang
  7. // Desc: Header File
  8. //---------------------------------------------------------------------------
  9. #ifndef KJpegLib_H
  10. #define KJpegLib_H
  11. //---------------------------------------------------------------------------
  12. #pragma pack (push) // pack值进栈
  13. #pragma pack (1) // pack = 1
  14. // Jpeg file info
  15. typedef struct {
  16. int mode; // 色彩模式
  17. int width; // 宽度
  18. int height; // 高度
  19. } JPEG_INFO;
  20. // Huffman code struct
  21. typedef struct {
  22. WORD code; // huffman 编码
  23. BYTE len; // 掩码长度
  24. BYTE num; // 代表的字节
  25. } JPEG_HCODE;
  26. // Huffman table
  27. typedef struct {
  28. JPEG_HCODE *htb;
  29. int num;
  30. } JPEG_HTABLE;
  31. // Jpeg compoents
  32. typedef struct {
  33. BYTE v;
  34. BYTE h;
  35. BYTE qtb;
  36. BYTE act;
  37. BYTE dct;
  38. } JPEG_COMPONENT;
  39. // Jpeg start of frame 0
  40. typedef struct {
  41. BYTE colordepth;
  42. WORD height;
  43. WORD width;
  44. BYTE components;
  45. JPEG_COMPONENT component[3];
  46. } JPEG_SOF0;
  47. #pragma pack (pop) // pack值出栈
  48. //---------------------------------------------------------------------------
  49. #define READ_BYTE(stream) (*stream++)
  50. #define READ_WORD(a,stream) 
  51. __asm mov esi,stream
  52. __asm xor eax,eax
  53. __asm lodsw
  54.     __asm xchg al,ah
  55. __asm mov a,ax
  56. __asm mov stream,esi
  57. //---------------------------------------------------------------------------
  58. // decode vars
  59. extern PBYTE jpeg_stream;
  60. extern short jpeg_ybuf[256];
  61. extern short jpeg_cbbuf[64];
  62. extern short jpeg_crbuf[64];
  63. extern short jpeg_DC[3];
  64. extern short* jpeg_qtable[4];
  65. extern JPEG_HTABLE jpeg_htable[8];
  66. extern BYTE jpeg_bit;
  67. extern JPEG_SOF0 jpeg_head;
  68. // interface
  69. extern BOOL jpeg_decode_init(BOOL bRGB555, BOOL bMMXCPU);
  70. extern BOOL jpeg_decode_info(PBYTE pJpgBuf, JPEG_INFO* pInfo);
  71. extern BOOL jpeg_decode_data(PWORD pBmpBuf, JPEG_INFO* pInfo);
  72. extern BOOL jpeg_decode_dataEx(PWORD pBmpBuf, int pitch, JPEG_INFO* pInfo);
  73. // decode functions
  74. extern PBYTE jpeg_read_DQT(PBYTE stream);
  75. extern PBYTE jpeg_read_DHT(PBYTE stream);
  76. extern PBYTE jpeg_read_SOF(PBYTE stream);
  77. extern PBYTE jpeg_read_SOS(PBYTE stream);
  78. extern PBYTE jpeg_skip_SEG(PBYTE stream);
  79. extern void jpeg_preprocess(LPBYTE stream);
  80. extern void jpeg_decode_DU(short* buf, int com);
  81. extern void jpeg_init_table();
  82. extern void jpeg_free_table();
  83. extern void jpeg_idct_mmx(short* buf);
  84. extern void jpeg_idct_2d(short* buf);
  85. // function pointers
  86. extern void (*jpeg_IDCT)(short* buf);
  87. extern void (*jpeg_Y2RGB)(WORD *bmppixel, int pitch);
  88. extern void (*jpeg_YCbCr411)(WORD *bmppixel, int pitch);
  89. extern void (*jpeg_YCbCr111)(WORD *bmppixel, int pitch);
  90. //---------------------------------------------------------------------------
  91. #endif