|
Lines 43-51
Link Here
|
| 43 |
|
43 |
|
| 44 |
/* Master control module */ |
44 |
/* Master control module */ |
| 45 |
struct jpeg_comp_master { |
45 |
struct jpeg_comp_master { |
| 46 |
JTQT_METHOD(void, prepare_for_pass, (j_compress_ptr cinfo)); |
46 |
JMETHOD(void, prepare_for_pass, (j_compress_ptr cinfo)); |
| 47 |
JTQT_METHOD(void, pass_startup, (j_compress_ptr cinfo)); |
47 |
JMETHOD(void, pass_startup, (j_compress_ptr cinfo)); |
| 48 |
JTQT_METHOD(void, finish_pass, (j_compress_ptr cinfo)); |
48 |
JMETHOD(void, finish_pass, (j_compress_ptr cinfo)); |
| 49 |
|
49 |
|
| 50 |
/* State variables made visible to other modules */ |
50 |
/* State variables made visible to other modules */ |
| 51 |
boolean call_pass_startup; /* True if pass_startup must be called */ |
51 |
boolean call_pass_startup; /* True if pass_startup must be called */ |
|
Lines 54-69
Link Here
|
| 54 |
|
54 |
|
| 55 |
/* Main buffer control (downsampled-data buffer) */ |
55 |
/* Main buffer control (downsampled-data buffer) */ |
| 56 |
struct jpeg_c_main_controller { |
56 |
struct jpeg_c_main_controller { |
| 57 |
JTQT_METHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); |
57 |
JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); |
| 58 |
JTQT_METHOD(void, process_data, (j_compress_ptr cinfo, |
58 |
JMETHOD(void, process_data, (j_compress_ptr cinfo, |
| 59 |
JSAMPARRAY input_buf, JDIMENSION *in_row_ctr, |
59 |
JSAMPARRAY input_buf, JDIMENSION *in_row_ctr, |
| 60 |
JDIMENSION in_rows_avail)); |
60 |
JDIMENSION in_rows_avail)); |
| 61 |
}; |
61 |
}; |
| 62 |
|
62 |
|
| 63 |
/* Compression preprocessing (downsampling input buffer control) */ |
63 |
/* Compression preprocessing (downsampling input buffer control) */ |
| 64 |
struct jpeg_c_prep_controller { |
64 |
struct jpeg_c_prep_controller { |
| 65 |
JTQT_METHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); |
65 |
JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); |
| 66 |
JTQT_METHOD(void, pre_process_data, (j_compress_ptr cinfo, |
66 |
JMETHOD(void, pre_process_data, (j_compress_ptr cinfo, |
| 67 |
JSAMPARRAY input_buf, |
67 |
JSAMPARRAY input_buf, |
| 68 |
JDIMENSION *in_row_ctr, |
68 |
JDIMENSION *in_row_ctr, |
| 69 |
JDIMENSION in_rows_avail, |
69 |
JDIMENSION in_rows_avail, |
|
Lines 74-96
Link Here
|
| 74 |
|
74 |
|
| 75 |
/* Coefficient buffer control */ |
75 |
/* Coefficient buffer control */ |
| 76 |
struct jpeg_c_coef_controller { |
76 |
struct jpeg_c_coef_controller { |
| 77 |
JTQT_METHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); |
77 |
JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); |
| 78 |
JTQT_METHOD(boolean, compress_data, (j_compress_ptr cinfo, |
78 |
JMETHOD(boolean, compress_data, (j_compress_ptr cinfo, |
| 79 |
JSAMPIMAGE input_buf)); |
79 |
JSAMPIMAGE input_buf)); |
| 80 |
}; |
80 |
}; |
| 81 |
|
81 |
|
| 82 |
/* Colorspace conversion */ |
82 |
/* Colorspace conversion */ |
| 83 |
struct jpeg_color_converter { |
83 |
struct jpeg_color_converter { |
| 84 |
JTQT_METHOD(void, start_pass, (j_compress_ptr cinfo)); |
84 |
JMETHOD(void, start_pass, (j_compress_ptr cinfo)); |
| 85 |
JTQT_METHOD(void, color_convert, (j_compress_ptr cinfo, |
85 |
JMETHOD(void, color_convert, (j_compress_ptr cinfo, |
| 86 |
JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
86 |
JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 87 |
JDIMENSION output_row, int num_rows)); |
87 |
JDIMENSION output_row, int num_rows)); |
| 88 |
}; |
88 |
}; |
| 89 |
|
89 |
|
| 90 |
/* Downsampling */ |
90 |
/* Downsampling */ |
| 91 |
struct jpeg_downsampler { |
91 |
struct jpeg_downsampler { |
| 92 |
JTQT_METHOD(void, start_pass, (j_compress_ptr cinfo)); |
92 |
JMETHOD(void, start_pass, (j_compress_ptr cinfo)); |
| 93 |
JTQT_METHOD(void, downsample, (j_compress_ptr cinfo, |
93 |
JMETHOD(void, downsample, (j_compress_ptr cinfo, |
| 94 |
JSAMPIMAGE input_buf, JDIMENSION in_row_index, |
94 |
JSAMPIMAGE input_buf, JDIMENSION in_row_index, |
| 95 |
JSAMPIMAGE output_buf, |
95 |
JSAMPIMAGE output_buf, |
| 96 |
JDIMENSION out_row_group_index)); |
96 |
JDIMENSION out_row_group_index)); |
|
Lines 100-108
Link Here
|
| 100 |
|
100 |
|
| 101 |
/* Forward DCT (also controls coefficient quantization) */ |
101 |
/* Forward DCT (also controls coefficient quantization) */ |
| 102 |
struct jpeg_forward_dct { |
102 |
struct jpeg_forward_dct { |
| 103 |
JTQT_METHOD(void, start_pass, (j_compress_ptr cinfo)); |
103 |
JMETHOD(void, start_pass, (j_compress_ptr cinfo)); |
| 104 |
/* perhaps this should be an array??? */ |
104 |
/* perhaps this should be an array??? */ |
| 105 |
JTQT_METHOD(void, forward_DCT, (j_compress_ptr cinfo, |
105 |
JMETHOD(void, forward_DCT, (j_compress_ptr cinfo, |
| 106 |
jpeg_component_info * compptr, |
106 |
jpeg_component_info * compptr, |
| 107 |
JSAMPARRAY sample_data, JBLOCKROW coef_blocks, |
107 |
JSAMPARRAY sample_data, JBLOCKROW coef_blocks, |
| 108 |
JDIMENSION start_row, JDIMENSION start_col, |
108 |
JDIMENSION start_row, JDIMENSION start_col, |
|
Lines 111-133
Link Here
|
| 111 |
|
111 |
|
| 112 |
/* Entropy encoding */ |
112 |
/* Entropy encoding */ |
| 113 |
struct jpeg_entropy_encoder { |
113 |
struct jpeg_entropy_encoder { |
| 114 |
JTQT_METHOD(void, start_pass, (j_compress_ptr cinfo, boolean gather_statistics)); |
114 |
JMETHOD(void, start_pass, (j_compress_ptr cinfo, boolean gather_statistics)); |
| 115 |
JTQT_METHOD(boolean, encode_mcu, (j_compress_ptr cinfo, JBLOCKROW *MCU_data)); |
115 |
JMETHOD(boolean, encode_mcu, (j_compress_ptr cinfo, JBLOCKROW *MCU_data)); |
| 116 |
JTQT_METHOD(void, finish_pass, (j_compress_ptr cinfo)); |
116 |
JMETHOD(void, finish_pass, (j_compress_ptr cinfo)); |
| 117 |
}; |
117 |
}; |
| 118 |
|
118 |
|
| 119 |
/* Marker writing */ |
119 |
/* Marker writing */ |
| 120 |
struct jpeg_marker_writer { |
120 |
struct jpeg_marker_writer { |
| 121 |
JTQT_METHOD(void, write_file_header, (j_compress_ptr cinfo)); |
121 |
JMETHOD(void, write_file_header, (j_compress_ptr cinfo)); |
| 122 |
JTQT_METHOD(void, write_frame_header, (j_compress_ptr cinfo)); |
122 |
JMETHOD(void, write_frame_header, (j_compress_ptr cinfo)); |
| 123 |
JTQT_METHOD(void, write_scan_header, (j_compress_ptr cinfo)); |
123 |
JMETHOD(void, write_scan_header, (j_compress_ptr cinfo)); |
| 124 |
JTQT_METHOD(void, write_file_trailer, (j_compress_ptr cinfo)); |
124 |
JMETHOD(void, write_file_trailer, (j_compress_ptr cinfo)); |
| 125 |
JTQT_METHOD(void, write_tables_only, (j_compress_ptr cinfo)); |
125 |
JMETHOD(void, write_tables_only, (j_compress_ptr cinfo)); |
| 126 |
/* These routines are exported to allow insertion of extra markers */ |
126 |
/* These routines are exported to allow insertion of extra markers */ |
| 127 |
/* Probably only COM and APPn markers should be written this way */ |
127 |
/* Probably only COM and APPn markers should be written this way */ |
| 128 |
JTQT_METHOD(void, write_marker_header, (j_compress_ptr cinfo, int marker, |
128 |
JMETHOD(void, write_marker_header, (j_compress_ptr cinfo, int marker, |
| 129 |
unsigned int datalen)); |
129 |
unsigned int datalen)); |
| 130 |
JTQT_METHOD(void, write_marker_byte, (j_compress_ptr cinfo, int val)); |
130 |
JMETHOD(void, write_marker_byte, (j_compress_ptr cinfo, int val)); |
| 131 |
}; |
131 |
}; |
| 132 |
|
132 |
|
| 133 |
|
133 |
|
|
Lines 135-142
Link Here
|
| 135 |
|
135 |
|
| 136 |
/* Master control module */ |
136 |
/* Master control module */ |
| 137 |
struct jpeg_decomp_master { |
137 |
struct jpeg_decomp_master { |
| 138 |
JTQT_METHOD(void, prepare_for_output_pass, (j_decompress_ptr cinfo)); |
138 |
JMETHOD(void, prepare_for_output_pass, (j_decompress_ptr cinfo)); |
| 139 |
JTQT_METHOD(void, finish_output_pass, (j_decompress_ptr cinfo)); |
139 |
JMETHOD(void, finish_output_pass, (j_decompress_ptr cinfo)); |
| 140 |
|
140 |
|
| 141 |
/* State variables made visible to other modules */ |
141 |
/* State variables made visible to other modules */ |
| 142 |
boolean is_dummy_pass; /* True during 1st pass for 2-pass quant */ |
142 |
boolean is_dummy_pass; /* True during 1st pass for 2-pass quant */ |
|
Lines 144-153
Link Here
|
| 144 |
|
144 |
|
| 145 |
/* Input control module */ |
145 |
/* Input control module */ |
| 146 |
struct jpeg_input_controller { |
146 |
struct jpeg_input_controller { |
| 147 |
JTQT_METHOD(int, consume_input, (j_decompress_ptr cinfo)); |
147 |
JMETHOD(int, consume_input, (j_decompress_ptr cinfo)); |
| 148 |
JTQT_METHOD(void, reset_input_controller, (j_decompress_ptr cinfo)); |
148 |
JMETHOD(void, reset_input_controller, (j_decompress_ptr cinfo)); |
| 149 |
JTQT_METHOD(void, start_input_pass, (j_decompress_ptr cinfo)); |
149 |
JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo)); |
| 150 |
JTQT_METHOD(void, finish_input_pass, (j_decompress_ptr cinfo)); |
150 |
JMETHOD(void, finish_input_pass, (j_decompress_ptr cinfo)); |
| 151 |
|
151 |
|
| 152 |
/* State variables made visible to other modules */ |
152 |
/* State variables made visible to other modules */ |
| 153 |
boolean has_multiple_scans; /* True if file has multiple scans */ |
153 |
boolean has_multiple_scans; /* True if file has multiple scans */ |
|
Lines 156-173
Link Here
|
| 156 |
|
156 |
|
| 157 |
/* Main buffer control (downsampled-data buffer) */ |
157 |
/* Main buffer control (downsampled-data buffer) */ |
| 158 |
struct jpeg_d_main_controller { |
158 |
struct jpeg_d_main_controller { |
| 159 |
JTQT_METHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)); |
159 |
JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)); |
| 160 |
JTQT_METHOD(void, process_data, (j_decompress_ptr cinfo, |
160 |
JMETHOD(void, process_data, (j_decompress_ptr cinfo, |
| 161 |
JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, |
161 |
JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, |
| 162 |
JDIMENSION out_rows_avail)); |
162 |
JDIMENSION out_rows_avail)); |
| 163 |
}; |
163 |
}; |
| 164 |
|
164 |
|
| 165 |
/* Coefficient buffer control */ |
165 |
/* Coefficient buffer control */ |
| 166 |
struct jpeg_d_coef_controller { |
166 |
struct jpeg_d_coef_controller { |
| 167 |
JTQT_METHOD(void, start_input_pass, (j_decompress_ptr cinfo)); |
167 |
JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo)); |
| 168 |
JTQT_METHOD(int, consume_data, (j_decompress_ptr cinfo)); |
168 |
JMETHOD(int, consume_data, (j_decompress_ptr cinfo)); |
| 169 |
JTQT_METHOD(void, start_output_pass, (j_decompress_ptr cinfo)); |
169 |
JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo)); |
| 170 |
JTQT_METHOD(int, decompress_data, (j_decompress_ptr cinfo, |
170 |
JMETHOD(int, decompress_data, (j_decompress_ptr cinfo, |
| 171 |
JSAMPIMAGE output_buf)); |
171 |
JSAMPIMAGE output_buf)); |
| 172 |
/* Pointer to array of coefficient virtual arrays, or NULL if none */ |
172 |
/* Pointer to array of coefficient virtual arrays, or NULL if none */ |
| 173 |
jvirt_barray_ptr *coef_arrays; |
173 |
jvirt_barray_ptr *coef_arrays; |
|
Lines 175-182
Link Here
|
| 175 |
|
175 |
|
| 176 |
/* Decompression postprocessing (color quantization buffer control) */ |
176 |
/* Decompression postprocessing (color quantization buffer control) */ |
| 177 |
struct jpeg_d_post_controller { |
177 |
struct jpeg_d_post_controller { |
| 178 |
JTQT_METHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)); |
178 |
JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)); |
| 179 |
JTQT_METHOD(void, post_process_data, (j_decompress_ptr cinfo, |
179 |
JMETHOD(void, post_process_data, (j_decompress_ptr cinfo, |
| 180 |
JSAMPIMAGE input_buf, |
180 |
JSAMPIMAGE input_buf, |
| 181 |
JDIMENSION *in_row_group_ctr, |
181 |
JDIMENSION *in_row_group_ctr, |
| 182 |
JDIMENSION in_row_groups_avail, |
182 |
JDIMENSION in_row_groups_avail, |
|
Lines 187-198
Link Here
|
| 187 |
|
187 |
|
| 188 |
/* Marker reading & parsing */ |
188 |
/* Marker reading & parsing */ |
| 189 |
struct jpeg_marker_reader { |
189 |
struct jpeg_marker_reader { |
| 190 |
JTQT_METHOD(void, reset_marker_reader, (j_decompress_ptr cinfo)); |
190 |
JMETHOD(void, reset_marker_reader, (j_decompress_ptr cinfo)); |
| 191 |
/* Read markers until SOS or EOI. |
191 |
/* Read markers until SOS or EOI. |
| 192 |
* Returns same codes as are defined for jpeg_consume_input: |
192 |
* Returns same codes as are defined for jpeg_consume_input: |
| 193 |
* JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI. |
193 |
* JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI. |
| 194 |
*/ |
194 |
*/ |
| 195 |
JTQT_METHOD(int, read_markers, (j_decompress_ptr cinfo)); |
195 |
JMETHOD(int, read_markers, (j_decompress_ptr cinfo)); |
| 196 |
/* Read a restart marker --- exported for use by entropy decoder only */ |
196 |
/* Read a restart marker --- exported for use by entropy decoder only */ |
| 197 |
jpeg_marker_parser_method read_restart_marker; |
197 |
jpeg_marker_parser_method read_restart_marker; |
| 198 |
|
198 |
|
|
Lines 207-214
Link Here
|
| 207 |
|
207 |
|
| 208 |
/* Entropy decoding */ |
208 |
/* Entropy decoding */ |
| 209 |
struct jpeg_entropy_decoder { |
209 |
struct jpeg_entropy_decoder { |
| 210 |
JTQT_METHOD(void, start_pass, (j_decompress_ptr cinfo)); |
210 |
JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); |
| 211 |
JTQT_METHOD(boolean, decode_mcu, (j_decompress_ptr cinfo, |
211 |
JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo, |
| 212 |
JBLOCKROW *MCU_data)); |
212 |
JBLOCKROW *MCU_data)); |
| 213 |
|
213 |
|
| 214 |
/* This is here to share code between baseline and progressive decoders; */ |
214 |
/* This is here to share code between baseline and progressive decoders; */ |
|
Lines 217-237
Link Here
|
| 217 |
}; |
217 |
}; |
| 218 |
|
218 |
|
| 219 |
/* Inverse DCT (also performs dequantization) */ |
219 |
/* Inverse DCT (also performs dequantization) */ |
| 220 |
typedef JTQT_METHOD(void, inverse_DCT_method_ptr, |
220 |
typedef JMETHOD(void, inverse_DCT_method_ptr, |
| 221 |
(j_decompress_ptr cinfo, jpeg_component_info * compptr, |
221 |
(j_decompress_ptr cinfo, jpeg_component_info * compptr, |
| 222 |
JCOEFPTR coef_block, |
222 |
JCOEFPTR coef_block, |
| 223 |
JSAMPARRAY output_buf, JDIMENSION output_col)); |
223 |
JSAMPARRAY output_buf, JDIMENSION output_col)); |
| 224 |
|
224 |
|
| 225 |
struct jpeg_inverse_dct { |
225 |
struct jpeg_inverse_dct { |
| 226 |
JTQT_METHOD(void, start_pass, (j_decompress_ptr cinfo)); |
226 |
JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); |
| 227 |
/* It is useful to allow each component to have a separate IDCT method. */ |
227 |
/* It is useful to allow each component to have a separate IDCT method. */ |
| 228 |
inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS]; |
228 |
inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS]; |
| 229 |
}; |
229 |
}; |
| 230 |
|
230 |
|
| 231 |
/* Upsampling (note that upsampler must also call color converter) */ |
231 |
/* Upsampling (note that upsampler must also call color converter) */ |
| 232 |
struct jpeg_upsampler { |
232 |
struct jpeg_upsampler { |
| 233 |
JTQT_METHOD(void, start_pass, (j_decompress_ptr cinfo)); |
233 |
JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); |
| 234 |
JTQT_METHOD(void, upsample, (j_decompress_ptr cinfo, |
234 |
JMETHOD(void, upsample, (j_decompress_ptr cinfo, |
| 235 |
JSAMPIMAGE input_buf, |
235 |
JSAMPIMAGE input_buf, |
| 236 |
JDIMENSION *in_row_group_ctr, |
236 |
JDIMENSION *in_row_group_ctr, |
| 237 |
JDIMENSION in_row_groups_avail, |
237 |
JDIMENSION in_row_groups_avail, |
|
Lines 244-263
Link Here
|
| 244 |
|
244 |
|
| 245 |
/* Colorspace conversion */ |
245 |
/* Colorspace conversion */ |
| 246 |
struct jpeg_color_deconverter { |
246 |
struct jpeg_color_deconverter { |
| 247 |
JTQT_METHOD(void, start_pass, (j_decompress_ptr cinfo)); |
247 |
JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); |
| 248 |
JTQT_METHOD(void, color_convert, (j_decompress_ptr cinfo, |
248 |
JMETHOD(void, color_convert, (j_decompress_ptr cinfo, |
| 249 |
JSAMPIMAGE input_buf, JDIMENSION input_row, |
249 |
JSAMPIMAGE input_buf, JDIMENSION input_row, |
| 250 |
JSAMPARRAY output_buf, int num_rows)); |
250 |
JSAMPARRAY output_buf, int num_rows)); |
| 251 |
}; |
251 |
}; |
| 252 |
|
252 |
|
| 253 |
/* Color quantization or color precision reduction */ |
253 |
/* Color quantization or color precision reduction */ |
| 254 |
struct jpeg_color_quantizer { |
254 |
struct jpeg_color_quantizer { |
| 255 |
JTQT_METHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan)); |
255 |
JMETHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan)); |
| 256 |
JTQT_METHOD(void, color_quantize, (j_decompress_ptr cinfo, |
256 |
JMETHOD(void, color_quantize, (j_decompress_ptr cinfo, |
| 257 |
JSAMPARRAY input_buf, JSAMPARRAY output_buf, |
257 |
JSAMPARRAY input_buf, JSAMPARRAY output_buf, |
| 258 |
int num_rows)); |
258 |
int num_rows)); |
| 259 |
JTQT_METHOD(void, finish_pass, (j_decompress_ptr cinfo)); |
259 |
JMETHOD(void, finish_pass, (j_decompress_ptr cinfo)); |
| 260 |
JTQT_METHOD(void, new_color_map, (j_decompress_ptr cinfo)); |
260 |
JMETHOD(void, new_color_map, (j_decompress_ptr cinfo)); |
| 261 |
}; |
261 |
}; |
| 262 |
|
262 |
|
| 263 |
|
263 |
|