19f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 29f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpegint.h 39f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 49f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Copyright (C) 1991-1997, Thomas G. Lane. 59f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file is part of the Independent JPEG Group's software. 69f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * For conditions of distribution and use, see the accompanying README file. 79f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 89f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file provides common declarations for the various JPEG modules. 99f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These declarations are considered internal to the JPEG library; most 109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * applications using the library shouldn't need to include this file. 119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Declarations for both compression & decompression */ 159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef enum { /* Operating modes for buffer controllers */ 179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JBUF_PASS_THRU, /* Plain stripwise operation */ 189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Remaining modes require a full-image buffer to have been created */ 199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JBUF_SAVE_SOURCE, /* Run source subobject only, save output */ 209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JBUF_CRANK_DEST, /* Run dest subobject only, using saved data */ 219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JBUF_SAVE_AND_PASS /* Run both subobjects, save output */ 229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} J_BUF_MODE; 239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Values of global_state field (jdapi.c has some dependencies on ordering!) */ 259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define CSTATE_START 100 /* after create_compress */ 269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define CSTATE_SCANNING 101 /* start_compress done, write_scanlines OK */ 279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define CSTATE_RAW_OK 102 /* start_compress done, write_raw_data OK */ 289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define CSTATE_WRCOEFS 103 /* jpeg_write_coefficients done */ 299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_START 200 /* after create_decompress */ 309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_INHEADER 201 /* reading header markers, no SOS yet */ 319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_READY 202 /* found SOS, ready for start_decompress */ 329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_PRELOAD 203 /* reading multiscan file in start_decompress*/ 339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_PRESCAN 204 /* performing dummy pass for 2-pass quant */ 349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_SCANNING 205 /* start_decompress done, read_scanlines OK */ 359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_RAW_OK 206 /* start_decompress done, read_raw_data OK */ 369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_BUFIMAGE 207 /* expecting jpeg_start_output */ 379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_BUFPOST 208 /* looking for SOS/EOI in jpeg_finish_output */ 389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_RDCOEFS 209 /* reading file in jpeg_read_coefficients */ 399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DSTATE_STOPPING 210 /* looking for EOI in jpeg_finish_decompress */ 409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Declarations for compression modules */ 439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Master control module */ 459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_comp_master { 469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, prepare_for_pass, (j_compress_ptr cinfo)); 479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, pass_startup, (j_compress_ptr cinfo)); 489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, finish_pass, (j_compress_ptr cinfo)); 499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* State variables made visible to other modules */ 519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean call_pass_startup; /* True if pass_startup must be called */ 529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean is_last_pass; /* True during last pass */ 539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Main buffer control (downsampled-data buffer) */ 569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_c_main_controller { 579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); 589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, process_data, (j_compress_ptr cinfo, 599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY input_buf, JDIMENSION *in_row_ctr, 609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION in_rows_avail)); 619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Compression preprocessing (downsampling input buffer control) */ 649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_c_prep_controller { 659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); 669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, pre_process_data, (j_compress_ptr cinfo, 679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY input_buf, 689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION *in_row_ctr, 699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION in_rows_avail, 709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE output_buf, 719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION *out_row_group_ctr, 729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION out_row_groups_avail)); 739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Coefficient buffer control */ 769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_c_coef_controller { 779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode)); 789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(boolean, compress_data, (j_compress_ptr cinfo, 799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE input_buf)); 809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Colorspace conversion */ 839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_color_converter { 849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_compress_ptr cinfo)); 859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, color_convert, (j_compress_ptr cinfo, 869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION output_row, int num_rows)); 889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Downsampling */ 919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_downsampler { 929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_compress_ptr cinfo)); 939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, downsample, (j_compress_ptr cinfo, 949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE input_buf, JDIMENSION in_row_index, 959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE output_buf, 969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION out_row_group_index)); 979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_context_rows; /* TRUE if need rows above & below */ 999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Forward DCT (also controls coefficient quantization) */ 1029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_forward_dct { 1039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_compress_ptr cinfo)); 1049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* perhaps this should be an array??? */ 1059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, forward_DCT, (j_compress_ptr cinfo, 1069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_component_info * compptr, 1079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY sample_data, JBLOCKROW coef_blocks, 1089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION start_row, JDIMENSION start_col, 1099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION num_blocks)); 1109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Entropy encoding */ 1139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_entropy_encoder { 1149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_compress_ptr cinfo, boolean gather_statistics)); 1159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(boolean, encode_mcu, (j_compress_ptr cinfo, JBLOCKROW *MCU_data)); 1169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, finish_pass, (j_compress_ptr cinfo)); 1179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Marker writing */ 1209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_marker_writer { 1219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_file_header, (j_compress_ptr cinfo)); 1229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_frame_header, (j_compress_ptr cinfo)); 1239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_scan_header, (j_compress_ptr cinfo)); 1249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_file_trailer, (j_compress_ptr cinfo)); 1259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_tables_only, (j_compress_ptr cinfo)); 1269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These routines are exported to allow insertion of extra markers */ 1279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Probably only COM and APPn markers should be written this way */ 1289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_marker_header, (j_compress_ptr cinfo, int marker, 1299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int datalen)); 1309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_marker_byte, (j_compress_ptr cinfo, int val)); 1319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Declarations for decompression modules */ 1359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Master control module */ 1379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_decomp_master { 1389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, prepare_for_output_pass, (j_decompress_ptr cinfo)); 1399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, finish_output_pass, (j_decompress_ptr cinfo)); 1409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* State variables made visible to other modules */ 1429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean is_dummy_pass; /* True during 1st pass for 2-pass quant */ 1439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Input control module */ 1469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_input_controller { 1479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(int, consume_input, (j_decompress_ptr cinfo)); 148f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JMETHOD(int, consume_input_build_huffman_index, (j_decompress_ptr cinfo, 149f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_index *index, int scan_count)); 150f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JMETHOD(int, consume_markers, (j_decompress_ptr cinfo, 1513147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen huffman_index *index, int scan_count)); 1529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, reset_input_controller, (j_decompress_ptr cinfo)); 1539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo)); 1549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, finish_input_pass, (j_decompress_ptr cinfo)); 1559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* State variables made visible to other modules */ 1579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean has_multiple_scans; /* True if file has multiple scans */ 1589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean eoi_reached; /* True when EOI has been consumed */ 1599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Main buffer control (downsampled-data buffer) */ 1629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_d_main_controller { 1639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)); 1649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, process_data, (j_decompress_ptr cinfo, 1659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, 1669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION out_rows_avail)); 1679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Coefficient buffer control */ 1709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_d_coef_controller { 1719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo)); 1729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(int, consume_data, (j_decompress_ptr cinfo)); 173f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JMETHOD(int, consume_data_build_huffman_index, (j_decompress_ptr cinfo, 1743147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen huffman_index* index, int scan_count)); 1759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo)); 1769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(int, decompress_data, (j_decompress_ptr cinfo, 1779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE output_buf)); 1789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Pointer to array of coefficient virtual arrays, or NULL if none */ 1799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jvirt_barray_ptr *coef_arrays; 180e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen 181e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen /* column number of the first and last tile, respectively */ 182f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen int column_left_boundary; 183f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen int column_right_boundary; 184e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen 185e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen /* column number of the first and last MCU, respectively */ 186f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen int MCU_column_left_boundary; 187f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen int MCU_column_right_boundary; 188e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen 189e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen /* the number of MCU columns to skip from the indexed MCU, iM, 190e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen * to the requested MCU boundary, rM, where iM is the MCU that we sample 191e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen * into our index and is the nearest one to the left of rM. 192e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen */ 193e0eadaa39b72e33f032220246c771d7302ebeaf8Joseph Wen int MCU_columns_to_skip; 1949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 1959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Decompression postprocessing (color quantization buffer control) */ 1979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_d_post_controller { 1989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)); 1999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, post_process_data, (j_decompress_ptr cinfo, 2009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE input_buf, 2019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION *in_row_group_ctr, 2029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION in_row_groups_avail, 2039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY output_buf, 2049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION *out_row_ctr, 2059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION out_rows_avail)); 2069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Marker reading & parsing */ 2099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_marker_reader { 2109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, reset_marker_reader, (j_decompress_ptr cinfo)); 2119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Read markers until SOS or EOI. 2129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Returns same codes as are defined for jpeg_consume_input: 2139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI. 2149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(int, read_markers, (j_decompress_ptr cinfo)); 216f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JMETHOD(void, get_sos_marker_position, (j_decompress_ptr cinfo, 217f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_index *index)); 2189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Read a restart marker --- exported for use by entropy decoder only */ 2199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_marker_parser_method read_restart_marker; 2209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* State of marker reader --- nominally internal, but applications 2229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * supplying COM or APPn handlers might like to know the state. 2239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean saw_SOI; /* found SOI? */ 2259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean saw_SOF; /* found SOF? */ 2269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int next_restart_num; /* next restart number expected (0-7) */ 227f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen int current_sos_marker_position; 2289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int discarded_bytes; /* # of bytes skipped looking for a marker */ 2299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Entropy decoding */ 2329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_entropy_decoder { 2339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); 2349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo, 2359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JBLOCKROW *MCU_data)); 2363147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen JMETHOD(boolean, decode_mcu_discard_coef, (j_decompress_ptr cinfo)); 237f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JMETHOD(void, configure_huffman_decoder, (j_decompress_ptr cinfo, 238f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_offset_data offset)); 239f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JMETHOD(void, get_huffman_decoder_configuration, (j_decompress_ptr cinfo, 240f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_offset_data *offset)); 2419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* This is here to share code between baseline and progressive decoders; */ 2439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* other modules probably should not use it */ 2449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean insufficient_data; /* set TRUE after emitting warning */ 245f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen 246f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_index *index; 2479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Inverse DCT (also performs dequantization) */ 2509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JMETHOD(void, inverse_DCT_method_ptr, 2519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (j_decompress_ptr cinfo, jpeg_component_info * compptr, 2529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCOEFPTR coef_block, 2539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY output_buf, JDIMENSION output_col)); 2549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_inverse_dct { 2569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); 2579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* It is useful to allow each component to have a separate IDCT method. */ 2589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS]; 2599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Upsampling (note that upsampler must also call color converter) */ 2629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_upsampler { 2639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); 2649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, upsample, (j_decompress_ptr cinfo, 2659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE input_buf, 2669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION *in_row_group_ctr, 2679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION in_row_groups_avail, 2689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY output_buf, 2699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION *out_row_ctr, 2709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION out_rows_avail)); 2719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_context_rows; /* TRUE if need rows above & below */ 2739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Colorspace conversion */ 2769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_color_deconverter { 2779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); 2789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, color_convert, (j_decompress_ptr cinfo, 2799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE input_buf, JDIMENSION input_row, 2809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY output_buf, int num_rows)); 2819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Color quantization or color precision reduction */ 2849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_color_quantizer { 2859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan)); 2869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, color_quantize, (j_decompress_ptr cinfo, 2879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY input_buf, JSAMPARRAY output_buf, 2889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int num_rows)); 2899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, finish_pass, (j_decompress_ptr cinfo)); 2909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, new_color_map, (j_decompress_ptr cinfo)); 2919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Miscellaneous useful macros */ 2959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#undef MAX 2979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MAX(a,b) ((a) > (b) ? (a) : (b)) 2989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#undef MIN 2999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MIN(a,b) ((a) < (b) ? (a) : (b)) 3009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* We assume that right shift corresponds to signed division by 2 with 3039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * rounding towards minus infinity. This is correct for typical "arithmetic 3049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * shift" instructions that shift in copies of the sign bit. But some 3059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * C compilers implement >> with an unsigned shift. For these machines you 3069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * must define RIGHT_SHIFT_IS_UNSIGNED. 3079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity. 3089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * It is only applied with constant shift counts. SHIFT_TEMPS must be 3099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * included in the variables of any routine using RIGHT_SHIFT. 3109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef RIGHT_SHIFT_IS_UNSIGNED 3139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define SHIFT_TEMPS INT32 shift_temp; 3149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define RIGHT_SHIFT(x,shft) \ 3159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project ((shift_temp = (x)) < 0 ? \ 3169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \ 3179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (shift_temp >> (shft))) 3189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#else 3199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define SHIFT_TEMPS 3209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define RIGHT_SHIFT(x,shft) ((x) >> (shft)) 3219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 3229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Short forms of external names for systems with brain-damaged linkers. */ 3259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef NEED_SHORT_EXTERNAL_NAMES 3279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_compress_master jICompress 3289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_c_master_control jICMaster 3299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_c_main_controller jICMainC 3309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_c_prep_controller jICPrepC 3319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_c_coef_controller jICCoefC 3329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_color_converter jICColor 3339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_downsampler jIDownsampler 3349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_forward_dct jIFDCT 3359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_huff_encoder jIHEncoder 3369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_phuff_encoder jIPHEncoder 3379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_marker_writer jIMWriter 3389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_master_decompress jIDMaster 3399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_d_main_controller jIDMainC 3409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_d_coef_controller jIDCoefC 3419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_d_post_controller jIDPostC 3429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_input_controller jIInCtlr 3439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_marker_reader jIMReader 3449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_huff_decoder jIHDecoder 3459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_phuff_decoder jIPHDecoder 3469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_inverse_dct jIIDCT 3479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_upsampler jIUpsampler 3489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_color_deconverter jIDColor 3499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_1pass_quantizer jI1Quant 3509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_2pass_quantizer jI2Quant 3519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_merged_upsampler jIMUpsampler 3529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jinit_memory_mgr jIMemMgr 3539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jdiv_round_up jDivRound 3549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jround_up jRound 3559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jcopy_sample_rows jCopySamples 3569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jcopy_block_row jCopyBlocks 3579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jzero_far jZeroFar 3589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_zigzag_order jZIGTable 3599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_natural_order jZAGTable 3609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* NEED_SHORT_EXTERNAL_NAMES */ 3619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Compression module initialization routines */ 3649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_compress_master JPP((j_compress_ptr cinfo)); 3659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_c_master_control JPP((j_compress_ptr cinfo, 3669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean transcode_only)); 3679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_c_main_controller JPP((j_compress_ptr cinfo, 3689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_full_buffer)); 3699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_c_prep_controller JPP((j_compress_ptr cinfo, 3709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_full_buffer)); 3719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_c_coef_controller JPP((j_compress_ptr cinfo, 3729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_full_buffer)); 3739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_color_converter JPP((j_compress_ptr cinfo)); 3749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_downsampler JPP((j_compress_ptr cinfo)); 3759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo)); 3769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_huff_encoder JPP((j_compress_ptr cinfo)); 3779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo)); 3789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_marker_writer JPP((j_compress_ptr cinfo)); 3799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Decompression module initialization routines */ 3809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_master_decompress JPP((j_decompress_ptr cinfo)); 3819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_d_main_controller JPP((j_decompress_ptr cinfo, 3829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_full_buffer)); 3839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_d_coef_controller JPP((j_decompress_ptr cinfo, 3849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_full_buffer)); 3859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_d_post_controller JPP((j_decompress_ptr cinfo, 3869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean need_full_buffer)); 3879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_input_controller JPP((j_decompress_ptr cinfo)); 3889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_marker_reader JPP((j_decompress_ptr cinfo)); 3899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_huff_decoder JPP((j_decompress_ptr cinfo)); 3903147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(void) jinit_huff_decoder_no_data JPP((j_decompress_ptr cinfo)); 3919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo)); 3929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo)); 3939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_upsampler JPP((j_decompress_ptr cinfo)); 3949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_color_deconverter JPP((j_decompress_ptr cinfo)); 3959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_1pass_quantizer JPP((j_decompress_ptr cinfo)); 3969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_2pass_quantizer JPP((j_decompress_ptr cinfo)); 3979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_merged_upsampler JPP((j_decompress_ptr cinfo)); 3983147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(void) jpeg_decompress_per_scan_setup (j_decompress_ptr cinfo); 3999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Memory manager initialization */ 4009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jinit_memory_mgr JPP((j_common_ptr cinfo)); 4019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Utility routines in jutils.c */ 4039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(long) jdiv_round_up JPP((long a, long b)); 4049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(long) jround_up JPP((long a, long b)); 405f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph WenEXTERN(long) jmin JPP((long a, long b)); 4069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jcopy_sample_rows JPP((JSAMPARRAY input_array, int source_row, 4079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY output_array, int dest_row, 4089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int num_rows, JDIMENSION num_cols)); 4099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row, 4109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION num_blocks)); 4119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero)); 412f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen 413f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph WenEXTERN(void) jset_input_stream_position JPP((j_decompress_ptr cinfo, 414f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen int offset)); 415f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph WenEXTERN(void) jset_input_stream_position_bit JPP((j_decompress_ptr cinfo, 416f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen int byte_offset, int bit_left, INT32 buf)); 417f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen 418f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph WenEXTERN(int) jget_input_stream_position JPP((j_decompress_ptr cinfo)); 4199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Constant tables in jutils.c */ 4209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#if 0 /* This table is not actually needed in v6a */ 4219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectextern const int jpeg_zigzag_order[]; /* natural coef order to zigzag order */ 4229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 4239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectextern const int jpeg_natural_order[]; /* zigzag coef order to natural order */ 4249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Suppress undefined-structure complaints if necessary. */ 4269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef INCOMPLETE_TYPES_BROKEN 4289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef AM_MEMORY_MANAGER /* only jmemmgr.c defines these */ 4299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jvirt_sarray_control { long dummy; }; 4309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jvirt_barray_control { long dummy; }; 4319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 4329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* INCOMPLETE_TYPES_BROKEN */ 433