00001 #ifndef FASTJPG_H 00002 #define FASTJPG_H 00003 00004 #include "sizes.h" 00005 00006 #define TOTAL_HUFF_TBLS 4 00007 #define TOTAL_QUANT_TBLS 4 00008 #define MAXJSAMPLE 255 00009 #define CENTERJSAMPLE 128 00010 #define MAX_COMPS 4 00011 #define DUMMY_COMP 5 00012 #define DCTSIZE1 8 00013 #define DCTSIZE2 64 00014 #define HUFF_LOOKAHEAD 8 00015 #define JPEG_APP1_MJPA 0x6D6A7067 00016 #define RANGE_MASK (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */ 00017 00018 typedef struct 00019 { 00020 unsigned long long hvsample; 00021 unsigned long ac_htbl_num; 00022 unsigned long dc_htbl_num; 00023 unsigned long qtbl_num; 00024 unsigned char id; 00025 long dc; 00026 } quicktime_jpeg_comp_header; 00027 00028 00029 typedef struct 00030 { 00031 int valid; 00032 int field_sz; 00033 int pad_field_sz; 00034 int next_off; 00035 int quant_off; 00036 int huff_off; 00037 int image_off; 00038 int scan_off; 00039 int data_off; 00040 } quicktime_mjpa_info; 00041 00042 typedef struct 00043 { 00044 long mincode[17]; 00045 long maxcode[18]; 00046 long valptr[17]; 00047 unsigned QUICKTIME_INT16 cache[256]; 00048 unsigned char vals[256]; 00049 unsigned char bits[17]; 00050 } quicktime_jpeg_huffman; 00051 00052 typedef struct 00053 { 00054 int allocated; /* If these buffers were allocated by fastjpg */ 00055 unsigned char *ybuf; 00056 unsigned char *ubuf; 00057 unsigned char *vbuf; 00058 } quicktime_mjpa_buffs; 00059 00060 typedef struct 00061 { 00062 unsigned long Uskip_mask; 00063 long *YUV_Y_tab; 00064 long *YUV_UB_tab; 00065 long *YUV_VR_tab; 00066 long *YUV_UG_tab; 00067 long *YUV_VG_tab; 00068 } quicktime_mjpa_yuvtabs; 00069 00070 typedef struct 00071 { 00072 unsigned char *chunk; 00073 long chunk_size; 00074 long *quant_tables[TOTAL_QUANT_TBLS]; 00075 unsigned char *jpg_samp_limit; 00076 unsigned char *byte_limit; 00077 long jpg_num_comps; 00078 long jpg_comps_in_scan; 00079 long jpg_rst_interval; 00080 quicktime_jpeg_comp_header jpg_comps[MAX_COMPS + 1]; 00081 char IJPG_Tab1[64]; 00082 char IJPG_Tab2[64]; 00083 quicktime_jpeg_huffman jpg_ac_huff[TOTAL_HUFF_TBLS]; 00084 quicktime_jpeg_huffman jpg_dc_huff[TOTAL_HUFF_TBLS]; 00085 QUICKTIME_INT16 jpg_dct_buf[DCTSIZE2]; 00086 long jpg_h_bnum; /* this must be signed */ 00087 unsigned long jpg_h_bbuf; 00088 long jpg_nxt_rst_num; 00089 int jpg_dprec; 00090 int jpg_height; 00091 int jpg_width; 00092 int jpg_std_DHT_flag; 00093 quicktime_mjpa_info mjpa_info; 00094 int marker; 00095 quicktime_mjpa_buffs yuvbufs; 00096 quicktime_mjpa_yuvtabs yuvtabs; 00097 00098 /* Marker status */ 00099 int jpg_saw_SOI; 00100 int jpg_saw_SOF; 00101 int jpg_saw_SOS; 00102 int jpg_saw_EOI; 00103 int jpg_saw_DHT; 00104 int jpg_saw_DQT; 00105 int mjpg_kludge; 00106 } quicktime_jpeg_t; 00107 00108 #endif
1.5.5