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