19f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 29f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeglib.h 39f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 49f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Copyright (C) 1991-1998, 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 defines the application interface for the JPEG library. 99f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Most applications using the library need only include this file, 109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * and perhaps jerror.h if they want to know the exact error codes. 119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef JPEGLIB_H 149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEGLIB_H 159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * First we include the configuration files that record how this 189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * installation of the JPEG library is set up. jconfig.h can be 199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * generated automatically for many systems. jmorecfg.h contains 209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * manual configuration options that most people need not worry about. 219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef JCONFIG_INCLUDED /* in case jinclude.h already did */ 249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jconfig.h" /* widely used configuration options */ 259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jmorecfg.h" /* seldom changed options */ 279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Version ID for the JPEG library. 309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Might be useful for tests like "#if JPEG_LIB_VERSION >= 60". 319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_LIB_VERSION 62 /* Version 6b */ 349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Various constants determining the sizes of things. 379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * All of these are specified by the JPEG standard, so don't change them 389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * if you want to be compatible. 399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DCTSIZE 8 /* The basic DCT block is 8x8 samples */ 429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define DCTSIZE2 64 /* DCTSIZE squared; # of elements in a block */ 439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define NUM_QUANT_TBLS 4 /* Quantization tables are numbered 0..3 */ 449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define NUM_HUFF_TBLS 4 /* Huffman tables are numbered 0..3 */ 459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define NUM_ARITH_TBLS 16 /* Arith-coding tables are numbered 0..15 */ 469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MAX_COMPS_IN_SCAN 4 /* JPEG limit on # of components in one scan */ 479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MAX_SAMP_FACTOR 4 /* JPEG limit on sampling factors */ 489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard; 499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * the PostScript DCT filter can emit files with many more than 10 blocks/MCU. 509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU 519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * to handle it. We even let you do this from the jconfig.h file. However, 529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe 539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * sometimes emits noncompliant files doesn't mean you should too. 549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define C_MAX_BLOCKS_IN_MCU 10 /* compressor's limit on blocks per MCU */ 569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef D_MAX_BLOCKS_IN_MCU 579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define D_MAX_BLOCKS_IN_MCU 10 /* decompressor's limit on blocks per MCU */ 589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Data structures for images (arrays of samples and of DCT coefficients). 629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On 80x86 machines, the image arrays are too big for near pointers, 639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * but the pointer arrays can fit in near memory. 649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JSAMPLE FAR *JSAMPROW; /* ptr to one image row of pixel samples. */ 679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JSAMPROW *JSAMPARRAY; /* ptr to some rows (a 2-D sample array) */ 689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JSAMPARRAY *JSAMPIMAGE; /* a 3-D sample array: top index is color */ 699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JCOEF JBLOCK[DCTSIZE2]; /* one block of coefficients */ 719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JBLOCK FAR *JBLOCKROW; /* pointer to one row of coefficient blocks */ 729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JBLOCKROW *JBLOCKARRAY; /* a 2-D array of coefficient blocks */ 739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JBLOCKARRAY *JBLOCKIMAGE; /* a 3-D array of coefficient blocks */ 749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JCOEF FAR *JCOEFPTR; /* useful in a couple of places */ 769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Types for JPEG compression parameters and working tables. */ 799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* DCT coefficient quantization tables. */ 829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct { 849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* This array gives the coefficient quantizers in natural array order 859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (not the zigzag order in which they are stored in a JPEG DQT marker). 869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * CAUTION: IJG versions prior to v6a kept this array in zigzag order. 879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT16 quantval[DCTSIZE2]; /* quantization step for each coefficient */ 899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* This field is used only during compression. It's initialized FALSE when 909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * the table is created, and set TRUE when it's been output to the file. 919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * You could suppress output of a table by setting this to TRUE. 929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (See jpeg_suppress_tables for an example.) 939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean sent_table; /* TRUE when table has been output */ 959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} JQUANT_TBL; 969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Huffman coding tables. */ 999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct { 1019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These two fields directly represent the contents of a JPEG DHT marker */ 1029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 bits[17]; /* bits[k] = # of symbols with codes of */ 1039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* length k bits; bits[0] is unused */ 1049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 huffval[256]; /* The symbols, in order of incr code length */ 1059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* This field is used only during compression. It's initialized FALSE when 1069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * the table is created, and set TRUE when it's been output to the file. 1079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * You could suppress output of a table by setting this to TRUE. 1089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (See jpeg_suppress_tables for an example.) 1099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean sent_table; /* TRUE when table has been output */ 1119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} JHUFF_TBL; 1129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Basic info about one component (color channel). */ 1159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct { 1179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These values are fixed over the whole image. */ 1189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* For compression, they must be supplied by parameter setup; */ 1199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* for decompression, they are read from the SOF marker. */ 1209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int component_id; /* identifier for this component (0..255) */ 1219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int component_index; /* its index in SOF or cinfo->comp_info[] */ 1229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int h_samp_factor; /* horizontal sampling factor (1..4) */ 1239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int v_samp_factor; /* vertical sampling factor (1..4) */ 1249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int quant_tbl_no; /* quantization table selector (0..3) */ 1259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These values may vary between scans. */ 1269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* For compression, they must be supplied by parameter setup; */ 1279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* for decompression, they are read from the SOS marker. */ 1289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The decompressor output side may not use these variables. */ 1299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int dc_tbl_no; /* DC entropy table selector (0..3) */ 1309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int ac_tbl_no; /* AC entropy table selector (0..3) */ 1319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Remaining fields should be treated as private by applications. */ 1339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These values are computed during compression or decompression startup: */ 1359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Component's size in DCT blocks. 1369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Any dummy blocks added to complete an MCU are not counted; therefore 1379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * these values do not depend on whether a scan is interleaved or not. 1389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION width_in_blocks; 1409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION height_in_blocks; 1419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Size of a DCT block in samples. Always DCTSIZE for compression. 1429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * For decompression this is the size of the output from one DCT block, 1439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * reflecting any scaling we choose to apply during the IDCT step. 1449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Values of 1,2,4,8 are likely to be supported. Note that different 1459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * components may receive different IDCT scalings. 1469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int DCT_scaled_size; 1489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The downsampled dimensions are the component's actual, unpadded number 1499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * of samples at the main buffer (preprocessing/compression interface), thus 1509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * downsampled_width = ceil(image_width * Hi/Hmax) 1519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * and similarly for height. For decompression, IDCT scaling is included, so 1529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * downsampled_width = ceil(image_width * Hi/Hmax * DCT_scaled_size/DCTSIZE) 1539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION downsampled_width; /* actual width in samples */ 1559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION downsampled_height; /* actual height in samples */ 1569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* This flag is used only for decompression. In cases where some of the 1579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * components will be ignored (eg grayscale output from YCbCr image), 1589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * we can skip most computations for the unused components. 1599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean component_needed; /* do we need the value of this component? */ 1619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These values are computed before starting a scan of the component. */ 1639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The decompressor output side may not use these variables. */ 1649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int MCU_width; /* number of blocks per MCU, horizontally */ 1659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int MCU_height; /* number of blocks per MCU, vertically */ 1669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int MCU_blocks; /* MCU_width * MCU_height */ 1679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int MCU_sample_width; /* MCU width in samples, MCU_width*DCT_scaled_size */ 1689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int last_col_width; /* # of non-dummy blocks across in last MCU */ 1699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int last_row_height; /* # of non-dummy blocks down in last MCU */ 1709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Saved quantization table for component; NULL if none yet saved. 1729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * See jdinput.c comments about the need for this information. 1739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This field is currently used only for decompression. 1749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JQUANT_TBL * quant_table; 1769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Private per-component storage for DCT or IDCT subsystem. */ 1789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project void * dct_table; 1799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} jpeg_component_info; 1809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* The script for encoding a multiple-scan file is an array of these: */ 1839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct { 1859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int comps_in_scan; /* number of components encoded in this scan */ 1869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */ 1879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int Ss, Se; /* progressive JPEG spectral selection parms */ 1889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int Ah, Al; /* progressive JPEG successive approx. parms */ 1899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} jpeg_scan_info; 1909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* The decompressor can save APPn and COM markers in a list of these: */ 1929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct jpeg_marker_struct FAR * jpeg_saved_marker_ptr; 1949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_marker_struct { 1969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_saved_marker_ptr next; /* next in list, or NULL */ 1979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 marker; /* marker code: JPEG_COM, or JPEG_APP0+n */ 1989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int original_length; /* # bytes of data in the file */ 1999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int data_length; /* # bytes of data saved at data[] */ 2009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JOCTET FAR * data; /* the data contained in the marker */ 2019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* the marker length word is not counted in data_length or original_length */ 2029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Known color spaces. */ 2059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef enum { 2079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_UNKNOWN, /* error/unspecified */ 2089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_GRAYSCALE, /* monochrome */ 2099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_RGB, /* red/green/blue */ 2109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_YCbCr, /* Y/Cb/Cr (also known as YUV) */ 2119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_CMYK, /* C/M/Y/K */ 2129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_YCCK, /* Y/Cb/Cr/K */ 2139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef ANDROID_RGB 2149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_RGBA_8888, /* red/green/blue/alpha */ 2159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JCS_RGB_565 /* red/green/blue in 565 format */ 2169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 2179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} J_COLOR_SPACE; 2189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* DCT/IDCT algorithm options. */ 2209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef enum { 2229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDCT_ISLOW, /* slow but accurate integer algorithm */ 2239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDCT_IFAST, /* faster, less accurate integer method */ 2249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDCT_FLOAT /* floating-point: accurate, fast on fast HW */ 2259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} J_DCT_METHOD; 2269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef JDCT_DEFAULT /* may be overridden in jconfig.h */ 2289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JDCT_DEFAULT JDCT_ISLOW 2299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 2309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef JDCT_FASTEST /* may be overridden in jconfig.h */ 2319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JDCT_FASTEST JDCT_IFAST 2329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 2339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Dithering options for decompression. */ 2359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef enum { 2379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDITHER_NONE, /* no dithering */ 2389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDITHER_ORDERED, /* simple ordered dither */ 2399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDITHER_FS /* Floyd-Steinberg error diffusion dither */ 2409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} J_DITHER_MODE; 2419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Common fields between JPEG compression and decompression master structs. */ 2449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_common_fields \ 2469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_error_mgr * err; /* Error handler module */\ 2479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_memory_mgr * mem; /* Memory manager module */\ 2489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\ 2499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project void * client_data; /* Available for use by application */\ 2509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean is_decompressor; /* So common code can tell which is which */\ 2519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int global_state /* For checking call sequence validity */ 2529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Routines that are to be used by both halves of the library are declared 2549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * to receive a pointer to this structure. There are no actual instances of 2559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct. 2569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_common_struct { 2589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_common_fields; /* Fields common to both master struct types */ 2599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Additional fields follow in an actual jpeg_compress_struct or 2609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_decompress_struct. All three structs must agree on these 2619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * initial fields! (This would be a lot cleaner in C++.) 2629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 2649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct jpeg_common_struct * j_common_ptr; 2669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct jpeg_compress_struct * j_compress_ptr; 2679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct jpeg_decompress_struct * j_decompress_ptr; 2689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Master record for a compression instance */ 2719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_compress_struct { 2739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_common_fields; /* Fields shared with jpeg_decompress_struct */ 2749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Destination for compressed data */ 2769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_destination_mgr * dest; 2779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Description of source image --- these fields must be filled in by 2799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * outer application before starting compression. in_color_space must 2809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * be correct before you can even call jpeg_set_defaults(). 2819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION image_width; /* input image width */ 2849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION image_height; /* input image height */ 2859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int input_components; /* # of color components in input image */ 2869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_COLOR_SPACE in_color_space; /* colorspace of input image */ 2879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project double input_gamma; /* image gamma of input image */ 2899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Compression parameters --- these fields must be set before calling 2919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_start_compress(). We recommend calling jpeg_set_defaults() to 2929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * initialize everything to reasonable defaults, then changing anything 2939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * the application specifically wants to change. That way you won't get 2949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * burnt when new parameters are added. Also note that there are several 2959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * helper routines to simplify changing parameters. 2969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int data_precision; /* bits of precision in image data */ 2999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int num_components; /* # of color components in JPEG image */ 3019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */ 3029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_component_info * comp_info; 3049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* comp_info[i] describes component that appears i'th in SOF */ 3059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS]; 3079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* ptrs to coefficient quantization tables, or NULL if not defined */ 3089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS]; 3109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS]; 3119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* ptrs to Huffman coding tables, or NULL if not defined */ 3129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */ 3149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */ 3159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */ 3169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int num_scans; /* # of entries in scan_info array */ 3189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const jpeg_scan_info * scan_info; /* script for multi-scan file, or NULL */ 3199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The default value of scan_info is NULL, which causes a single-scan 3209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * sequential JPEG file to be emitted. To create a multi-scan file, 3219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * set num_scans and scan_info to point to an array of scan definitions. 3229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean raw_data_in; /* TRUE=caller supplies downsampled data */ 3259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */ 3269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean optimize_coding; /* TRUE=optimize entropy encoding parms */ 3279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean CCIR601_sampling; /* TRUE=first samples are cosited */ 3289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int smoothing_factor; /* 1..100, or 0 for no input smoothing */ 3299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_DCT_METHOD dct_method; /* DCT algorithm selector */ 3309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The restart interval can be specified in absolute MCUs by setting 3329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * restart_interval, or in MCU rows by setting restart_in_rows 3339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (in which case the correct restart_interval will be figured 3349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * for each scan). 3359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */ 3379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int restart_in_rows; /* if > 0, MCU rows per restart interval */ 3389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Parameters controlling emission of special markers. */ 3409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean write_JFIF_header; /* should a JFIF marker be written? */ 3429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 JFIF_major_version; /* What to write for the JFIF version number */ 3439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 JFIF_minor_version; 3449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These three values are not used by the JPEG code, merely copied */ 3459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* into the JFIF APP0 marker. density_unit can be 0 for unknown, */ 3469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* 1 for dots/inch, or 2 for dots/cm. Note that the pixel aspect */ 3479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* ratio is defined by X_density/Y_density even when density_unit=0. */ 3489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 density_unit; /* JFIF code for pixel size units */ 3499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT16 X_density; /* Horizontal pixel density */ 3509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT16 Y_density; /* Vertical pixel density */ 3519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean write_Adobe_marker; /* should an Adobe marker be written? */ 3529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* State variable: index of next scanline to be written to 3549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_write_scanlines(). Application may use this to control its 3559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * processing loop, e.g., "while (next_scanline < image_height)". 3569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION next_scanline; /* 0 .. image_height-1 */ 3599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Remaining fields are known throughout compressor, but generally 3619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * should not be touched by a surrounding application. 3629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* 3659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These fields are computed during compression startup 3669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean progressive_mode; /* TRUE if scan script uses progressive mode */ 3689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int max_h_samp_factor; /* largest h_samp_factor */ 3699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int max_v_samp_factor; /* largest v_samp_factor */ 3709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION total_iMCU_rows; /* # of iMCU rows to be input to coef ctlr */ 3729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The coefficient controller receives data in units of MCU rows as defined 3739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * for fully interleaved scans (whether the JPEG file is interleaved or not). 3749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * There are v_samp_factor * DCTSIZE sample rows of each component in an 3759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * "iMCU" (interleaved MCU) row. 3769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* 3799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These fields are valid during any one scan. 3809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * They describe the components and MCUs actually appearing in the scan. 3819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int comps_in_scan; /* # of JPEG components in this scan */ 3839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN]; 3849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* *cur_comp_info[i] describes component that appears i'th in SOS */ 3859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION MCUs_per_row; /* # of MCUs across the image */ 3879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */ 3889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int blocks_in_MCU; /* # of DCT blocks per MCU */ 3909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int MCU_membership[C_MAX_BLOCKS_IN_MCU]; 3919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* MCU_membership[i] is index in cur_comp_info of component owning */ 3929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* i'th block in an MCU */ 3939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */ 3959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 3969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* 3979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Links to compression subobjects (methods and private variables of modules) 3989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 3999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_comp_master * master; 4009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_c_main_controller * main; 4019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_c_prep_controller * prep; 4029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_c_coef_controller * coef; 4039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_marker_writer * marker; 4049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_color_converter * cconvert; 4059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_downsampler * downsample; 4069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_forward_dct * fdct; 4079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_entropy_encoder * entropy; 4089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */ 4099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int script_space_size; 4109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 4119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Master record for a decompression instance */ 4149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_decompress_struct { 4169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_common_fields; /* Fields shared with jpeg_compress_struct */ 4179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Source of compressed data */ 4199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_source_mgr * src; 4209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Basic description of image --- filled in by jpeg_read_header(). */ 4229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Application may inspect these values to decide how to process image. */ 4239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 424f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JDIMENSION original_image_width; /* nominal image width (from SOF marker) */ 425f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen 426f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JDIMENSION image_width; /* nominal image width (from SOF marker) 427f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen may be changed by tile decode */ 4289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION image_height; /* nominal image height */ 4299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int num_components; /* # of color components in JPEG image */ 4309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */ 4319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Decompression processing parameters --- these fields must be set before 4339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * calling jpeg_start_decompress(). Note that jpeg_read_header() initializes 4349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * them to default values. 4359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 4369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_COLOR_SPACE out_color_space; /* colorspace for output */ 4389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int scale_num, scale_denom; /* fraction by which to scale image */ 4409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project double output_gamma; /* image gamma wanted in output */ 4429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean buffered_image; /* TRUE=multiple output passes */ 4449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean raw_data_out; /* TRUE=downsampled data wanted */ 4459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_DCT_METHOD dct_method; /* IDCT algorithm selector */ 4479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean do_fancy_upsampling; /* TRUE=apply fancy upsampling */ 4489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean do_block_smoothing; /* TRUE=apply interblock smoothing */ 4499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean quantize_colors; /* TRUE=colormapped output wanted */ 4519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* the following are ignored if not quantize_colors: */ 4529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_DITHER_MODE dither_mode; /* type of color dithering to use */ 4539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean two_pass_quantize; /* TRUE=use two-pass color quantization */ 4549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int desired_number_of_colors; /* max # colors to use in created colormap */ 4559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* these are significant only in buffered-image mode: */ 4569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean enable_1pass_quant; /* enable future use of 1-pass quantizer */ 4579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean enable_external_quant;/* enable future use of external colormap */ 4589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean enable_2pass_quant; /* enable future use of 2-pass quantizer */ 4599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Description of actual output image that will be returned to application. 4619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These fields are computed by jpeg_start_decompress(). 4629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * You can also use jpeg_calc_output_dimensions() to determine these values 4639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * in advance of calling jpeg_start_decompress(). 4649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 4659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION output_width; /* scaled image width */ 4679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION output_height; /* scaled image height */ 4689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int out_color_components; /* # of color components in out_color_space */ 4699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int output_components; /* # of color components returned */ 4709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* output_components is 1 (a colormap index) when quantizing colors; 4719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * otherwise it equals out_color_components. 4729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 4739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int rec_outbuf_height; /* min recommended height of scanline buffer */ 4749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* If the buffer passed to jpeg_read_scanlines() is less than this many rows 4759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * high, space and time will be wasted due to unnecessary data copying. 4769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Usually rec_outbuf_height will be 1 or 2, at most 4. 4779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 4789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* When quantizing colors, the output colormap is described by these fields. 4809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The application can supply a colormap by setting colormap non-NULL before 4819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * calling jpeg_start_decompress; otherwise a colormap is created during 4829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_start_decompress or jpeg_start_output. 4839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The map has out_color_components rows and actual_number_of_colors columns. 4849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 4859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int actual_number_of_colors; /* number of entries in use */ 4869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY colormap; /* The color map as a 2-D pixel array */ 4879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* State variables: these variables indicate the progress of decompression. 4899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The application may examine these but must not modify them. 4909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 4919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Row index of next scanline to be read from jpeg_read_scanlines(). 4939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Application may use this to control its processing loop, e.g., 4949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * "while (output_scanline < output_height)". 4959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 4969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION output_scanline; /* 0 .. output_height-1 */ 4979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 4989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Current input scan number and number of iMCU rows completed in scan. 4999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These indicate the progress of the decompressor input side. 5009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int input_scan_number; /* Number of SOS markers seen so far */ 5029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION input_iMCU_row; /* Number of iMCU rows completed */ 5039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The "output scan number" is the notional scan being displayed by the 5059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * output side. The decompressor will not allow output scan/row number 5069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * to get ahead of input scan/row, but it can fall arbitrarily far behind. 5079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int output_scan_number; /* Nominal scan number being displayed */ 5099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION output_iMCU_row; /* Number of iMCU rows read */ 5109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Current progression status. coef_bits[c][i] indicates the precision 5129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * with which component c's DCT coefficient i (in zigzag order) is known. 5139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * It is -1 when no data has yet been received, otherwise it is the point 5149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * transform (shift) value for the most recent scan of the coefficient 5159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (thus, 0 at completion of the progression). 5169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This pointer is NULL when reading a non-progressive file. 5179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int (*coef_bits)[DCTSIZE2]; /* -1 or current Al value for each coef */ 5199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Internal JPEG parameters --- the application usually need not look at 5219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * these fields. Note that the decompressor output side may not use 5229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * any parameters that can change between scans. 5239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Quantization and Huffman tables are carried forward across input 5269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * datastreams when processing abbreviated JPEG datastreams. 5279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS]; 5309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* ptrs to coefficient quantization tables, or NULL if not defined */ 5319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS]; 5339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS]; 5349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* ptrs to Huffman coding tables, or NULL if not defined */ 5359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These parameters are never carried across datastreams, since they 5379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * are given in SOF/SOS markers or defined to be reset by SOI. 5389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int data_precision; /* bits of precision in image data */ 5419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_component_info * comp_info; 5439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* comp_info[i] describes component that appears i'th in SOF */ 5449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 545f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen boolean tile_decode; /* TRUE if using tile based decoding */ 5469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean progressive_mode; /* TRUE if SOFn specifies progressive mode */ 5479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */ 5489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */ 5509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */ 5519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */ 5529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */ 5549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These fields record data obtained from optional markers recognized by 5569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * the JPEG library. 5579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean saw_JFIF_marker; /* TRUE iff a JFIF APP0 marker was found */ 5599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */ 5609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 JFIF_major_version; /* JFIF version number */ 5619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 JFIF_minor_version; 5629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 density_unit; /* JFIF code for pixel size units */ 5639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT16 X_density; /* Horizontal pixel density */ 5649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT16 Y_density; /* Vertical pixel density */ 5659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean saw_Adobe_marker; /* TRUE iff an Adobe APP14 marker was found */ 5669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project UINT8 Adobe_transform; /* Color transform code from Adobe marker */ 5679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean CCIR601_sampling; /* TRUE=first samples are cosited */ 5699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Aside from the specific data retained from APPn markers known to the 5719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * library, the uninterpreted contents of any or all APPn and COM markers 5729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * can be saved in a list for examination by the application. 5739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */ 5759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Remaining fields are known throughout decompressor, but generally 5779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * should not be touched by a surrounding application. 5789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* 5819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These fields are computed during decompression startup 5829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int max_h_samp_factor; /* largest h_samp_factor */ 5849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int max_v_samp_factor; /* largest v_samp_factor */ 5859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int min_DCT_scaled_size; /* smallest DCT_scaled_size of any component */ 5879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION total_iMCU_rows; /* # of iMCU rows in image */ 5899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The coefficient controller's input and output progress is measured in 5909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * units of "iMCU" (interleaved MCU) rows. These are the same as MCU rows 5919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * in fully interleaved JPEG scans, but are used whether the scan is 5929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * interleaved or not. We define an iMCU row as v_samp_factor DCT block 5939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * rows of each component. Therefore, the IDCT output contains 5949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * v_samp_factor*DCT_scaled_size sample rows of a component per iMCU row. 5959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 5969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPLE * sample_range_limit; /* table for fast range-limiting */ 5989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 5999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* 6009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These fields are valid during any one scan. 6019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * They describe the components and MCUs actually appearing in the scan. 6029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Note that the decompressor output side must not use these fields. 6039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 6049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int comps_in_scan; /* # of JPEG components in this scan */ 6059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN]; 6069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* *cur_comp_info[i] describes component that appears i'th in SOS */ 6079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 6089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION MCUs_per_row; /* # of MCUs across the image */ 6099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */ 6109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 6119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int blocks_in_MCU; /* # of DCT blocks per MCU */ 6129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int MCU_membership[D_MAX_BLOCKS_IN_MCU]; 6139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* MCU_membership[i] is index in cur_comp_info of component owning */ 6149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* i'th block in an MCU */ 6159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 6169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */ 6179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 6189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* This field is shared between entropy decoder and marker parser. 6199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * It is either zero or the code of a JPEG marker that has been 6209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * read from the data source, but has not yet been processed. 6219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 6229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int unread_marker; 6239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 6249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* 6259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Links to decompression subobjects (methods, private variables of modules) 6269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 6279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_decomp_master * master; 6289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_d_main_controller * main; 6299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_d_coef_controller * coef; 6309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_d_post_controller * post; 6319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_input_controller * inputctl; 6329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_marker_reader * marker; 6339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_entropy_decoder * entropy; 6349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_inverse_dct * idct; 6359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_upsampler * upsample; 6369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_color_deconverter * cconvert; 6379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_color_quantizer * cquantize; 6389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 6399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 6403147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wentypedef struct { 6413147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6423147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // |--- byte_offset ---|- bit_left -| 6433147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // \------ 27 -------/ \---- 5 ----/ 6443147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen unsigned int bitstream_offset; 6453147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen short prev_dc[3]; 646f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen 647f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen // remaining EOBs in EOBRUN 648f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen unsigned short EOBRUN; 649f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen 650f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen // save the decoder current bit buffer, entropy->bitstate.get_buffer. 651f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen INT32 get_buffer; 65227c2e1a63730561332f4d3c406c7e9b7c36963d2Wei-Ta Chen 65327c2e1a63730561332f4d3c406c7e9b7c36963d2Wei-Ta Chen // save the restart info. 65427c2e1a63730561332f4d3c406c7e9b7c36963d2Wei-Ta Chen unsigned short restarts_to_go; 65527c2e1a63730561332f4d3c406c7e9b7c36963d2Wei-Ta Chen unsigned char next_restart_num; 6563147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen} huffman_offset_data; 6573147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6583147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wentypedef struct { 6593147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6603147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // The header starting position of this scan 6613147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen unsigned int bitstream_offset; 6623147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6633147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // Number of components in this scan 6643147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int comps_in_scan; 6653147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6663147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // Number of MCUs in each row 6673147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int MCUs_per_row; 6683147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int MCU_rows_per_iMCU_row; 6693147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 670f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen // The last MCU position and its dc value in this scan 671f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_offset_data prev_MCU_offset; 672f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen 6733147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen huffman_offset_data **offset; 6743147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen} huffman_scan_header; 6753147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6763147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen#define DEFAULT_MCU_SAMPLE_SIZE 16 6773147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6783147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wentypedef struct { 6793147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6803147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // The number of MCUs that we sample each time as an index point 6813147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int MCU_sample_size; 6823147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6833147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // Number of scan in this image 6843147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int scan_count; 6853147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6863147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // Number of iMCUs rows in this image 6873147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int total_iMCU_rows; 6883147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6893147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen // Memory used by scan struct 6903147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen size_t mem_used; 6913147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen huffman_scan_header *scan; 6923147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen} huffman_index; 6933147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 6949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* "Object" declarations for JPEG modules that may be supplied or called 6959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * directly by the surrounding application. 6969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * As with all objects in the JPEG library, these structs only define the 6979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * publicly visible methods and state variables of a module. Additional 6989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * private fields may exist after the public ones. 6999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 7009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Error handler object */ 7039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_error_mgr { 7059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Error exit handler: does not return to caller */ 7069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, error_exit, (j_common_ptr cinfo)); 7079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Conditionally emit a trace or warning message */ 7089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, emit_message, (j_common_ptr cinfo, int msg_level)); 7099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Routine that actually outputs a trace or error message */ 7109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, output_message, (j_common_ptr cinfo)); 7119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Format a message string for the most recent JPEG error or message */ 7129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, format_message, (j_common_ptr cinfo, char * buffer)); 7139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JMSG_LENGTH_MAX 200 /* recommended size of format_message buffer */ 7149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Reset error state variables at start of a new image */ 7159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, reset_error_mgr, (j_common_ptr cinfo)); 7169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* The message ID code and any parameters are saved here. 7189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * A message can have one string parameter or up to 8 int parameters. 7199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 7209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int msg_code; 7219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JMSG_STR_PARM_MAX 80 7229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project union { 7239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int i[8]; 7249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project char s[JMSG_STR_PARM_MAX]; 7259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } msg_parm; 7269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Standard state variables for error facility */ 7289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int trace_level; /* max msg_level that will be displayed */ 7309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* For recoverable corrupt-data errors, we emit a warning message, 7329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * but keep going unless emit_message chooses to abort. emit_message 7339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * should count warnings in num_warnings. The surrounding application 7349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * can check for bad data by seeing if num_warnings is nonzero at the 7359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * end of processing. 7369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 7379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long num_warnings; /* number of corrupt-data warnings */ 7389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* These fields point to the table(s) of error message strings. 7409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * An application can change the table pointer to switch to a different 7419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * message list (typically, to change the language in which errors are 7429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * reported). Some applications may wish to add additional error codes 7439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * that will be handled by the JPEG library error mechanism; the second 7449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * table pointer is used for this purpose. 7459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 7469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * First table includes all errors generated by JPEG library itself. 7479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Error code 0 is reserved for a "no such error string" message. 7489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 7499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const char * const * jpeg_message_table; /* Library errors */ 7509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int last_jpeg_message; /* Table contains strings 0..last_jpeg_message */ 7519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Second table can be added by application (see cjpeg/djpeg for example). 7529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * It contains strings numbered first_addon_message..last_addon_message. 7539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 7549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const char * const * addon_message_table; /* Non-library errors */ 7559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int first_addon_message; /* code for first string in addon table */ 7569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int last_addon_message; /* code for last string in addon table */ 7579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 7589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Progress monitor object */ 7619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_progress_mgr { 7639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, progress_monitor, (j_common_ptr cinfo)); 7649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long pass_counter; /* work units completed in this pass */ 7669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long pass_limit; /* total number of work units in this pass */ 7679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int completed_passes; /* passes completed so far */ 7689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int total_passes; /* total number of passes expected */ 7699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 7709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Data destination object for compression */ 7739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_destination_mgr { 7759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JOCTET * next_output_byte; /* => next byte to write in buffer */ 7769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project size_t free_in_buffer; /* # of byte spaces remaining in buffer */ 7779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, init_destination, (j_compress_ptr cinfo)); 7799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(boolean, empty_output_buffer, (j_compress_ptr cinfo)); 7809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, term_destination, (j_compress_ptr cinfo)); 7819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 7829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Data source object for decompression */ 7859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_source_mgr { 7879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const JOCTET * next_input_byte; /* => next byte to read from buffer */ 7883147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen const JOCTET * start_input_byte; /* => first byte to read from input */ 7899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project size_t bytes_in_buffer; /* # of bytes remaining in buffer */ 790f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen size_t current_offset; /* current readed input offset */ 7919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 7929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, init_source, (j_decompress_ptr cinfo)); 7939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(boolean, fill_input_buffer, (j_decompress_ptr cinfo)); 7949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, skip_input_data, (j_decompress_ptr cinfo, long num_bytes)); 7959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(boolean, resync_to_restart, (j_decompress_ptr cinfo, int desired)); 7969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, term_source, (j_decompress_ptr cinfo)); 797f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JMETHOD(boolean, seek_input_data, (j_decompress_ptr cinfo, long byte_offset)); 7989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 7999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Memory manager object. 8029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Allocates "small" objects (a few K total), "large" objects (tens of K), 8039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * and "really big" objects (virtual arrays with backing store if needed). 8049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The memory manager does not allow individual objects to be freed; rather, 8059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * each created object is assigned to a pool, and whole pools can be freed 8069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * at once. This is faster and more convenient than remembering exactly what 8079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * to free, especially where malloc()/free() are not too speedy. 8089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * NB: alloc routines never return NULL. They exit to error_exit if not 8099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * successful. 8109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 8119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPOOL_PERMANENT 0 /* lasts until master record is destroyed */ 8139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPOOL_IMAGE 1 /* lasts until done with image/datastream */ 8149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPOOL_NUMPOOLS 2 8159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct jvirt_sarray_control * jvirt_sarray_ptr; 8179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct jvirt_barray_control * jvirt_barray_ptr; 8189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_memory_mgr { 8219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Method pointers */ 8229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void *, alloc_small, (j_common_ptr cinfo, int pool_id, 8239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project size_t sizeofobject)); 8249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void FAR *, alloc_large, (j_common_ptr cinfo, int pool_id, 8259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project size_t sizeofobject)); 8269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id, 8279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION samplesperrow, 8289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION numrows)); 8299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id, 8309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION blocksperrow, 8319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION numrows)); 8329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(jvirt_sarray_ptr, request_virt_sarray, (j_common_ptr cinfo, 8339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int pool_id, 8349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean pre_zero, 8359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION samplesperrow, 8369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION numrows, 8379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION maxaccess)); 8389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(jvirt_barray_ptr, request_virt_barray, (j_common_ptr cinfo, 8399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int pool_id, 8409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean pre_zero, 8419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION blocksperrow, 8429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION numrows, 8439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION maxaccess)); 8449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, realize_virt_arrays, (j_common_ptr cinfo)); 8459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(JSAMPARRAY, access_virt_sarray, (j_common_ptr cinfo, 8469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jvirt_sarray_ptr ptr, 8479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION start_row, 8489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION num_rows, 8499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean writable)); 8509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(JBLOCKARRAY, access_virt_barray, (j_common_ptr cinfo, 8519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jvirt_barray_ptr ptr, 8529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION start_row, 8539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION num_rows, 8549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean writable)); 8559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, free_pool, (j_common_ptr cinfo, int pool_id)); 8569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, self_destruct, (j_common_ptr cinfo)); 8579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Limit on memory allocation for this JPEG object. (Note that this is 8599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * merely advisory, not a guaranteed maximum; it only affects the space 8609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * used for virtual-array buffers.) May be changed by outer application 8619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * after creating the JPEG object. 8629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 8639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long max_memory_to_use; 8649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Maximum allocation request accepted by alloc_large. */ 8669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long max_alloc_chunk; 8679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 8689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Routine signature for application-supplied marker processing methods. 8719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Need not pass marker code since it is stored in cinfo->unread_marker. 8729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 8739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef JMETHOD(boolean, jpeg_marker_parser_method, (j_decompress_ptr cinfo)); 8749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Declarations for routines called by application. 8779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The JPP macro hides prototype parameters from compilers that can't cope. 8789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Note JPP requires double parentheses. 8799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 8809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef HAVE_PROTOTYPES 8829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPP(arglist) arglist 8839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#else 8849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPP(arglist) () 8859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 8869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Short forms of external names for systems with brain-damaged linkers. 8899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * We shorten external names to be unique in the first six letters, which 8909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * is good enough for all known systems. 8919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (If your compiler itself needs names to be unique in less than 15 8929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * characters, you are out of luck. Get a better compiler.) 8939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 8949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 8959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef NEED_SHORT_EXTERNAL_NAMES 8969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_std_error jStdError 8979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_CreateCompress jCreaCompress 8989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_CreateDecompress jCreaDecompress 8999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_destroy_compress jDestCompress 9009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_destroy_decompress jDestDecompress 9019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_stdio_dest jStdDest 9029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_stdio_src jStdSrc 9039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_set_defaults jSetDefaults 9049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_set_colorspace jSetColorspace 9059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_default_colorspace jDefColorspace 9069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_set_quality jSetQuality 9079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_set_linear_quality jSetLQuality 9089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_add_quant_table jAddQuantTable 9099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_quality_scaling jQualityScaling 9109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_simple_progression jSimProgress 9119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_suppress_tables jSuppressTables 9129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_alloc_quant_table jAlcQTable 9139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_alloc_huff_table jAlcHTable 9149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_start_compress jStrtCompress 9159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_write_scanlines jWrtScanlines 9169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_finish_compress jFinCompress 9179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_write_raw_data jWrtRawData 9189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_write_marker jWrtMarker 9199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_write_m_header jWrtMHeader 9209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_write_m_byte jWrtMByte 9219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_write_tables jWrtTables 9229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_read_header jReadHeader 9239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_start_decompress jStrtDecompress 9249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_read_scanlines jReadScanlines 9259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_finish_decompress jFinDecompress 9269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_read_raw_data jReadRawData 9279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_has_multiple_scans jHasMultScn 9289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_start_output jStrtOutput 9299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_finish_output jFinOutput 9309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_input_complete jInComplete 9319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_new_colormap jNewCMap 9329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_consume_input jConsumeInput 9339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_calc_output_dimensions jCalcDimensions 9349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_save_markers jSaveMarkers 9359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_set_marker_processor jSetMarker 9369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_read_coefficients jReadCoefs 9379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_write_coefficients jWrtCoefs 9389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_copy_critical_parameters jCopyCrit 9399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_abort_compress jAbrtCompress 9409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_abort_decompress jAbrtDecompress 9419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_abort jAbort 9429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_destroy jDestroy 9439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_resync_to_restart jResyncRestart 9449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* NEED_SHORT_EXTERNAL_NAMES */ 9459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 9469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 9479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Default error-management setup */ 9489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(struct jpeg_error_mgr *) jpeg_std_error 9499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JPP((struct jpeg_error_mgr * err)); 9509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 9519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Initialization of JPEG compression objects. 9529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_create_compress() and jpeg_create_decompress() are the exported 9539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * names that applications should call. These expand to calls on 9549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_CreateCompress and jpeg_CreateDecompress with additional information 9559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * passed for version mismatch checking. 9569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * NB: you must set up the error-manager BEFORE calling jpeg_create_xxx. 9579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 9589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_create_compress(cinfo) \ 9599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \ 9609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (size_t) sizeof(struct jpeg_compress_struct)) 9619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_create_decompress(cinfo) \ 9629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \ 9639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (size_t) sizeof(struct jpeg_decompress_struct)) 9649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo, 9659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int version, size_t structsize)); 9669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo, 9679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int version, size_t structsize)); 9689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Destruction of JPEG compression objects */ 9699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_destroy_compress JPP((j_compress_ptr cinfo)); 9709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_destroy_decompress JPP((j_decompress_ptr cinfo)); 9719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 9729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Standard data source and destination managers: stdio streams. */ 9739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Caller is responsible for opening the file before and closing after. */ 9749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_stdio_dest JPP((j_compress_ptr cinfo, FILE * outfile)); 9759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_stdio_src JPP((j_decompress_ptr cinfo, FILE * infile)); 9769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 9779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Default parameter setup for compression */ 9789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_set_defaults JPP((j_compress_ptr cinfo)); 9799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Compression parameter setup aids */ 9809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_set_colorspace JPP((j_compress_ptr cinfo, 9819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project J_COLOR_SPACE colorspace)); 9829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_default_colorspace JPP((j_compress_ptr cinfo)); 9839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_set_quality JPP((j_compress_ptr cinfo, int quality, 9849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean force_baseline)); 9859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_set_linear_quality JPP((j_compress_ptr cinfo, 9869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int scale_factor, 9879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean force_baseline)); 9889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_add_quant_table JPP((j_compress_ptr cinfo, int which_tbl, 9899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const unsigned int *basic_table, 9909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int scale_factor, 9919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean force_baseline)); 9929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(int) jpeg_quality_scaling JPP((int quality)); 9939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_simple_progression JPP((j_compress_ptr cinfo)); 9949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_suppress_tables JPP((j_compress_ptr cinfo, 9959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean suppress)); 9969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(JQUANT_TBL *) jpeg_alloc_quant_table JPP((j_common_ptr cinfo)); 9979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(JHUFF_TBL *) jpeg_alloc_huff_table JPP((j_common_ptr cinfo)); 9989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 9999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Main entry points for compression */ 10009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_start_compress JPP((j_compress_ptr cinfo, 10019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean write_all_tables)); 10029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(JDIMENSION) jpeg_write_scanlines JPP((j_compress_ptr cinfo, 10039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY scanlines, 10049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION num_lines)); 10059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_finish_compress JPP((j_compress_ptr cinfo)); 10069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Replaces jpeg_write_scanlines when writing raw downsampled data. */ 10089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(JDIMENSION) jpeg_write_raw_data JPP((j_compress_ptr cinfo, 10099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE data, 10109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION num_lines)); 10119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Write a special marker. See libjpeg.doc concerning safe usage. */ 10139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_write_marker 10149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JPP((j_compress_ptr cinfo, int marker, 10159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const JOCTET * dataptr, unsigned int datalen)); 10169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Same, but piecemeal. */ 10179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_write_m_header 10189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JPP((j_compress_ptr cinfo, int marker, unsigned int datalen)); 10199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_write_m_byte 10209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JPP((j_compress_ptr cinfo, int val)); 10219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Alternate compression function: just write an abbreviated table file */ 10239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_write_tables JPP((j_compress_ptr cinfo)); 10249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Decompression startup: read start of JPEG datastream to see what's there */ 10269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(int) jpeg_read_header JPP((j_decompress_ptr cinfo, 10279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean require_image)); 10289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Return value is one of: */ 10299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_SUSPENDED 0 /* Suspended due to lack of input data */ 10309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_HEADER_OK 1 /* Found valid image datastream */ 10319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_HEADER_TABLES_ONLY 2 /* Found valid table-specs-only datastream */ 10329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* If you pass require_image = TRUE (normal case), you need not check for 10339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * a TABLES_ONLY return code; an abbreviated file will cause an error exit. 10349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * JPEG_SUSPENDED is only possible if you use a data source module that can 10359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * give a suspension return (the stdio source module doesn't). 10369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 10379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Main entry points for decompression */ 10399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(boolean) jpeg_start_decompress JPP((j_decompress_ptr cinfo)); 1040f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph WenEXTERN(boolean) jpeg_start_tile_decompress JPP((j_decompress_ptr cinfo)); 10419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(JDIMENSION) jpeg_read_scanlines JPP((j_decompress_ptr cinfo, 10429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPARRAY scanlines, 10439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION max_lines)); 10443147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(JDIMENSION) jpeg_read_scanlines_from JPP((j_decompress_ptr cinfo, 10453147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen JSAMPARRAY scanlines, 10463147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int line_offset, 10473147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen JDIMENSION max_lines)); 10483147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(JDIMENSION) jpeg_read_tile_scanline JPP((j_decompress_ptr cinfo, 10493147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen huffman_index *index, 1050cc66ecf44d1407039b05ffd7b3342389f95c17b7Joseph Wen JSAMPARRAY scanlines)); 10513147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(void) jpeg_init_read_tile_scanline JPP((j_decompress_ptr cinfo, 10523147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen huffman_index *index, 10533147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int *start_x, int *start_y, 10543147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen int *width, int *height)); 10559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(boolean) jpeg_finish_decompress JPP((j_decompress_ptr cinfo)); 10569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Replaces jpeg_read_scanlines when reading raw downsampled data. */ 10589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(JDIMENSION) jpeg_read_raw_data JPP((j_decompress_ptr cinfo, 10599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JSAMPIMAGE data, 10609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JDIMENSION max_lines)); 10619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Additional entry points for buffered-image mode. */ 10639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(boolean) jpeg_has_multiple_scans JPP((j_decompress_ptr cinfo)); 10649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(boolean) jpeg_start_output JPP((j_decompress_ptr cinfo, 10659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int scan_number)); 10669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(boolean) jpeg_finish_output JPP((j_decompress_ptr cinfo)); 10679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(boolean) jpeg_input_complete JPP((j_decompress_ptr cinfo)); 10689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_new_colormap JPP((j_decompress_ptr cinfo)); 10699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(int) jpeg_consume_input JPP((j_decompress_ptr cinfo)); 10709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Return value is one of: */ 10719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* #define JPEG_SUSPENDED 0 Suspended due to lack of input data */ 10729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_REACHED_SOS 1 /* Reached start of new scan */ 10739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_REACHED_EOI 2 /* Reached end of image */ 10749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_ROW_COMPLETED 3 /* Completed one iMCU row */ 10759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_SCAN_COMPLETED 4 /* Completed last iMCU row of a scan */ 10769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Precalculate output dimensions for current decompression parameters. */ 10789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_calc_output_dimensions JPP((j_decompress_ptr cinfo)); 10799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Control saving of COM and APPn markers into marker_list. */ 10819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_save_markers 10829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JPP((j_decompress_ptr cinfo, int marker_code, 10839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project unsigned int length_limit)); 10849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Install a special processing method for COM or APPn markers. */ 10869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_set_marker_processor 10879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JPP((j_decompress_ptr cinfo, int marker_code, 10889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_marker_parser_method routine)); 10899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Read or write raw DCT coefficients --- useful for lossless transcoding. */ 10919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(jvirt_barray_ptr *) jpeg_read_coefficients JPP((j_decompress_ptr cinfo)); 1092f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph WenEXTERN(boolean) jpeg_build_huffman_index 1093f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen JPP((j_decompress_ptr cinfo, huffman_index *index)); 10949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_write_coefficients JPP((j_compress_ptr cinfo, 10959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jvirt_barray_ptr * coef_arrays)); 10969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_copy_critical_parameters JPP((j_decompress_ptr srcinfo, 10979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project j_compress_ptr dstinfo)); 10989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 10999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* If you choose to abort compression or decompression before completing 11009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_finish_(de)compress, then you need to clean up to release memory, 11019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * temporary files, etc. You can just call jpeg_destroy_(de)compress 11029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * if you're done with the JPEG object, but if you want to clean it up and 11039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * reuse it, call this: 11049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 11059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_abort_compress JPP((j_compress_ptr cinfo)); 11069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_abort_decompress JPP((j_decompress_ptr cinfo)); 11079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Generic versions of jpeg_abort and jpeg_destroy that work on either 11099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * flavor of JPEG object. These may be more convenient in some places. 11109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 11119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_abort JPP((j_common_ptr cinfo)); 11129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_destroy JPP((j_common_ptr cinfo)); 11139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Default restart-marker-resync procedure for use by data source modules */ 11159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(boolean) jpeg_resync_to_restart JPP((j_decompress_ptr cinfo, 11169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int desired)); 11179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11183147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(void) jpeg_configure_huffman_decoder(j_decompress_ptr cinfo, 1119f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_offset_data offset); 11203147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(void) jpeg_get_huffman_decoder_configuration(j_decompress_ptr cinfo, 1121f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_offset_data *offset); 11223147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(void) jpeg_create_huffman_index(j_decompress_ptr cinfo, 11233147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen huffman_index *index); 1124f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph WenEXTERN(void) jpeg_configure_huffman_index_scan(j_decompress_ptr cinfo, 1125f5b94eebe742df1a9bb3941fc0a0ec0137e936efJoseph Wen huffman_index *index, int scan_no, int offset); 11263147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph WenEXTERN(void) jpeg_destroy_huffman_index(huffman_index *index); 11273147fbe7688fc353e6ae03825a37cf101a4ee01dJoseph Wen 11289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* These marker codes are exported since applications and data source modules 11309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * are likely to want to use them. 11319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 11329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_RST0 0xD0 /* RST0 marker code */ 11349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_EOI 0xD9 /* EOI marker code */ 11359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_APP0 0xE0 /* APP0 marker code */ 11369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JPEG_COM 0xFE /* COM marker code */ 11379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* If we have a brain-damaged compiler that emits warnings (or worse, errors) 11409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * for structure definitions that are never filled in, keep it quiet by 11419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * supplying dummy definitions for the various substructures. 11429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 11439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef INCOMPLETE_TYPES_BROKEN 11459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef JPEG_INTERNALS /* will be defined in jpegint.h */ 11469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jvirt_sarray_control { long dummy; }; 11479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jvirt_barray_control { long dummy; }; 11489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_comp_master { long dummy; }; 11499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_c_main_controller { long dummy; }; 11509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_c_prep_controller { long dummy; }; 11519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_c_coef_controller { long dummy; }; 11529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_marker_writer { long dummy; }; 11539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_color_converter { long dummy; }; 11549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_downsampler { long dummy; }; 11559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_forward_dct { long dummy; }; 11569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_entropy_encoder { long dummy; }; 11579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_decomp_master { long dummy; }; 11589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_d_main_controller { long dummy; }; 11599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_d_coef_controller { long dummy; }; 11609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_d_post_controller { long dummy; }; 11619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_input_controller { long dummy; }; 11629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_marker_reader { long dummy; }; 11639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_entropy_decoder { long dummy; }; 11649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_inverse_dct { long dummy; }; 11659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_upsampler { long dummy; }; 11669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_color_deconverter { long dummy; }; 11679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstruct jpeg_color_quantizer { long dummy; }; 11689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* JPEG_INTERNALS */ 11699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* INCOMPLETE_TYPES_BROKEN */ 11709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 11739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The JPEG library modules define JPEG_INTERNALS before including this file. 11749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The internal structure declarations are read only when that is true. 11759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Applications using the library should not include jpegint.h, but may wish 11769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * to include jerror.h. 11779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 11789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef JPEG_INTERNALS 11809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jpegint.h" /* fetch private declarations */ 11819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jerror.h" /* fetch error codes too */ 11829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 11839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 11849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* JPEGLIB_H */ 1185