00001 /* 00002 * jlossy.h 00003 * 00004 * Copyright (C) 1998, Thomas G. Lane. 00005 * This file is part of the Independent JPEG Group's software. 00006 * For conditions of distribution and use, see the accompanying README file. 00007 * 00008 * This include file contains common declarations for the lossy (DCT-based) 00009 * JPEG codec modules. 00010 */ 00011 00012 #ifndef JLOSSY_H 00013 #define JLOSSY_H 00014 00015 00016 /* Lossy-specific compression codec (compressor proper) */ 00017 typedef struct { 00018 struct jpeg_c_codec pub; /* public fields */ 00019 00020 00021 /* Coefficient buffer control */ 00022 JMETHOD(void, coef_start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); 00023 /* JMETHOD(boolean, coef_compress_data, (j_compress_ptr cinfo, 00024 JSAMPIMAGE input_buf));*/ 00025 00026 /* Pointer to data which is private to coef module */ 00027 void *coef_private; 00028 00029 00030 /* Forward DCT (also controls coefficient quantization) */ 00031 JMETHOD(void, fdct_start_pass, (j_compress_ptr cinfo)); 00032 /* perhaps this should be an array??? */ 00033 JMETHOD(void, fdct_forward_DCT, (j_compress_ptr cinfo, 00034 jpeg_component_info * compptr, 00035 JSAMPARRAY sample_data, JBLOCKROW coef_blocks, 00036 JDIMENSION start_row, JDIMENSION start_col, 00037 JDIMENSION num_blocks)); 00038 00039 /* Pointer to data which is private to fdct module */ 00040 void *fdct_private; 00041 00042 00043 /* Entropy encoding */ 00044 JMETHOD(boolean, entropy_encode_mcu, (j_compress_ptr cinfo, 00045 JBLOCKROW *MCU_data)); 00046 00047 /* Pointer to data which is private to entropy module */ 00048 void *entropy_private; 00049 00050 } jpeg_lossy_c_codec; 00051 00052 typedef jpeg_lossy_c_codec * j_lossy_c_ptr; 00053 00054 00055 00056 typedef JMETHOD(void, inverse_DCT_method_ptr, 00057 (j_decompress_ptr cinfo, jpeg_component_info * compptr, 00058 JCOEFPTR coef_block, 00059 JSAMPARRAY output_buf, JDIMENSION output_col)); 00060 00061 /* Lossy-specific decompression codec (decompressor proper) */ 00062 typedef struct { 00063 struct jpeg_d_codec pub; /* public fields */ 00064 00065 00066 /* Coefficient buffer control */ 00067 JMETHOD(void, coef_start_input_pass, (j_decompress_ptr cinfo)); 00068 JMETHOD(void, coef_start_output_pass, (j_decompress_ptr cinfo)); 00069 00070 /* Pointer to array of coefficient virtual arrays, or NULL if none */ 00071 jvirt_barray_ptr *coef_arrays; 00072 00073 /* Pointer to data which is private to coef module */ 00074 void *coef_private; 00075 00076 00077 /* Entropy decoding */ 00078 JMETHOD(void, entropy_start_pass, (j_decompress_ptr cinfo)); 00079 JMETHOD(boolean, entropy_decode_mcu, (j_decompress_ptr cinfo, 00080 JBLOCKROW *MCU_data)); 00081 00082 /* This is here to share code between baseline and progressive decoders; */ 00083 /* other modules probably should not use it */ 00084 boolean entropy_insufficient_data; /* set TRUE after emitting warning */ 00085 00086 /* Pointer to data which is private to entropy module */ 00087 void *entropy_private; 00088 00089 00090 /* Inverse DCT (also performs dequantization) */ 00091 JMETHOD(void, idct_start_pass, (j_decompress_ptr cinfo)); 00092 00093 /* It is useful to allow each component to have a separate IDCT method. */ 00094 inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS]; 00095 00096 /* Pointer to data which is private to idct module */ 00097 void *idct_private; 00098 00099 } jpeg_lossy_d_codec; 00100 00101 typedef jpeg_lossy_d_codec * j_lossy_d_ptr; 00102 00103 00104 /* Compression module initialization routines */ 00105 EXTERN(void) jinit_lossy_c_codec JPP((j_compress_ptr cinfo)); 00106 EXTERN(void) jinit_c_coef_controller JPP((j_compress_ptr cinfo, 00107 boolean need_full_buffer)); 00108 EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo)); 00109 EXTERN(void) jinit_shuff_encoder JPP((j_compress_ptr cinfo)); 00110 EXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo)); 00111 00112 /* Decompression module initialization routines */ 00113 EXTERN(void) jinit_lossy_d_codec JPP((j_decompress_ptr cinfo)); 00114 EXTERN(void) jinit_d_coef_controller JPP((j_decompress_ptr cinfo, 00115 boolean need_full_buffer)); 00116 EXTERN(void) jinit_shuff_decoder JPP((j_decompress_ptr cinfo)); 00117 EXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo)); 00118 EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo)); 00119 00120 #endif /* JLOSSY_H */