📄 jpeglib.h
字号:
/*
* jpeglib.h
*
*
*
*
*
* This file defines the application interface for the JPEG library.
* Most applications using the library need only include this file,
* and perhaps
*/
#ifndef JPEGLIB_H
#define JPEGLIB_H
#include "types.h"
#include "user_init.h"
/* This part borrowed from the bsd386 isofs */
#define ISODCL(from, to) (to - from + 1)
#define SOI 0xFFD8
#define APP0 0xFFE0
#define EOI 0xFFD9
#define DQT 0xFFDB
#define DHT 0xFFC4
#define SOF0 0xFFC0
#define SOS 0xFFDA
#define DRI 0xFFDD
#define RST 0xFFD0
#define RST0 0xFFD0
#define RST7 0xFFD7
#define SOF1 0xFFC1
#define SOF2 0xFFC2
#define SOF3 0xFFC3
#define SOF5 0xFFC5
#define SOF6 0xFFC6
#define SOF7 0xFFC7
#define SOF9 0xFFC9
#define SOFA 0xFFCA
#define SOFB 0xFFCB
#define SOFD 0xFFCD
#define SOFE 0xFFCE
#define SOFF 0xFFCF
#define DAC 0xFFCC
//#define JPGTVX 720
//#define JPGTVY 480
//#define JPEGDEBUG 1
//#define JPGMONPERFORMANCE0 1 //only measure total time
//#define JPGMONPERFORMANCE1 1 //measure all components time
#define JPGOPTIMIZE 1
//0608 change INT16->int
typedef struct
{
int P;
int Nf;
int Y;
int X;
int HxV[4];
int QTableIndex[4];
}
T_SOF0;
//0608 change INT16->BYTE
typedef struct
{
INT16 NHT;
BYTE Tc[4];
BYTE Th[4];
BYTE L[4][16];
BYTE V[4][256];
}
T_DHT;
//0608 change INT16->int
typedef struct
{
int Ns;
int Cs[4];
int Td[4];
int Ta[4];
int Ss;
int Se;
int Ah;
int Al;
}
T_SOS;
typedef struct
{
UINT32 Necs;
UINT32 Nhecs;
UINT32 Nvecs;
UINT32 Nhdct;
UINT32 Nvdct;
UINT32 Ndct;
}
T_ECS;
typedef struct
{
UINT16 marker;
UINT16 tbl_len;
UINT16 gcJpgState;
UINT32 rd_ptr;
UINT32 giPos;
UINT16 gIthBits;
//20010626
//UINT16 latch;
UINT32 latch;
UINT32 iReadLen;
UINT32 iLeaveLen;
UINT32 iAllLen;
UINT32 iProcessedLen;
UINT32 Vmcu;
UINT32 Hmcu;
#ifndef SUPPORT_JPG_ZOOM_ON
UINT16 xWidth;
UINT16 yHeight;
#endif
int restart_interval;
int ri;
UINT16 gbDecodeECS;
int iiii;
UINT32 nextMSF;
UINT32 needFrames;
#ifdef JPGMONPERFORMANCE0
UINT32 iIDPCM;
UINT32 iIVLC;
UINT32 iIDCT;
UINT32 iAll;
UINT32 iAll1;
UINT32 iMove;
UINT32 iCopyCD;
#endif
UINT32 iTime1;
UINT32 iTime2;
UINT32 xBlocks;
UINT32 yBlocks;
#ifndef SUPPORT_JPG_ZOOM_ON
UINT16 xOffset;
UINT16 yOffset;
#endif
BYTE iFactor;
BYTE *gfp;
BYTE *pCbCr;
BYTE cStep;
BYTE scanState;
BYTE checkRST;
}
MYJPEG;
typedef struct
{
int tmp0;
int tmp1;
int tmp2;
int tmp3;
int tmp4;
int tmp5;
int tmp6;
int tmp7;
int tmp10;
int tmp11;
int tmp12;
int tmp13;
int z5;
int z10;
int z11;
int z12;
int z13;
UINT32 Vdct;
UINT32 Hdct;
UINT32 bx;
UINT32 by;
UINT32 hh;
UINT32 vv;
UINT32 xNew;
UINT32 yNew;
}
JPGTEMP;
//#define MAXJSAMPLE 255
//#define RANGE_MASK (MAXJSAMPLE*4+3)
#define DCTSIZE 8
#define DCTSIZE2 64
#define FIX_1_082392200 ((INT32) 277) /* FIX(1.082392200) */
#define FIX_1_414213562 ((INT32) 362) /* FIX(1.414213562) */
#define FIX_1_847759065 ((INT32) 473) /* FIX(1.847759065) */
#define FIX_2_613125930 ((INT32) 669) /* FIX(2.613125930) */
#define CONST_BITS 8
#define PASS1_BITS 2
//#define SHIFT_TEMPS
#define RIGHT_SHIFT(x,shft) ((x) >> (shft))
//#define ONE ((INT32) 1)
//#define CONST_SCALE (ONE << CONST_BITS)
// tyt's notes, 0417/2001
// for accurate rounding, select the first macro
// for faster operation, select the second macro
//#define DESCALE(x,n) RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
#define DESCALE(x,n) RIGHT_SHIFT(x, n)
#define MULTIPLY(var,const) ((INT16) DESCALE((var) * (const), CONST_BITS))
//#ifndef JPGOPTIMIZE
//#define DEQUANTIZE(coef,quantval) (((INT16) (coef)) * (quantval))
//#endif
#endif /* JPEGLIB_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -