OpenCores
URL https://opencores.org/ocsvn/mb-jpeg/mb-jpeg/trunk

Subversion Repositories mb-jpeg

[/] [mb-jpeg/] [tags/] [arelease/] [decoder/] [jpeg.h] - Rev 66

Compare with Previous | Blame | View Log

/* File : jpeg.h, header for all jpeg code */
/* Author: Pierre Guerrier, march 1998     */
/*                                         */
/* 19/01/99  Edited by Koen van Eijk       */
 
/*#define SPY*/
/* Leave structures in memory,output something and dump core in the event
   of a failure: */
#define DEBUG 0
 
 
 
/*----------------------------------*/
/* JPEG format parsing markers here */
/*----------------------------------*/
 
#define SOI_MK	0xFFD8		/* start of image	*/
#define APP_MK	0xFFE0		/* custom, up to FFEF */
#define COM_MK	0xFFFE		/* commment segment	*/
#define SOF_MK	0xFFC0		/* start of frame	*/
#define SOS_MK	0xFFDA		/* start of scan	*/
#define DHT_MK	0xFFC4		/* Huffman table	*/
#define DQT_MK	0xFFDB		/* Quant. table		*/
#define DRI_MK	0xFFDD		/* restart interval	*/
#define EOI_MK	0xFFD9		/* end of image		*/
#define MK_MSK	0xFFF0
 
#define RST_MK(x)	( (0xFFF8&(x)) == 0xFFD0 )
			/* is x a restart interval ? */
 
 
 
/*-------------------------------------------------------- */
/* all kinds of macros here				*/
/*-------------------------------------------------------- */
 
#define first_quad(c)   ((c) >> 4)        /* first 4 bits in file order */
#define second_quad(c)  ((c) & 15)
 
#define HUFF_ID(hclass, id)       (2 * (hclass) + (id))
 
#define DC_CLASS        0
#define AC_CLASS        1
 
 
/*-------------------------------------------------------*/
/* JPEG data types here					*/
/*-------------------------------------------------------*/
 
typedef union {		/* block of pixel-space values */
  unsigned char	block[8][8];
  unsigned char	linear[64];
} PBlock;
 
typedef union {		/* block of frequency-space values */
  int block[8][8];
  int linear[64];
} FBlock;
 
 
/* component descriptor structure */
 
typedef struct {
  unsigned char	CID;	/* component ID */
  unsigned char	IDX;	/* index of first block in MCU */
 
  unsigned char	HS;	/* sampling factors */
  unsigned char	VS;
  unsigned char	HDIV;	/* sample width ratios */
  unsigned char	VDIV;
 
  char		QT;	/* QTable index, 2bits 	*/
  char		DC_HT;	/* DC table index, 1bit */
  char		AC_HT;	/* AC table index, 1bit */
  int		PRED;	/* DC predictor value */
} cd_t;
 
 
/*--------------------------------------------*/
/* global variables here		      */
/*--------------------------------------------*/
 
 
extern cd_t   comp[3]; /* for every component, useful stuff */
 
extern PBlock *MCU_buff[10];  /* decoded component buffer */
			      /* between IDCT and color convert */
extern int    MCU_valid[10];  /* for every DCT block, component id then -1 */
 
extern PBlock *QTable[4];     /* three quantization tables */
extern int    QTvalid[4];     /* at most, but seen as four ... */
 
extern FILE *fi;
extern FILE *fo;
 
/* picture attributes */
extern int x_size, y_size;	/* Video frame size     */
extern int rx_size, ry_size;	/* down-rounded Video frame size */
				/* in pixel units, multiple of MCU */
extern int MCU_sx, MCU_sy;  	/* MCU size in pixels   */
extern int mx_size, my_size;	/* picture size in units of MCUs */
extern int n_comp;		/* number of components 1,3 */
 
/* processing cursor variables */
extern int in_frame, curcomp, MCU_row, MCU_column;
			/* current position in MCU unit */
 
/* RGB buffer storage */
extern unsigned char *ColorBuffer;   /* MCU after color conversion */
extern unsigned char *FrameBuffer;   /* complete final RGB image */
extern PBlock        *PBuff;
extern FBlock        *FBuff;
 
/* process statistics */
extern int stuffers;	/* number of stuff bytes in file */
extern int passed;	/* number of bytes skipped looking for markers */
 
extern int verbose;
 
 
/*-----------------------------------------*/
/* prototypes from utils.c		   */
/*-----------------------------------------*/
 
extern void show_FBlock(FBlock *S);
extern void show_PBlock(PBlock *S);
extern void bin_dump(FILE *fi);
 
extern int      ceil_div(int N, int D);
extern int      floor_div(int N, int D);
extern void     reset_prediction();
extern int	reformat(unsigned long S, int good);
extern void     free_structures();
extern void	suicide();
extern void	aborted_stream(FILE *fi);
extern void	RGB_save(FILE *fo);
 
/*-----------------------------------------*/
/* prototypes from parse.c		   */
/*-----------------------------------------*/
 
extern void	clear_bits();
extern unsigned long	get_bits(FILE *fi, int number);
extern unsigned char	get_one_bit(FILE *fi);
extern unsigned int	get_size(FILE *fi);
extern unsigned int     get_next_MK(FILE *fi);
extern int	load_quant_tables(FILE *fi);
extern int      init_MCU();
extern void     skip_segment(FILE *fi);
extern int      process_MCU(FILE *fi);
 
/*-------------------------------------------*/
/* prototypes from fast_idct.c               */
/*-------------------------------------------*/
 
extern void	IDCT(const FBlock *S, PBlock *T);
 
/*-----------------------------------------*/
/* prototypes from color.c		   */
/*-----------------------------------------*/
 
extern void	color_conversion();
 
/*-------------------------------------------*/
/* prototypes from table_vld.c or tree_vld.c */
/*-------------------------------------------*/
 
extern int	load_huff_tables(FILE *fi);
extern unsigned char    get_symbol(FILE *fi, int select);
 
/*-----------------------------------------*/
/* prototypes from huffman.c 		   */
/*-----------------------------------------*/
 
extern void	unpack_block(FILE *fi, FBlock *T, int comp);
		/* unpack, predict, dequantize, reorder on store */
 
/*-----------------------------------------*/
/* prototypes from spy.c		   */
/*-----------------------------------------*/
 
extern void 	trace_bits(int number, int type);
extern void	output_stats(char *dumpfile);
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.