⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpeglib.h

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 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 + -