1 /* 2 * jlossy.h 3 * 4 * Copyright (C) 1998, Thomas G. Lane. 5 * This file is part of the Independent JPEG Group's software. 6 * For conditions of distribution and use, see the accompanying README file. 7 * 8 * This include file contains common declarations for the lossy (DCT-based) 9 * JPEG codec modules. 10 */ 11 12 #ifndef JLOSSY_H 13 #define JLOSSY_H 14 15 16 /* Lossy-specific compression codec (compressor proper) */ 17 typedef struct { 18 struct jpeg_c_codec pub; /* public fields */ 19 20 21 /* Coefficient buffer control */ 22 JMETHOD(void, coef_start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); 23 /* JMETHOD(boolean, coef_compress_data, (j_compress_ptr cinfo, 24 JSAMPIMAGE input_buf));*/ 25 26 /* Pointer to data which is private to coef module */ 27 void *coef_private; 28 29 30 /* Forward DCT (also controls coefficient quantization) */ 31 JMETHOD(void, fdct_start_pass, (j_compress_ptr cinfo)); 32 /* perhaps this should be an array??? */ 33 JMETHOD(void, fdct_forward_DCT, (j_compress_ptr cinfo, 34 jpeg_component_info * compptr, 35 JSAMPARRAY sample_data, JBLOCKROW coef_blocks, 36 JDIMENSION start_row, JDIMENSION start_col, 37 JDIMENSION num_blocks)); 38 39 /* Pointer to data which is private to fdct module */ 40 void *fdct_private; 41 42 43 /* Entropy encoding */ 44 JMETHOD(boolean, entropy_encode_mcu, (j_compress_ptr cinfo, 45 JBLOCKROW *MCU_data)); 46 47 /* Pointer to data which is private to entropy module */ 48 void *entropy_private; 49 50 } jpeg_lossy_c_codec; 51 52 typedef jpeg_lossy_c_codec * j_lossy_c_ptr; 53 54 55 56 typedef JMETHOD(void, inverse_DCT_method_ptr, 57 (j_decompress_ptr cinfo, jpeg_component_info * compptr, 58 JCOEFPTR coef_block, 59 JSAMPARRAY output_buf, JDIMENSION output_col)); 60 61 /* Lossy-specific decompression codec (decompressor proper) */ 62 typedef struct { 63 struct jpeg_d_codec pub; /* public fields */ 64 65 66 /* Coefficient buffer control */ 67 JMETHOD(void, coef_start_input_pass, (j_decompress_ptr cinfo)); 68 JMETHOD(void, coef_start_output_pass, (j_decompress_ptr cinfo)); 69 70 /* Pointer to array of coefficient virtual arrays, or NULL if none */ 71 jvirt_barray_ptr *coef_arrays; 72 73 /* Pointer to data which is private to coef module */ 74 void *coef_private; 75 76 77 /* Entropy decoding */ 78 JMETHOD(void, entropy_start_pass, (j_decompress_ptr cinfo)); 79 JMETHOD(boolean, entropy_decode_mcu, (j_decompress_ptr cinfo, 80 JBLOCKROW *MCU_data)); 81 82 /* This is here to share code between baseline and progressive decoders; */ 83 /* other modules probably should not use it */ 84 boolean entropy_insufficient_data; /* set TRUE after emitting warning */ 85 86 /* Pointer to data which is private to entropy module */ 87 void *entropy_private; 88 89 90 /* Inverse DCT (also performs dequantization) */ 91 JMETHOD(void, idct_start_pass, (j_decompress_ptr cinfo)); 92 93 /* It is useful to allow each component to have a separate IDCT method. */ 94 inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS]; 95 96 /* Pointer to data which is private to idct module */ 97 void *idct_private; 98 99 } jpeg_lossy_d_codec; 100 101 typedef jpeg_lossy_d_codec * j_lossy_d_ptr; 102 103 104 /* Compression module initialization routines */ 105 EXTERN(void) jinit_lossy_c_codec JPP((j_compress_ptr cinfo)); 106 EXTERN(void) jinit_c_coef_controller JPP((j_compress_ptr cinfo, 107 boolean need_full_buffer)); 108 EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo)); 109 EXTERN(void) jinit_shuff_encoder JPP((j_compress_ptr cinfo)); 110 EXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo)); 111 112 /* Decompression module initialization routines */ 113 EXTERN(void) jinit_lossy_d_codec JPP((j_decompress_ptr cinfo)); 114 EXTERN(void) jinit_d_coef_controller JPP((j_decompress_ptr cinfo, 115 boolean need_full_buffer)); 116 EXTERN(void) jinit_shuff_decoder JPP((j_decompress_ptr cinfo)); 117 EXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo)); 118 EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo)); 119 120 #endif /* JLOSSY_H */ 121