?? djpg.h
字號:
/*
*********************************************************************
* File name: djpg.h
* Version: 5.0(release v1.0) Date: Jan 12, 2006
* Author: xiezm Email: xiezm@wxintech.cn
* Company: Wuxi Intech co., ltd.
*
* Project: Jpeg Decoder for Trio
*********************************************************************
*/
#ifndef __DJPG_H
#define __DJPG_H
/* Define markers */
#define SOF0 0xc0 //Baseline DCT
#define JPG 0xc8 //Reserved for JPEG extensions
#define DHT 0xc4
#define RST0 0xd0
#define RST1 0xd1
#define RST2 0xd2
#define RST3 0xd3
#define RST4 0xd4
#define RST5 0xd5
#define RST6 0xd6
#define RST7 0xd7
#define SOI 0xd8
#define EOI 0xd9
#define SOS 0xda
#define DQT 0xdb
#define DNL 0xdc
#define DRI 0xdd
#define EXP 0xdf
#define APP0 0xe0 //JFIF Extension APP0
#define COM 0xfe
/* Various constants defination */
#define MAX_COMPS 3
#define NUM_Q_TBL 4
#define NUM_H_TBL 2
#define DCT_SIZE 8
#define DCT_SIZE2 64
/* functions & global variables */
//djpg
#ifdef DJPG_GLOBALS
#define DJPG_EXT
#else
#define DJPG_EXT extern
#endif
DJPG_EXT int error_flag;
DJPG_EXT void error(int eflag);
#ifdef WIN32
DJPG_EXT FILE *INPUT;
DJPG_EXT FILE *OUTPUT;
DJPG_EXT FILE *BMP;
#else
DJPG_EXT volatile int chess_storage(IOMEM:1) INPUT;
DJPG_EXT volatile int chess_storage(IOMEM:2) OUTPUT;
#endif
//bitstream
#ifdef BITSTREAM_GLOBALS
#define BITSTREAM_EXT
#else
#define BITSTREAM_EXT extern
#endif
BITSTREAM_EXT void bitstream_init(void);
BITSTREAM_EXT void decode_bitstream_initial(void);
BITSTREAM_EXT unsigned int get_byte(void);
BITSTREAM_EXT unsigned int get_word(void);
BITSTREAM_EXT unsigned int get_bits(unsigned int n_bits);
BITSTREAM_EXT unsigned int peek_byte(void);
BITSTREAM_EXT void drop_bits(unsigned int num_bits);
#define BUFFER_SIZE 683
BITSTREAM_EXT unsigned int input_buffer[BUFFER_SIZE];
BITSTREAM_EXT unsigned int *buffer_inop;
BITSTREAM_EXT unsigned int *buffer_end;
BITSTREAM_EXT unsigned int is_stuff;
BITSTREAM_EXT unsigned int current;
BITSTREAM_EXT unsigned int bits_left;
BITSTREAM_EXT unsigned int next;
BITSTREAM_EXT unsigned int bits_next;
BITSTREAM_EXT unsigned int bits_mask[16];
//parse
#ifdef PARSE_GLOBALS
#define PARSE_EXT
#else
#define PARSE_EXT extern
#endif
PARSE_EXT void parse_initial(void);
PARSE_EXT void parse_header(void);
PARSE_EXT int find_ffd8(void);
/* Derived huffman table */
typedef struct {
int maxcode[18];
int valoffset[17];
int symbol[256];
/* Lookahead tables */
int look_nbits[256]; /* # bits, or 0 if too long */
int look_sym[256]; /* symbol, or unused */
} DERIVED_H_TBL;
PARSE_EXT int chess_storage(YMEM) quant_tbl[NUM_Q_TBL][DCT_SIZE2];
PARSE_EXT DERIVED_H_TBL dc_huff_tbl[NUM_H_TBL];
PARSE_EXT DERIVED_H_TBL ac_huff_tbl[NUM_H_TBL];
/* Frame header define */
PARSE_EXT unsigned int Y; //Number of lines
PARSE_EXT unsigned int X; //Number of samples per line
PARSE_EXT unsigned int Nf; //Number of image components in frame
PARSE_EXT unsigned int Ci[MAX_COMPS]; //Component identifier !!
PARSE_EXT unsigned int Hi[MAX_COMPS]; //Horizontal sampling factor
PARSE_EXT unsigned int Vi[MAX_COMPS]; //Vertical sampling factor
PARSE_EXT unsigned int Tqi[MAX_COMPS]; //Quantization table destination selector
/* Scan header define */
PARSE_EXT unsigned int Ns; //Number of image components in scan
PARSE_EXT unsigned int Csi[MAX_COMPS]; //Scan component selector
PARSE_EXT unsigned int Tdi[MAX_COMPS]; //DC entropy coding table destination selector
PARSE_EXT unsigned int Tai[MAX_COMPS]; //AC entropy coding table destination selector
PARSE_EXT unsigned int dri_rst_interval;
PARSE_EXT int num_mcu;
//decode
#ifdef DECODE_GLOBALS
#define DECODE_EXT
#else
#define DECODE_EXT extern
#endif
DECODE_EXT void decode_initial(void);
DECODE_EXT void restart_decode(void);
DECODE_EXT int ZZ[DCT_SIZE2];
DECODE_EXT int reconstruc_buffer[6][64];
DECODE_EXT int shift_std[16];
DECODE_EXT int shift_offset[16];
DECODE_EXT int chess_storage(YMEM) INT_P362;
DECODE_EXT int chess_storage(YMEM) INT_P473;
DECODE_EXT int chess_storage(YMEM) INT_P277;
DECODE_EXT int chess_storage(YMEM) INT_M669;
DECODE_EXT int chess_storage(YMEM) INT_P454;
DECODE_EXT int chess_storage(YMEM) INT_M88;
DECODE_EXT int chess_storage(YMEM) INT_M183;
DECODE_EXT int chess_storage(YMEM) INT_P359;
DECODE_EXT int cellingR_tab[128];
DECODE_EXT int cellingG_tab[128];
DECODE_EXT int cellingB_tab[128];
DECODE_EXT int cellingR_tab1[512];
DECODE_EXT int cellingG_tab1[512];
DECODE_EXT int cellingB_tab1[512];
DECODE_EXT int *reconstruct_prt;
DECODE_EXT DERIVED_H_TBL *htbl;
DECODE_EXT int PreDC[MAX_COMPS];
DECODE_EXT unsigned int restart_marker;
DECODE_EXT int decode_data_unit(int comp, int rec_idx);
#ifdef RECONSTRUCT_GLOBALS
#define RECONSTRUCT_EXT
#else
#define RECONSTRUCT_EXT extern
#endif
RECONSTRUCT_EXT int *cellingR;
RECONSTRUCT_EXT int *cellingG;
RECONSTRUCT_EXT int *cellingB;
RECONSTRUCT_EXT int decode_mcu_2x2(void);
RECONSTRUCT_EXT void decode_mcu_2x1(void);
RECONSTRUCT_EXT void decode_mcu_1x2(void);
RECONSTRUCT_EXT void decode_mcu_1x1(void);
#ifdef WIN32
#ifdef OUTPUT_GLOBALS
#define OUTPUT_EXT
#else
#define OUTPUT_EXT extern
#endif
OUTPUT_EXT void output_header(void);
OUTPUT_EXT void output_mcu(void);
OUTPUT_EXT void write_to_bmp(void);
#endif
#endif /* __DJPG_H */
/****************************End of File*****************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -