00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 typedef enum {
00017 JBUF_PASS_THRU,
00018
00019 JBUF_SAVE_SOURCE,
00020 JBUF_CRANK_DEST,
00021 JBUF_SAVE_AND_PASS
00022 } J_BUF_MODE;
00023
00024
00025 #define CSTATE_START 100
00026 #define CSTATE_SCANNING 101
00027 #define CSTATE_RAW_OK 102
00028 #define CSTATE_WRCOEFS 103
00029 #define DSTATE_START 200
00030 #define DSTATE_INHEADER 201
00031 #define DSTATE_READY 202
00032 #define DSTATE_PRELOAD 203
00033 #define DSTATE_PRESCAN 204
00034 #define DSTATE_SCANNING 205
00035 #define DSTATE_RAW_OK 206
00036 #define DSTATE_BUFIMAGE 207
00037 #define DSTATE_BUFPOST 208
00038 #define DSTATE_RDCOEFS 209
00039 #define DSTATE_STOPPING 210
00040
00041
00042
00043
00044
00045 struct jpeg_comp_master {
00046 JMETHOD(void, prepare_for_pass, (j_compress_ptr cinfo));
00047 JMETHOD(void, pass_startup, (j_compress_ptr cinfo));
00048 JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
00049
00050
00051 boolean call_pass_startup;
00052 boolean is_last_pass;
00053 };
00054
00055
00056 struct jpeg_c_main_controller {
00057 JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
00058 JMETHOD(void, process_data, (j_compress_ptr cinfo,
00059 JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
00060 JDIMENSION in_rows_avail));
00061 };
00062
00063
00064 struct jpeg_c_prep_controller {
00065 JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
00066 JMETHOD(void, pre_process_data, (j_compress_ptr cinfo,
00067 JSAMPARRAY input_buf,
00068 JDIMENSION *in_row_ctr,
00069 JDIMENSION in_rows_avail,
00070 JSAMPIMAGE output_buf,
00071 JDIMENSION *out_row_group_ctr,
00072 JDIMENSION out_row_groups_avail));
00073 };
00074
00075
00076 struct jpeg_c_codec {
00077 JMETHOD(void, entropy_start_pass, (j_compress_ptr cinfo,
00078 boolean gather_statistics));
00079 JMETHOD(void, entropy_finish_pass, (j_compress_ptr cinfo));
00080 JMETHOD(boolean, need_optimization_pass, (j_compress_ptr cinfo));
00081 JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
00082 JMETHOD(boolean, compress_data, (j_compress_ptr cinfo,
00083 JSAMPIMAGE input_buf));
00084 };
00085
00086
00087 struct jpeg_color_converter {
00088 JMETHOD(void, start_pass, (j_compress_ptr cinfo));
00089 JMETHOD(void, color_convert, (j_compress_ptr cinfo,
00090 JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
00091 JDIMENSION output_row, int num_rows));
00092 };
00093
00094
00095 struct jpeg_downsampler {
00096 JMETHOD(void, start_pass, (j_compress_ptr cinfo));
00097 JMETHOD(void, downsample, (j_compress_ptr cinfo,
00098 JSAMPIMAGE input_buf, JDIMENSION in_row_index,
00099 JSAMPIMAGE output_buf,
00100 JDIMENSION out_row_group_index));
00101
00102 boolean need_context_rows;
00103 };
00104
00105
00106 struct jpeg_marker_writer {
00107 JMETHOD(void, write_file_header, (j_compress_ptr cinfo));
00108 JMETHOD(void, write_frame_header, (j_compress_ptr cinfo));
00109 JMETHOD(void, write_scan_header, (j_compress_ptr cinfo));
00110 JMETHOD(void, write_file_trailer, (j_compress_ptr cinfo));
00111 JMETHOD(void, write_tables_only, (j_compress_ptr cinfo));
00112
00113
00114 JMETHOD(void, write_marker_header, (j_compress_ptr cinfo, int marker,
00115 unsigned int datalen));
00116 JMETHOD(void, write_marker_byte, (j_compress_ptr cinfo, int val));
00117 };
00118
00119
00120
00121
00122
00123 struct jpeg_decomp_master {
00124 JMETHOD(void, prepare_for_output_pass, (j_decompress_ptr cinfo));
00125 JMETHOD(void, finish_output_pass, (j_decompress_ptr cinfo));
00126
00127
00128 boolean is_dummy_pass;
00129 };
00130
00131
00132 struct jpeg_input_controller {
00133 JMETHOD(int, consume_input, (j_decompress_ptr cinfo));
00134 JMETHOD(void, reset_input_controller, (j_decompress_ptr cinfo));
00135 JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
00136 JMETHOD(void, finish_input_pass, (j_decompress_ptr cinfo));
00137
00138
00139 boolean has_multiple_scans;
00140 boolean eoi_reached;
00141 };
00142
00143
00144 struct jpeg_d_main_controller {
00145 JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
00146 JMETHOD(void, process_data, (j_decompress_ptr cinfo,
00147 JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
00148 JDIMENSION out_rows_avail));
00149 };
00150
00151
00152 struct jpeg_d_codec {
00153 JMETHOD(void, calc_output_dimensions, (j_decompress_ptr cinfo));
00154 JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
00155 JMETHOD(int, consume_data, (j_decompress_ptr cinfo));
00156 JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo));
00157 JMETHOD(int, decompress_data, (j_decompress_ptr cinfo,
00158 JSAMPIMAGE output_buf));
00159 };
00160
00161
00162 struct jpeg_d_post_controller {
00163 JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
00164 JMETHOD(void, post_process_data, (j_decompress_ptr cinfo,
00165 JSAMPIMAGE input_buf,
00166 JDIMENSION *in_row_group_ctr,
00167 JDIMENSION in_row_groups_avail,
00168 JSAMPARRAY output_buf,
00169 JDIMENSION *out_row_ctr,
00170 JDIMENSION out_rows_avail));
00171 };
00172
00173
00174 struct jpeg_marker_reader {
00175 JMETHOD(void, reset_marker_reader, (j_decompress_ptr cinfo));
00176
00177
00178
00179
00180 JMETHOD(int, read_markers, (j_decompress_ptr cinfo));
00181
00182 jpeg_marker_parser_method read_restart_marker;
00183
00184
00185
00186
00187 boolean saw_SOI;
00188 boolean saw_SOF;
00189 int next_restart_num;
00190 unsigned int discarded_bytes;
00191 };
00192
00193
00194 struct jpeg_upsampler {
00195 JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
00196 JMETHOD(void, upsample, (j_decompress_ptr cinfo,
00197 JSAMPIMAGE input_buf,
00198 JDIMENSION *in_row_group_ctr,
00199 JDIMENSION in_row_groups_avail,
00200 JSAMPARRAY output_buf,
00201 JDIMENSION *out_row_ctr,
00202 JDIMENSION out_rows_avail));
00203
00204 boolean need_context_rows;
00205 };
00206
00207
00208 struct jpeg_color_deconverter {
00209 JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
00210 JMETHOD(void, color_convert, (j_decompress_ptr cinfo,
00211 JSAMPIMAGE input_buf, JDIMENSION input_row,
00212 JSAMPARRAY output_buf, int num_rows));
00213 };
00214
00215
00216 struct jpeg_color_quantizer {
00217 JMETHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan));
00218 JMETHOD(void, color_quantize, (j_decompress_ptr cinfo,
00219 JSAMPARRAY input_buf, JSAMPARRAY output_buf,
00220 int num_rows));
00221 JMETHOD(void, finish_pass, (j_decompress_ptr cinfo));
00222 JMETHOD(void, new_color_map, (j_decompress_ptr cinfo));
00223 };
00224
00225
00226
00227
00228 #undef MAX
00229 #define MAX(a,b) ((a) > (b) ? (a) : (b))
00230 #undef MIN
00231 #define MIN(a,b) ((a) < (b) ? (a) : (b))
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244 #ifdef RIGHT_SHIFT_IS_UNSIGNED
00245 #define SHIFT_TEMPS IJG_INT32 shift_temp;
00246 #define RIGHT_SHIFT(x,shft) \
00247 ((shift_temp = (x)) < 0 ? \
00248 (shift_temp >> (shft)) | ((~((IJG_INT32) 0)) << (32-(shft))) : \
00249 (shift_temp >> (shft)))
00250 #else
00251 #define SHIFT_TEMPS
00252 #define RIGHT_SHIFT(x,shft) ((x) >> (shft))
00253 #endif
00254
00255
00256
00257
00258 #ifdef NEED_SHORT_EXTERNAL_NAMES
00259 #define jinit_c_codec jinit16_c_codec
00260 #define jinit_c_diff_controller jinit16_c_diff_controller
00261 #define jinit_lossy_c_codec jinit16_lossy_c_codec
00262 #define jinit_lossless_c_codec jinit16_lossless_c_codec
00263 #define jinit_compress_master jinit16_compress_master
00264 #define jinit_c_master_control jinit16_c_master_control
00265 #define jinit_c_main_controller jinit16_c_main_controller
00266 #define jinit_c_prep_controller jinit16_c_prep_controller
00267 #define jinit_c_coef_controller jinit16_c_coef_controller
00268 #define jinit_color_converter jinit16_color_converter
00269 #define jinit_downsampler jinit16_downsampler
00270 #define jinit_forward_dct jinit16_forward_dct
00271 #define jinit_shuff_encoder jinit16_shuff_encoder
00272 #define jinit_phuff_encoder jinit16_phuff_encoder
00273 #ifdef WITH_ARITHMETIC_PATCH
00274 #define jinit_arith_encoder jinit16_arith_encoder
00275 #endif
00276 #define jinit_marker_writer jinit16_marker_writer
00277 #define jinit_d_codec jinit16_d_codec
00278 #define jinit_lossy_d_codec jinit16_lossy_d_codec
00279 #define jinit_lossless_d_codec jinit16_lossless_d_codec
00280 #define jinit_master_decompress jinit16_master_decompress
00281 #define jinit_d_main_controller jinit16_d_main_controller
00282 #define jinit_d_coef_controller jinit16_d_coef_controller
00283 #define jinit_d_diff_controller jinit16_d_diff_controller
00284 #define jinit_d_post_controller jinit16_d_post_controller
00285 #define jinit_input_controller jinit16_input_controller
00286 #define jinit_marker_reader jinit16_marker_reader
00287 #define jinit_shuff_decoder jinit16_shuff_decoder
00288 #define jinit_phuff_decoder jinit16_phuff_decoder
00289 #ifdef WITH_ARITHMETIC_PATCH
00290 #define jinit_arith_decoder jinit16_arith_decoder
00291 #endif
00292 #define jinit_lhuff_decoder jinit16_lhuff_decoder
00293 #define jinit_undifferencer jinit16_undifferencer
00294 #define jinit_d_scaler jinit16_d_scaler
00295 #define jinit_inverse_dct jinit16_inverse_dct
00296 #define jinit_upsampler jinit16_upsampler
00297 #define jinit_color_deconverter jinit16_color_deconverter
00298 #define jinit_1pass_quantizer jinit16_1pass_quantizer
00299 #define jinit_2pass_quantizer jinit16_2pass_quantizer
00300 #define jinit_merged_upsampler jinit16_merged_upsampler
00301 #define jinit_memory_mgr jinit16_memory_mgr
00302 #define jdiv_round_up jdiv16_round_up
00303 #define jround_up jround16_up
00304 #define jcopy_sample_rows jcopy16_sample_rows
00305 #define jcopy_block_row jcopy16_block_row
00306 #define jzero_far jzero16_far
00307 #define jpeg_zigzag_order jpeg16_zigzag_order
00308 #define jpeg_natural_order jpeg16_natural_order
00309 #endif
00310
00311
00312
00313 EXTERN(void) jinit_c_codec JPP((j_compress_ptr cinfo));
00314 EXTERN(void) jinit_c_diff_controller JPP((j_compress_ptr cinfo, boolean need_full_buffer));
00315 EXTERN(void) jinit_compress_master JPP((j_compress_ptr cinfo));
00316 EXTERN(void) jinit_c_master_control JPP((j_compress_ptr cinfo,
00317 boolean transcode_only));
00318 EXTERN(void) jinit_c_main_controller JPP((j_compress_ptr cinfo,
00319 boolean need_full_buffer));
00320 EXTERN(void) jinit_c_prep_controller JPP((j_compress_ptr cinfo,
00321 boolean need_full_buffer));
00322 EXTERN(void) jinit_compressor JPP((j_compress_ptr cinfo));
00323 EXTERN(void) jinit_color_converter JPP((j_compress_ptr cinfo));
00324 EXTERN(void) jinit_downsampler JPP((j_compress_ptr cinfo));
00325 EXTERN(void) jinit_marker_writer JPP((j_compress_ptr cinfo));
00326 #ifdef WITH_ARITHMETIC_PATCH
00327 EXTERN(void) jinit_arith_encoder JPP((j_compress_ptr cinfo));
00328 #endif
00329
00330 EXTERN(void) jinit_d_codec JPP((j_decompress_ptr cinfo));
00331 EXTERN(void) jinit_d_diff_controller JPP((j_decompress_ptr cinfo, boolean need_full_buffer));
00332 EXTERN(void) jinit_master_decompress JPP((j_decompress_ptr cinfo));
00333 EXTERN(void) jinit_d_main_controller JPP((j_decompress_ptr cinfo,
00334 boolean need_full_buffer));
00335 EXTERN(void) jinit_decompressor JPP((j_decompress_ptr cinfo));
00336 EXTERN(void) jinit_d_post_controller JPP((j_decompress_ptr cinfo,
00337 boolean need_full_buffer));
00338 EXTERN(void) jinit_input_controller JPP((j_decompress_ptr cinfo));
00339 EXTERN(void) jinit_marker_reader JPP((j_decompress_ptr cinfo));
00340 #ifdef WITH_ARITHMETIC_PATCH
00341 EXTERN(void) jinit_arith_decoder JPP((j_decompress_ptr cinfo));
00342 #endif
00343 EXTERN(void) jinit_upsampler JPP((j_decompress_ptr cinfo));
00344 EXTERN(void) jinit_color_deconverter JPP((j_decompress_ptr cinfo));
00345 EXTERN(void) jinit_1pass_quantizer JPP((j_decompress_ptr cinfo));
00346 EXTERN(void) jinit_2pass_quantizer JPP((j_decompress_ptr cinfo));
00347 EXTERN(void) jinit_merged_upsampler JPP((j_decompress_ptr cinfo));
00348
00349 EXTERN(void) jinit_memory_mgr JPP((j_common_ptr cinfo));
00350
00351
00352 EXTERN(long) jdiv_round_up JPP((long a, long b));
00353 EXTERN(long) jround_up JPP((long a, long b));
00354 EXTERN(void) jcopy_sample_rows JPP((JSAMPARRAY input_array, int source_row,
00355 JSAMPARRAY output_array, int dest_row,
00356 int num_rows, JDIMENSION num_cols));
00357 EXTERN(void) jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row,
00358 JDIMENSION num_blocks));
00359 EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
00360
00361 #if 0
00362 extern const int jpeg_zigzag_order[];
00363 #endif
00364 extern const int jpeg_natural_order[];
00365
00366
00367
00368 #ifdef INCOMPLETE_TYPES_BROKEN
00369 #ifndef AM_MEMORY_MANAGER
00370 struct jvirt_sarray_control { long dummy; };
00371 struct jvirt_barray_control { long dummy; };
00372 #endif
00373 #endif