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