Author: korli Date: 2010-01-27 02:57:51 +0100 (Wed, 27 Jan 2010) New Revision: 35312 Changeset: http://dev.haiku-os.org/changeset/35312/haiku Added: haiku/trunk/src/libs/jpeg/jaricom.c haiku/trunk/src/libs/jpeg/jcarith.c haiku/trunk/src/libs/jpeg/jdarith.c Removed: haiku/trunk/src/libs/jpeg/__changes_by_Shard.txt haiku/trunk/src/libs/jpeg/cderror.h haiku/trunk/src/libs/jpeg/cdjpeg.c haiku/trunk/src/libs/jpeg/cdjpeg.h haiku/trunk/src/libs/jpeg/filelist.txt haiku/trunk/src/libs/jpeg/jcdiffct.c haiku/trunk/src/libs/jpeg/jchuff.h haiku/trunk/src/libs/jpeg/jclhuff.c haiku/trunk/src/libs/jpeg/jclossls.c haiku/trunk/src/libs/jpeg/jclossy.c haiku/trunk/src/libs/jpeg/jcodec.c haiku/trunk/src/libs/jpeg/jconfig.doc haiku/trunk/src/libs/jpeg/jcphuff.c haiku/trunk/src/libs/jpeg/jcpred.c haiku/trunk/src/libs/jpeg/jcscale.c haiku/trunk/src/libs/jpeg/jcshuff.c haiku/trunk/src/libs/jpeg/jddiffct.c haiku/trunk/src/libs/jpeg/jdhuff.h haiku/trunk/src/libs/jpeg/jdlhuff.c haiku/trunk/src/libs/jpeg/jdlossls.c haiku/trunk/src/libs/jpeg/jdlossy.c haiku/trunk/src/libs/jpeg/jdphuff.c haiku/trunk/src/libs/jpeg/jdpred.c haiku/trunk/src/libs/jpeg/jdscale.c haiku/trunk/src/libs/jpeg/jdshuff.c haiku/trunk/src/libs/jpeg/jidctred.c haiku/trunk/src/libs/jpeg/jlossls.h haiku/trunk/src/libs/jpeg/jlossy.h haiku/trunk/src/libs/jpeg/rdswitch.c haiku/trunk/src/libs/jpeg/transupp.c haiku/trunk/src/libs/jpeg/transupp.h Modified: haiku/trunk/headers/libs/jpeg/jerror.h haiku/trunk/headers/libs/jpeg/jmorecfg.h haiku/trunk/headers/libs/jpeg/jpeglib.h haiku/trunk/src/add-ons/translators/jpeg/JPEGTranslator.cpp haiku/trunk/src/add-ons/translators/jpeg/Jamfile haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp haiku/trunk/src/libs/jpeg/Jamfile haiku/trunk/src/libs/jpeg/README haiku/trunk/src/libs/jpeg/jcapimin.c haiku/trunk/src/libs/jpeg/jcapistd.c haiku/trunk/src/libs/jpeg/jccoefct.c haiku/trunk/src/libs/jpeg/jcdctmgr.c haiku/trunk/src/libs/jpeg/jchuff.c haiku/trunk/src/libs/jpeg/jcinit.c haiku/trunk/src/libs/jpeg/jcmainct.c haiku/trunk/src/libs/jpeg/jcmarker.c haiku/trunk/src/libs/jpeg/jcmaster.c haiku/trunk/src/libs/jpeg/jcparam.c haiku/trunk/src/libs/jpeg/jcprepct.c haiku/trunk/src/libs/jpeg/jcsample.c haiku/trunk/src/libs/jpeg/jctrans.c haiku/trunk/src/libs/jpeg/jdapimin.c haiku/trunk/src/libs/jpeg/jdapistd.c haiku/trunk/src/libs/jpeg/jdatadst.c haiku/trunk/src/libs/jpeg/jdatasrc.c haiku/trunk/src/libs/jpeg/jdcoefct.c haiku/trunk/src/libs/jpeg/jdct.h haiku/trunk/src/libs/jpeg/jddctmgr.c haiku/trunk/src/libs/jpeg/jdhuff.c haiku/trunk/src/libs/jpeg/jdinput.c haiku/trunk/src/libs/jpeg/jdmainct.c haiku/trunk/src/libs/jpeg/jdmarker.c haiku/trunk/src/libs/jpeg/jdmaster.c haiku/trunk/src/libs/jpeg/jdsample.c haiku/trunk/src/libs/jpeg/jdtrans.c haiku/trunk/src/libs/jpeg/jerror.c haiku/trunk/src/libs/jpeg/jfdctflt.c haiku/trunk/src/libs/jpeg/jfdctfst.c haiku/trunk/src/libs/jpeg/jfdctint.c haiku/trunk/src/libs/jpeg/jidctint.c haiku/trunk/src/libs/jpeg/jmemmgr.c haiku/trunk/src/libs/jpeg/jpegint.h haiku/trunk/src/libs/jpeg/jpegtran.c haiku/trunk/src/libs/jpeg/jquant2.c haiku/trunk/src/libs/jpeg/jutils.c haiku/trunk/src/libs/jpeg/jversion.h Log: * updated libjpeg to version 8, as the previous version on trunk didn't look like version 7, the merge wasn't usable. I modified jpeglib.h to have the JPEGTranslator built. * added libjpeg to AboutSystem * JPEGTranslator now uses the shared library libjpeg.so Modified: haiku/trunk/headers/libs/jpeg/jerror.h =================================================================== --- haiku/trunk/headers/libs/jpeg/jerror.h 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/headers/libs/jpeg/jerror.h 2010-01-27 01:57:51 UTC (rev 35312) @@ -1,7 +1,8 @@ /* * jerror.h * - * Copyright (C) 1994-1998, Thomas G. Lane. + * Copyright (C) 1994-1997, Thomas G. Lane. + * Modified 1997-2009 by Guido Vollbeding. * This file is part of the Independent JPEG Group's software. * For conditions of distribution and use, see the accompanying README file. * @@ -39,25 +40,21 @@ JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */ /* For maintenance convenience, list is alphabetical by message code name */ -JMESSAGE(JERR_ARITH_NOTIMPL, - "Sorry, there are legal restrictions on arithmetic coding") JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix") JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix") JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode") JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS") +JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request") JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range") -JMESSAGE(JERR_BAD_DCTSIZE, "IDCT output block size %d not supported") -JMESSAGE(JERR_BAD_DIFF, "spatial difference out of range") +JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported") +JMESSAGE(JERR_BAD_DROP_SAMPLING, + "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c") JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition") JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace") JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace") JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length") JMESSAGE(JERR_BAD_LIB_VERSION, "Wrong JPEG library version: library is %d, caller expects %d") -JMESSAGE(JERR_BAD_LOSSLESS, - "Invalid lossless parameters Ss=%d Se=%d Ah=%d Al=%d") -JMESSAGE(JERR_BAD_LOSSLESS_SCRIPT, - "Invalid lossless parameters at scan script entry %d") JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan") JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d") JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d") @@ -65,7 +62,6 @@ "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d") JMESSAGE(JERR_BAD_PROG_SCRIPT, "Invalid progressive parameters at scan script entry %d") -JMESSAGE(JERR_BAD_RESTART, "Invalid restart interval: %d, must be an integer multiple of the number of MCUs in an MCU_row (%d)") JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors") JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d") JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d") @@ -74,8 +70,6 @@ JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access") JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small") JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here") -JMESSAGE(JERR_CANT_TRANSCODE, - "Cannot transcode to/from lossless JPEG datastreams") JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet") JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d") JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request") @@ -101,10 +95,10 @@ JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change") JMESSAGE(JERR_NOTIMPL, "Not implemented yet") JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time") +JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined") JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported") JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined") JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image") -JMESSAGE(JERR_NO_LOSSLESS_SCRIPT, "Lossless encoding was requested but no scan script was supplied") JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined") JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x") JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)") @@ -174,13 +168,12 @@ "JFIF extension marker: palette thumbnail image, length %u") JMESSAGE(JTRC_THUMB_RGB, "JFIF extension marker: RGB thumbnail image, length %u") -JMESSAGE(JTRC_UNKNOWN_LOSSLESS_IDS, - "Unrecognized component IDs %d %d %d, assuming RGB") -JMESSAGE(JTRC_UNKNOWN_LOSSY_IDS, +JMESSAGE(JTRC_UNKNOWN_IDS, "Unrecognized component IDs %d %d %d, assuming YCbCr") JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u") JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u") JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d") +JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code") JMESSAGE(JWRN_BOGUS_PROGRESSION, "Inconsistent progression sequence for component %d coefficient %d") JMESSAGE(JWRN_EXTRANEOUS_DATA, @@ -189,8 +182,6 @@ JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code") JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d") JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file") -JMESSAGE(JWRN_MUST_DOWNSCALE, - "Must downscale data from %d bits to %d") JMESSAGE(JWRN_MUST_RESYNC, "Corrupt JPEG data: found marker 0x%02x instead of RST%d") JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG") @@ -240,6 +231,15 @@ (cinfo)->err->msg_parm.i[2] = (p3), \ (cinfo)->err->msg_parm.i[3] = (p4), \ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) +#define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (cinfo)->err->msg_parm.i[2] = (p3), \ + (cinfo)->err->msg_parm.i[3] = (p4), \ + (cinfo)->err->msg_parm.i[4] = (p5), \ + (cinfo)->err->msg_parm.i[5] = (p6), \ + (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) #define ERREXITS(cinfo,code,str) \ ((cinfo)->err->msg_code = (code), \ strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ Modified: haiku/trunk/headers/libs/jpeg/jmorecfg.h =================================================================== --- haiku/trunk/headers/libs/jpeg/jmorecfg.h 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/headers/libs/jpeg/jmorecfg.h 2010-01-27 01:57:51 UTC (rev 35312) @@ -1,7 +1,8 @@ /* * jmorecfg.h * - * Copyright (C) 1991-1998, Thomas G. Lane. + * Copyright (C) 1991-1997, Thomas G. Lane. + * Modified 1997-2009 by Guido Vollbeding. * This file is part of the Independent JPEG Group's software. * For conditions of distribution and use, see the accompanying README file. * @@ -90,33 +91,6 @@ #endif /* BITS_IN_JSAMPLE == 12 */ -#if BITS_IN_JSAMPLE == 16 -/* JSAMPLE should be the smallest type that will hold the values 0..65535. - * You can use a signed short by having GETJSAMPLE mask it with 0xFFFF. - */ - -#ifdef HAVE_UNSIGNED_SHORT - -typedef unsigned short JSAMPLE; -#define GETJSAMPLE(value) ((int) (value)) - -#else /* not HAVE_UNSIGNED_SHORT */ - -typedef short JSAMPLE; -#ifdef SHORT_IS_UNSIGNED -#define GETJSAMPLE(value) ((int) (value)) -#else -#define GETJSAMPLE(value) ((int) (value) & 0xFFFF) -#endif /* SHORT_IS_UNSIGNED */ - -#endif /* HAVE_UNSIGNED_SHORT */ - -#define MAXJSAMPLE 65535 -#define CENTERJSAMPLE 32768 - -#endif /* BITS_IN_JSAMPLE == 16 */ - - /* Representation of a DCT frequency coefficient. * This should be a signed value of at least 16 bits; "short" is usually OK. * Again, we allocate large arrays of these, but you can change to int @@ -125,12 +99,7 @@ typedef short JCOEF; -/* Representation of a spatial difference value. - * This should be a signed value of at least 16 bits; int is usually OK. - */ -typedef int JDIFF; - /* Compressed datastreams are represented as arrays of JOCTET. * These must be EXACTLY 8 bits wide, at least once they are written to * external storage. Note that when using the stdio data source/destination @@ -190,8 +159,14 @@ /* INT32 must hold at least signed 32-bit values. */ #ifndef XMD_H /* X11/xmd.h correctly defines INT32 */ +#ifndef _BASETSD_H_ /* Microsoft defines it in basetsd.h */ +#ifndef _BASETSD_H /* MinGW is slightly different */ +#ifndef QGLOBAL_H /* Qt defines it in qglobal.h */ typedef long INT32; #endif +#endif +#endif +#endif /* Datatype used for image dimensions. The JPEG standard only supports * images up to 64K*64K due to 16-bit fields in SOF markers. Therefore @@ -241,11 +216,13 @@ * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol. */ +#ifndef FAR #ifdef NEED_FAR_POINTERS #define FAR far #else #define FAR #endif +#endif /* @@ -288,8 +265,6 @@ * (You may HAVE to do that if your compiler doesn't like null source files.) */ -/* Arithmetic coding is unsupported for legal reasons. Complaints to IBM. */ - /* Capability options common to encoder and decoder: */ #define DCT_ISLOW_SUPPORTED /* slow but accurate integer algorithm */ @@ -298,31 +273,29 @@ /* Encoder capability options: */ -#undef C_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */ +#define C_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */ #define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ #define C_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/ -#define C_LOSSLESS_SUPPORTED /* Lossless JPEG? */ +#define DCT_SCALING_SUPPORTED /* Input rescaling via DCT? (Requires DCT_ISLOW)*/ #define ENTROPY_OPT_SUPPORTED /* Optimization of entropy coding parms? */ /* Note: if you selected 12-bit data precision, it is dangerous to turn off * ENTROPY_OPT_SUPPORTED. The standard Huffman tables are only good for 8-bit - * precision, so jcshuff.c normally uses entropy optimization to compute + * precision, so jchuff.c normally uses entropy optimization to compute * usable tables for higher precision. If you don't want to do optimization, * you'll have to supply different default Huffman tables. - * The exact same statements apply for progressive and lossless JPEG: - * the default tables don't work for progressive mode or lossless mode. - * (This may get fixed, however.) + * The exact same statements apply for progressive JPEG: the default tables + * don't work for progressive mode. (This may get fixed, however.) */ #define INPUT_SMOOTHING_SUPPORTED /* Input image smoothing option? */ /* Decoder capability options: */ -#undef D_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */ +#define D_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */ #define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ #define D_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/ -#define D_LOSSLESS_SUPPORTED /* Lossless JPEG? */ +#define IDCT_SCALING_SUPPORTED /* Output rescaling via IDCT? */ #define SAVE_MARKERS_SUPPORTED /* jpeg_save_markers() needed? */ #define BLOCK_SMOOTHING_SUPPORTED /* Block smoothing? (Progressive only) */ -#define IDCT_SCALING_SUPPORTED /* Output rescaling via IDCT? */ #undef UPSAMPLE_SCALING_SUPPORTED /* Output rescaling at upsample stage? */ #define UPSAMPLE_MERGING_SUPPORTED /* Fast path for sloppy upsampling? */ #define QUANT_1PASS_SUPPORTED /* 1-pass color quantization? */ Modified: haiku/trunk/headers/libs/jpeg/jpeglib.h =================================================================== --- haiku/trunk/headers/libs/jpeg/jpeglib.h 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/headers/libs/jpeg/jpeglib.h 2010-01-27 01:57:51 UTC (rev 35312) @@ -2,6 +2,7 @@ * jpeglib.h * * Copyright (C) 1991-1998, Thomas G. Lane. + * Modified 2002-2009 by Guido Vollbeding. * This file is part of the Independent JPEG Group's software. * For conditions of distribution and use, see the accompanying README file. * @@ -25,17 +26,21 @@ #endif #include "jmorecfg.h" /* seldom changed options */ +#ifdef __HAIKU__ #include <setjmp.h> +#endif #ifdef __cplusplus +#ifndef DONT_USE_EXTERN_C extern "C" { #endif +#endif /* Version ID for the JPEG library. - * Might be useful for tests like "#if JPEG_LIB_VERSION >= 60". + * Might be useful for tests like "#if JPEG_LIB_VERSION >= 80". */ -#define JPEG_LIB_VERSION 62 /* Version 6b */ +#define JPEG_LIB_VERSION 80 /* Version 8.0 */ /* Various constants determining the sizes of things. @@ -51,16 +56,15 @@ #define MAX_COMPS_IN_SCAN 4 /* JPEG limit on # of components in one scan */ #define MAX_SAMP_FACTOR 4 /* JPEG limit on sampling factors */ /* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard; - * the PostScript DCT filter can emit files with many more than 10 data units - * per MCU. - * If you happen to run across such a file, you can up D_MAX_DATA_UNITS_IN_MCU + * the PostScript DCT filter can emit files with many more than 10 blocks/MCU. + * If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU * to handle it. We even let you do this from the jconfig.h file. However, - * we strongly discourage changing C_MAX_DATA_UNITS_IN_MCU; just because Adobe + * we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe * sometimes emits noncompliant files doesn't mean you should too. */ -#define C_MAX_DATA_UNITS_IN_MCU 10 /* compressor's limit on data units/MCU */ -#ifndef D_MAX_DATA_UNITS_IN_MCU -#define D_MAX_DATA_UNITS_IN_MCU 10 /* decompressor's limit on data units/MCU */ +#define C_MAX_BLOCKS_IN_MCU 10 /* compressor's limit on blocks per MCU */ +#ifndef D_MAX_BLOCKS_IN_MCU +#define D_MAX_BLOCKS_IN_MCU 10 /* decompressor's limit on blocks per MCU */ #endif @@ -80,9 +84,6 @@ typedef JCOEF FAR *JCOEFPTR; /* useful in a couple of places */ -typedef JDIFF FAR *JDIFFROW; /* pointer to one row of difference values */ -typedef JDIFFROW *JDIFFARRAY; /* ptr to some rows (a 2-D diff array) */ -typedef JDIFFARRAY *JDIFFIMAGE; /* a 3-D diff array: top index is color */ /* Types for JPEG compression parameters and working tables. */ @@ -141,26 +142,24 @@ /* Remaining fields should be treated as private by applications. */ /* These values are computed during compression or decompression startup: */ - /* Component's size in data units. - * Any dummy data units added to complete an MCU are not counted; therefore + /* Component's size in DCT blocks. + * Any dummy blocks added to complete an MCU are not counted; therefore * these values do not depend on whether a scan is interleaved or not. */ - JDIMENSION width_in_data_units; - JDIMENSION height_in_data_units; - /* Size of a data unit in/output by the codec (in samples). Always - * data_unit for compression. For decompression this is the size of the - * output from one data_unit, reflecting any processing performed by the - * codec. For example, in the DCT-based codec, scaling may be applied - * during the IDCT step. Values of 1,2,4,8 are likely to be supported. - * Note that different components may have different codec_data_unit sizes. + JDIMENSION width_in_blocks; + JDIMENSION height_in_blocks; + /* Size of a DCT block in samples, + * reflecting any scaling we choose to apply during the DCT step. + * Values from 1 to 16 are supported. + * Note that different components may receive different DCT scalings. */ - int codec_data_unit; + int DCT_h_scaled_size; + int DCT_v_scaled_size; /* The downsampled dimensions are the component's actual, unpadded number - * of samples at the main buffer (preprocessing/compression interface), thus - * downsampled_width = ceil(image_width * Hi/Hmax) - * and similarly for height. For decompression, codec-based processing is - * included (ie, IDCT scaling), so - * downsampled_width = ceil(image_width * Hi/Hmax * codec_data_unit/data_unit) + * of samples at the main buffer (preprocessing/compression interface); + * DCT scaling is included, so + * downsampled_width = ceil(image_width * Hi/Hmax * DCT_h_scaled_size/DCTSIZE) + * and similarly for height. */ JDIMENSION downsampled_width; /* actual width in samples */ JDIMENSION downsampled_height; /* actual height in samples */ @@ -172,12 +171,12 @@ /* These values are computed before starting a scan of the component. */ /* The decompressor output side may not use these variables. */ - int MCU_width; /* number of data units per MCU, horizontally */ - int MCU_height; /* number of data units per MCU, vertically */ - int MCU_data_units; /* MCU_width * MCU_height */ - int MCU_sample_width; /* MCU width in samples, MCU_width*codec_data_unit */ - int last_col_width; /* # of non-dummy data_units across in last MCU */ - int last_row_height; /* # of non-dummy data_units down in last MCU */ + int MCU_width; /* number of blocks per MCU, horizontally */ + int MCU_height; /* number of blocks per MCU, vertically */ + int MCU_blocks; /* MCU_width * MCU_height */ + int MCU_sample_width; /* MCU width in samples: MCU_width * DCT_h_scaled_size */ + int last_col_width; /* # of non-dummy blocks across in last MCU */ + int last_row_height; /* # of non-dummy blocks down in last MCU */ /* Saved quantization table for component; NULL if none yet saved. * See jdinput.c comments about the need for this information. @@ -195,10 +194,8 @@ typedef struct { int comps_in_scan; /* number of components encoded in this scan */ int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */ - int Ss, Se; /* progressive JPEG spectral selection parms - lossless JPEG predictor select parm (Ss) */ - int Ah, Al; /* progressive JPEG successive approx. parms - lossless JPEG point transform parm (Al) */ + int Ss, Se; /* progressive JPEG spectral selection parms */ + int Ah, Al; /* progressive JPEG successive approx. parms */ } jpeg_scan_info; /* The decompressor can save APPn and COM markers in a list of these: */ @@ -214,14 +211,6 @@ /* the marker length word is not counted in data_length or original_length */ }; -/* Known codec processes. */ - -typedef enum { - JPROC_SEQUENTIAL, /* baseline/extended sequential DCT */ - JPROC_PROGRESSIVE, /* progressive DCT */ - JPROC_LOSSLESS /* lossless (sequential) */ -} J_CODEC_PROCESS; - /* Known color spaces. */ typedef enum { @@ -311,8 +300,18 @@ * burnt when new parameters are added. Also note that there are several * helper routines to simplify changing parameters. */ - boolean lossless; /* TRUE=lossless encoding, FALSE=lossy */ + unsigned int scale_num, scale_denom; /* fraction by which to scale image */ + + JDIMENSION jpeg_width; /* scaled JPEG image width */ + JDIMENSION jpeg_height; /* scaled JPEG image height */ + /* Dimensions of actual JPEG image that will be written to file, + * derived from input dimensions by scaling factors above. + * These fields are computed by jpeg_start_compress(). + * You can also use jpeg_calc_jpeg_dimensions() to determine these values + * in advance of calling jpeg_start_compress(). + */ + int data_precision; /* bits of precision in image data */ int num_components; /* # of color components in JPEG image */ @@ -320,14 +319,17 @@ jpeg_component_info * comp_info; /* comp_info[i] describes component that appears i'th in SOF */ - + JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS]; - /* ptrs to coefficient quantization tables, or NULL if not defined */ - + int q_scale_factor[NUM_QUANT_TBLS]; + /* ptrs to coefficient quantization tables, or NULL if not defined, + * and corresponding scale factors (percentage, initialized 100). + */ + JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS]; JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS]; /* ptrs to Huffman coding tables, or NULL if not defined */ - + UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */ UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */ UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */ @@ -343,6 +345,7 @@ boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */ boolean optimize_coding; /* TRUE=optimize entropy encoding parms */ boolean CCIR601_sampling; /* TRUE=first samples are cosited */ + boolean do_fancy_downsampling; /* TRUE=apply fancy downsampling */ int smoothing_factor; /* 1..100, or 0 for no input smoothing */ J_DCT_METHOD dct_method; /* DCT algorithm selector */ @@ -382,16 +385,17 @@ /* * These fields are computed during compression startup */ - int data_unit; /* size of data unit in samples */ - J_CODEC_PROCESS process; /* encoding process of JPEG image */ - + boolean progressive_mode; /* TRUE if scan script uses progressive mode */ int max_h_samp_factor; /* largest h_samp_factor */ int max_v_samp_factor; /* largest v_samp_factor */ - JDIMENSION total_iMCU_rows; /* # of iMCU rows to be input to codec */ - /* The codec receives data in units of MCU rows as defined for fully - * interleaved scans (whether the JPEG file is interleaved or not). - * There are v_samp_factor * data_unit sample rows of each component in an + int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */ + int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */ + + JDIMENSION total_iMCU_rows; /* # of iMCU rows to be input to coef ctlr */ + /* The coefficient controller receives data in units of MCU rows as defined + * for fully interleaved scans (whether the JPEG file is interleaved or not). + * There are v_samp_factor * DCTSIZE sample rows of each component in an * "iMCU" (interleaved MCU) row. */ @@ -406,23 +410,29 @@ JDIMENSION MCUs_per_row; /* # of MCUs across the image */ JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */ - int data_units_in_MCU; /* # of data units per MCU */ - int MCU_membership[C_MAX_DATA_UNITS_IN_MCU]; + int blocks_in_MCU; /* # of DCT blocks per MCU */ + int MCU_membership[C_MAX_BLOCKS_IN_MCU]; /* MCU_membership[i] is index in cur_comp_info of component owning */ /* i'th block in an MCU */ - int Ss, Se, Ah, Al; /* progressive/lossless JPEG parameters for scan */ + int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */ + int block_size; /* the basic DCT block size: 1..16 */ + const int * natural_order; /* natural-order position array */ + int lim_Se; /* min( Se, DCTSIZE2-1 ) */ + /* * Links to compression subobjects (methods and private variables of modules) */ struct jpeg_comp_master * master; struct jpeg_c_main_controller * main; struct jpeg_c_prep_controller * prep; - struct jpeg_c_codec * codec; + struct jpeg_c_coef_controller * coef; struct jpeg_marker_writer * marker; struct jpeg_color_converter * cconvert; struct jpeg_downsampler * downsample; + struct jpeg_forward_dct * fdct; + struct jpeg_entropy_encoder * entropy; jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */ int script_space_size; }; @@ -557,6 +567,8 @@ jpeg_component_info * comp_info; /* comp_info[i] describes component that appears i'th in SOF */ + boolean is_baseline; /* TRUE if Baseline SOF0 encountered */ + boolean progressive_mode; /* TRUE if SOFn specifies progressive mode */ boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */ UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */ @@ -593,21 +605,19 @@ /* * These fields are computed during decompression startup */ - int data_unit; /* size of data unit in samples */ - J_CODEC_PROCESS process; /* decoding process of JPEG image */ - int max_h_samp_factor; /* largest h_samp_factor */ int max_v_samp_factor; /* largest v_samp_factor */ - int min_codec_data_unit; /* smallest codec_data_unit of any component */ + int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */ + int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */ JDIMENSION total_iMCU_rows; /* # of iMCU rows in image */ - /* The codec's input and output progress is measured in units of "iMCU" - * (interleaved MCU) rows. These are the same as MCU rows in fully - * interleaved JPEG scans, but are used whether the scan is interleaved - * or not. We define an iMCU row as v_samp_factor data_unit rows of each - * component. Therefore, the codec output contains - * v_samp_factor*codec_data_unit sample rows of a component per iMCU row. + /* The coefficient controller's input and output progress is measured in + * units of "iMCU" (interleaved MCU) rows. These are the same as MCU rows + * in fully interleaved JPEG scans, but are used whether the scan is + * interleaved or not. We define an iMCU row as v_samp_factor DCT block + * rows of each component. Therefore, the IDCT output contains + * v_samp_factor*DCT_v_scaled_size sample rows of a component per iMCU row. */ JSAMPLE * sample_range_limit; /* table for fast range-limiting */ @@ -624,13 +634,19 @@ JDIMENSION MCUs_per_row; /* # of MCUs across the image */ JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */ - int data_units_in_MCU; /* # of data _units per MCU */ - int MCU_membership[D_MAX_DATA_UNITS_IN_MCU]; + int blocks_in_MCU; /* # of DCT blocks per MCU */ + int MCU_membership[D_MAX_BLOCKS_IN_MCU]; /* MCU_membership[i] is index in cur_comp_info of component owning */ - /* i'th data unit in an MCU */ + /* i'th block in an MCU */ - int Ss, Se, Ah, Al; /* progressive/lossless JPEG parms for scan */ + int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */ + /* These fields are derived from Se of first SOS marker. + */ + int block_size; /* the basic DCT block size: 1..16 */ + const int * natural_order; /* natural-order position array for entropy decode */ + int lim_Se; /* min( Se, DCTSIZE2-1 ) for entropy decode */ + /* This field is shared between entropy decoder and marker parser. * It is either zero or the code of a JPEG marker that has been * read from the data source, but has not yet been processed. @@ -642,10 +658,12 @@ */ struct jpeg_decomp_master * master; struct jpeg_d_main_controller * main; - struct jpeg_d_codec * codec; + struct jpeg_d_coef_controller * coef; struct jpeg_d_post_controller * post; struct jpeg_input_controller * inputctl; struct jpeg_marker_reader * marker; + struct jpeg_entropy_decoder * entropy; + struct jpeg_inverse_dct * idct; struct jpeg_upsampler * upsample; struct jpeg_color_deconverter * cconvert; struct jpeg_color_quantizer * cquantize; @@ -715,8 +733,10 @@ const char * const * addon_message_table; /* Non-library errors */ int first_addon_message; /* code for first string in addon table */ int last_addon_message; /* code for last string in addon table */ - + +#ifdef __HAIKU__ jmp_buf long_jump_buffer; +#endif }; @@ -776,13 +796,6 @@ typedef struct jvirt_sarray_control * jvirt_sarray_ptr; typedef struct jvirt_barray_control * jvirt_barray_ptr; -#ifdef C_LOSSLESS_SUPPORTED -#define NEED_DARRAY -#else -#ifdef D_LOSSLESS_SUPPORTED -#define NEED_DARRAY -#endif -#endif struct jpeg_memory_mgr { /* Method pointers */ @@ -796,11 +809,6 @@ JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id, JDIMENSION blocksperrow, JDIMENSION numrows)); -#ifdef NEED_DARRAY - JMETHOD(JDIFFARRAY, alloc_darray, (j_common_ptr cinfo, int pool_id, - JDIMENSION diffsperrow, - JDIMENSION numrows)); -#endif JMETHOD(jvirt_sarray_ptr, request_virt_sarray, (j_common_ptr cinfo, int pool_id, boolean pre_zero, @@ -872,14 +880,16 @@ #define jpeg_destroy_decompress jDestDecompress #define jpeg_stdio_dest jStdDest #define jpeg_stdio_src jStdSrc +#define jpeg_mem_dest jMemDest +#define jpeg_mem_src jMemSrc #define jpeg_set_defaults jSetDefaults #define jpeg_set_colorspace jSetColorspace #define jpeg_default_colorspace jDefColorspace #define jpeg_set_quality jSetQuality #define jpeg_set_linear_quality jSetLQuality +#define jpeg_default_qtables jDefQTables #define jpeg_add_quant_table jAddQuantTable #define jpeg_quality_scaling jQualityScaling -#define jpeg_simple_lossless jSimLossless #define jpeg_simple_progression jSimProgress #define jpeg_suppress_tables jSuppressTables #define jpeg_alloc_quant_table jAlcQTable @@ -887,6 +897,7 @@ #define jpeg_start_compress jStrtCompress #define jpeg_write_scanlines jWrtScanlines #define jpeg_finish_compress jFinCompress +#define jpeg_calc_jpeg_dimensions jCjpegDimensions #define jpeg_write_raw_data jWrtRawData #define jpeg_write_marker jWrtMarker #define jpeg_write_m_header jWrtMHeader @@ -903,6 +914,7 @@ #define jpeg_input_complete jInComplete #define jpeg_new_colormap jNewCMap #define jpeg_consume_input jConsumeInput +#define jpeg_core_output_dimensions jCoreDimensions #define jpeg_calc_output_dimensions jCalcDimensions #define jpeg_save_markers jSaveMarkers #define jpeg_set_marker_processor jSetMarker @@ -947,6 +959,14 @@ EXTERN(void) jpeg_stdio_dest JPP((j_compress_ptr cinfo, FILE * outfile)); EXTERN(void) jpeg_stdio_src JPP((j_decompress_ptr cinfo, FILE * infile)); +/* Data source and destination managers: memory buffers. */ +EXTERN(void) jpeg_mem_dest JPP((j_compress_ptr cinfo, + unsigned char ** outbuffer, + unsigned long * outsize)); +EXTERN(void) jpeg_mem_src JPP((j_decompress_ptr cinfo, + unsigned char * inbuffer, + unsigned long insize)); + /* Default parameter setup for compression */ EXTERN(void) jpeg_set_defaults JPP((j_compress_ptr cinfo)); /* Compression parameter setup aids */ @@ -958,13 +978,13 @@ EXTERN(void) jpeg_set_linear_quality JPP((j_compress_ptr cinfo, int scale_factor, boolean force_baseline)); +EXTERN(void) jpeg_default_qtables JPP((j_compress_ptr cinfo, + boolean force_baseline)); EXTERN(void) jpeg_add_quant_table JPP((j_compress_ptr cinfo, int which_tbl, const unsigned int *basic_table, int scale_factor, boolean force_baseline)); EXTERN(int) jpeg_quality_scaling JPP((int quality)); -EXTERN(void) jpeg_simple_lossless JPP((j_compress_ptr cinfo, - int predictor, int point_transform)); EXTERN(void) jpeg_simple_progression JPP((j_compress_ptr cinfo)); EXTERN(void) jpeg_suppress_tables JPP((j_compress_ptr cinfo, boolean suppress)); @@ -979,12 +999,15 @@ JDIMENSION num_lines)); EXTERN(void) jpeg_finish_compress JPP((j_compress_ptr cinfo)); +/* Precalculate JPEG dimensions for current compression parameters. */ +EXTERN(void) jpeg_calc_jpeg_dimensions JPP((j_compress_ptr cinfo)); + /* Replaces jpeg_write_scanlines when writing raw downsampled data. */ EXTERN(JDIMENSION) jpeg_write_raw_data JPP((j_compress_ptr cinfo, JSAMPIMAGE data, JDIMENSION num_lines)); -/* Write a special marker. See libjpeg.doc concerning safe usage. */ +/* Write a special marker. See libjpeg.txt concerning safe usage. */ EXTERN(void) jpeg_write_marker JPP((j_compress_ptr cinfo, int marker, const JOCTET * dataptr, unsigned int datalen)); @@ -1038,6 +1061,7 @@ #define JPEG_SCAN_COMPLETED 4 /* Completed last iMCU row of a scan */ /* Precalculate output dimensions for current decompression parameters. */ +EXTERN(void) jpeg_core_output_dimensions JPP((j_decompress_ptr cinfo)); EXTERN(void) jpeg_calc_output_dimensions JPP((j_decompress_ptr cinfo)); /* Control saving of COM and APPn markers into marker_list. */ @@ -1119,9 +1143,6 @@ #endif /* JPEG_INTERNALS */ #endif /* INCOMPLETE_TYPES_BROKEN */ -#ifdef __cplusplus -} -#endif /* * The JPEG library modules define JPEG_INTERNALS before including this file. @@ -1135,4 +1156,10 @@ #include "jerror.h" /* fetch error codes too */ #endif +#ifdef __cplusplus +#ifndef DONT_USE_EXTERN_C +} +#endif +#endif + #endif /* JPEGLIB_H */ Modified: haiku/trunk/src/add-ons/translators/jpeg/JPEGTranslator.cpp =================================================================== --- haiku/trunk/src/add-ons/translators/jpeg/JPEGTranslator.cpp 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/src/add-ons/translators/jpeg/JPEGTranslator.cpp 2010-01-27 01:57:51 UTC (rev 35312) @@ -55,7 +55,7 @@ "©2002-2003, Marcin Konicki\n" "©2005-2007, Haiku\n" "\n" - "Based on IJG library © 1991-1998, Thomas G. Lane\n" + "Based on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n" " http://www.ijg.org/files/\n"; "with \"lossless\" encoding support patch by Ken Murchison\n" " http://www.oceana.com/ftp/ljpeg/\n"; Modified: haiku/trunk/src/add-ons/translators/jpeg/Jamfile =================================================================== --- haiku/trunk/src/add-ons/translators/jpeg/Jamfile 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/src/add-ons/translators/jpeg/Jamfile 2010-01-27 01:57:51 UTC (rev 35312) @@ -14,7 +14,7 @@ exif_parser.cpp JPEGTranslator.cpp - : be translation libjpeg.a $(TARGET_LIBSTDC++) + : be translation libjpeg.so $(TARGET_LIBSTDC++) : true ; Modified: haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp =================================================================== --- haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp 2010-01-27 01:57:51 UTC (rev 35312) @@ -1212,6 +1212,13 @@ "Randers-Pehrson.")); // TODO: License! + // libjpeg copyrights + _AddPackageCredit(PackageCredit("libjpeg") + .SetCopyright(COPYRIGHT_STRING " 1994-2009, Thomas G. Lane," + " Guido Vollbeding. This software is based in part on the " + "work of the Independent JPEG Group")); + // TODO: License! + // libprint copyrights _AddPackageCredit(PackageCredit("libprint") .SetCopyright(COPYRIGHT_STRING Modified: haiku/trunk/src/libs/jpeg/Jamfile =================================================================== --- haiku/trunk/src/libs/jpeg/Jamfile 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/src/libs/jpeg/Jamfile 2010-01-27 01:57:51 UTC (rev 35312) @@ -5,53 +5,39 @@ UseLibraryHeaders jpeg ; local jpeg_files = + jaricom.c jcapimin.c jcapistd.c + jcarith.c jccoefct.c jccolor.c jcdctmgr.c - jcdiffct.c jchuff.c jcinit.c - jclhuff.c - jclossls.c - jclossy.c jcmainct.c jcmarker.c jcmaster.c - jcodec.c jcomapi.c jcparam.c - jcphuff.c - jcpred.c jcprepct.c jcsample.c - jcscale.c - jcshuff.c jctrans.c jdapimin.c jdapistd.c + jdarith.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c - jddiffct.c jdhuff.c jdinput.c - jdlhuff.c - jdlossls.c - jdlossy.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c - jdphuff.c jdpostct.c - jdpred.c jdsample.c - jdscale.c - jdshuff.c jdtrans.c jerror.c jfdctflt.c @@ -60,12 +46,11 @@ jidctflt.c jidctfst.c jidctint.c - jidctred.c - jmemmgr.c - jmemnobs.c jquant1.c jquant2.c jutils.c + jmemmgr.c + jmemname.c ; ObjectCcFlags [ FGristFiles $(jpeg_files:S=$(SUFOBJ)) ] : -w ; Modified: haiku/trunk/src/libs/jpeg/README =================================================================== --- haiku/trunk/src/libs/jpeg/README 2010-01-27 00:44:39 UTC (rev 35311) +++ haiku/trunk/src/libs/jpeg/README 2010-01-27 01:57:51 UTC (rev 35312) @@ -1,23 +1,18 @@ The Independent JPEG Group's JPEG software ========================================== -README for release 6b of 27-Mar-1998 -==================================== +README for release 8 of 10-Jan-2010 +=================================== -This distribution contains the sixth public release of the Independent JPEG +This distribution contains the eighth public release of the Independent JPEG Group's free JPEG software. You are welcome to redistribute this software and to use it for any purpose, subject to the conditions under LEGAL ISSUES, below. -Serious users of this software (particularly those incorporating it into -larger programs) should contact IJG at jpeg-info@xxxxxxxxxxxx to be added to -our electronic mailing list. Mailing list members are notified of updates -and have a chance to participate in technical discussions, etc. +This software is the work of Tom Lane, Guido Vollbeding, Philip Gladstone, +Bill Allombert, Jim Boucher, Lee Crocker, Bob Friesenhahn, Ben Jackson, +Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers, +and other members of the Independent JPEG Group. -This software is the work of Tom Lane, Philip Gladstone, Jim Boucher, -Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, -Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG -Group. - IJG is not affiliated with the official ISO JPEG standards committee. @@ -30,27 +25,27 @@ LEGAL ISSUES Copyright, lack of warranty, terms of distribution. REFERENCES Where to learn more about JPEG. ARCHIVE LOCATIONS Where to find newer versions of this software. -RELATED SOFTWARE Other stuff you should get. +ACKNOWLEDGMENTS Special thanks. FILE FORMAT WARS Software *not* to get. TO DO Plans for future IJG releases. Other documentation files in the distribution are: User documentation: - install.doc How to configure and install the IJG software. - usage.doc Usage instructions for cjpeg, djpeg, jpegtran, + install.txt How to configure and install the IJG software. + usage.txt Usage instructions for cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom. - *.1 Unix-style man pages for programs (same info as usage.doc). - wizard.doc Advanced usage instructions for JPEG wizards only. + *.1 Unix-style man pages for programs (same info as usage.txt). + wizard.txt Advanced usage instructions for JPEG wizards only. change.log Version-to-version change highlights. Programmer and internal documentation: - libjpeg.doc How to use the JPEG library in your own programs. + libjpeg.txt How to use the JPEG library in your own programs. example.c Sample code for calling the JPEG library. - structure.doc Overview of the JPEG library's internal structure. - filelist.doc Road map of IJG files. - coderules.doc Coding style rules --- please read if you contribute code. + structure.txt Overview of the JPEG library's internal structure. + filelist.txt Road map of IJG files. + coderules.txt Coding style rules --- please read if you contribute code. -Please read at least the files install.doc and usage.doc. Useful information +Please read at least the files install.txt and usage.txt. Some information can also be found in the JPEG FAQ (Frequently Asked Questions) article. See ARCHIVE LOCATIONS below to find out where to obtain the FAQ article. @@ -62,24 +57,15 @@ OVERVIEW ======== -This package contains C software to implement JPEG image compression and -decompression. JPEG (pronounced "jay-peg") is a standardized compression -method for full-color and gray-scale images. JPEG is intended for compressing -"real-world" scenes; line drawings, cartoons and other non-realistic images -are not its strong suit. JPEG is lossy, meaning that the output image is not -exactly identical to the input image. Hence you must not use JPEG if you -have to have identical output bits. However, on typical photographic images, -very good compression levels can be obtained with no visible change, and -remarkably high compression levels are possible if you can tolerate a -low-quality image. For more details, see the references, or just experiment -with various compression settings. +This package contains C software to implement JPEG image encoding, decoding, +and transcoding. JPEG (pronounced "jay-peg") is a standardized compression +method for full-color and gray-scale images. -This software implements JPEG baseline, extended-sequential, progressive -and lossless compression processes. Provision is made for supporting all -variants of these processes, although some uncommon parameter settings aren't -implemented yet. For legal reasons, we are not distributing code for the -arithmetic-coding variants of JPEG; see LEGAL ISSUES. We have made no -provision for supporting the hierarchical processes defined in the standard. +This software implements JPEG baseline, extended-sequential, and progressive +compression processes. Provision is made for supporting all variants of these +processes, although some uncommon parameter settings aren't implemented yet. +We have made no provision for supporting the hierarchical or lossless +processes defined in the standard. We provide a set of library routines for reading and writing JPEG image files, plus two sample applications "cjpeg" and "djpeg", which use the library to @@ -91,11 +77,12 @@ for example, the color quantization modules are not strictly part of JPEG decoding, but they are essential for output to colormapped file formats or colormapped displays. These extra functions can be compiled out of the -library if not required for a particular application. We have also included -"jpegtran", a utility for lossless transcoding between different JPEG -processes, and "rdjpgcom" and "wrjpgcom", two simple applications for -inserting and extracting textual comments in JFIF files. +library if not required for a particular application. +We have also included "jpegtran", a utility for lossless transcoding between +different JPEG processes, and "rdjpgcom" and "wrjpgcom", two simple +applications for inserting and extracting textual comments in JFIF files. + The emphasis in designing this software has been on achieving portability and flexibility, while also making it fast enough to be useful. In particular, the software is not intended to be read as a tutorial on JPEG. (See the @@ -127,7 +114,7 @@ fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. -This software is copyright (C) 1991-1998, Thomas G. Lane. +This software is copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding. [... truncated: 20824 lines follow ...]