17dd7cddfSDavid du ColombierCHANGE LOG for Independent JPEG Group's JPEG software 27dd7cddfSDavid du Colombier 37dd7cddfSDavid du Colombier 4*593dc095SDavid du ColombierVersion 6b 27-Mar-1998 5*593dc095SDavid du Colombier----------------------- 6*593dc095SDavid du Colombier 7*593dc095SDavid du Colombierjpegtran has new features for lossless image transformations (rotation 8*593dc095SDavid du Colombierand flipping) as well as "lossless" reduction to grayscale. 9*593dc095SDavid du Colombier 10*593dc095SDavid du Colombierjpegtran now copies comments by default; it has a -copy switch to enable 11*593dc095SDavid du Colombiercopying all APPn blocks as well, or to suppress comments. (Formerly it 12*593dc095SDavid du Colombieralways suppressed comments and APPn blocks.) jpegtran now also preserves 13*593dc095SDavid du ColombierJFIF version and resolution information. 14*593dc095SDavid du Colombier 15*593dc095SDavid du ColombierNew decompressor library feature: COM and APPn markers found in the input 16*593dc095SDavid du Colombierfile can be saved in memory for later use by the application. (Before, 17*593dc095SDavid du Colombieryou had to code this up yourself with a custom marker processor.) 18*593dc095SDavid du Colombier 19*593dc095SDavid du ColombierThere is an unused field "void * client_data" now in compress and decompress 20*593dc095SDavid du Colombierparameter structs; this may be useful in some applications. 21*593dc095SDavid du Colombier 22*593dc095SDavid du ColombierJFIF version number information is now saved by the decoder and accepted by 23*593dc095SDavid du Colombierthe encoder. jpegtran uses this to copy the source file's version number, 24*593dc095SDavid du Colombierto ensure "jpegtran -copy all" won't create bogus files that contain JFXX 25*593dc095SDavid du Colombierextensions but claim to be version 1.01. Applications that generate their 26*593dc095SDavid du Colombierown JFXX extension markers also (finally) have a supported way to cause the 27*593dc095SDavid du Colombierencoder to emit JFIF version number 1.02. 28*593dc095SDavid du Colombier 29*593dc095SDavid du Colombierdjpeg's trace mode reports JFIF 1.02 thumbnail images as such, rather 30*593dc095SDavid du Colombierthan as unknown APP0 markers. 31*593dc095SDavid du Colombier 32*593dc095SDavid du ColombierIn -verbose mode, djpeg and rdjpgcom will try to print the contents of 33*593dc095SDavid du ColombierAPP12 markers as text. Some digital cameras store useful text information 34*593dc095SDavid du Colombierin APP12 markers. 35*593dc095SDavid du Colombier 36*593dc095SDavid du ColombierHandling of truncated data streams is more robust: blocks beyond the one in 37*593dc095SDavid du Colombierwhich the error occurs will be output as uniform gray, or left unchanged 38*593dc095SDavid du Colombierif decoding a progressive JPEG. The appearance no longer depends on the 39*593dc095SDavid du ColombierHuffman tables being used. 40*593dc095SDavid du Colombier 41*593dc095SDavid du ColombierHuffman tables are checked for validity much more carefully than before. 42*593dc095SDavid du Colombier 43*593dc095SDavid du ColombierTo avoid the Unisys LZW patent, djpeg's GIF output capability has been 44*593dc095SDavid du Colombierchanged to produce "uncompressed GIFs", and cjpeg's GIF input capability 45*593dc095SDavid du Colombierhas been removed altogether. We're not happy about it either, but there 46*593dc095SDavid du Colombierseems to be no good alternative. 47*593dc095SDavid du Colombier 48*593dc095SDavid du ColombierThe configure script now supports building libjpeg as a shared library 49*593dc095SDavid du Colombieron many flavors of Unix (all the ones that GNU libtool knows how to 50*593dc095SDavid du Colombierbuild shared libraries for). Use "./configure --enable-shared" to 51*593dc095SDavid du Colombiertry this out. 52*593dc095SDavid du Colombier 53*593dc095SDavid du ColombierNew jconfig file and makefiles for Microsoft Visual C++ and Developer Studio. 54*593dc095SDavid du ColombierAlso, a jconfig file and a build script for Metrowerks CodeWarrior 55*593dc095SDavid du Colombieron Apple Macintosh. makefile.dj has been updated for DJGPP v2, and there 56*593dc095SDavid du Colombierare miscellaneous other minor improvements in the makefiles. 57*593dc095SDavid du Colombier 58*593dc095SDavid du Colombierjmemmac.c now knows how to create temporary files following Mac System 7 59*593dc095SDavid du Colombierconventions. 60*593dc095SDavid du Colombier 61*593dc095SDavid du Colombierdjpeg's -map switch is now able to read raw-format PPM files reliably. 62*593dc095SDavid du Colombier 63*593dc095SDavid du Colombiercjpeg -progressive -restart no longer generates any unnecessary DRI markers. 64*593dc095SDavid du Colombier 65*593dc095SDavid du ColombierMultiple calls to jpeg_simple_progression for a single JPEG object 66*593dc095SDavid du Colombierno longer leak memory. 67*593dc095SDavid du Colombier 68*593dc095SDavid du Colombier 697dd7cddfSDavid du ColombierVersion 6a 7-Feb-96 707dd7cddfSDavid du Colombier-------------------- 717dd7cddfSDavid du Colombier 727dd7cddfSDavid du ColombierLibrary initialization sequence modified to detect version mismatches 737dd7cddfSDavid du Colombierand struct field packing mismatches between library and calling application. 747dd7cddfSDavid du ColombierThis change requires applications to be recompiled, but does not require 757dd7cddfSDavid du Colombierany application source code change. 767dd7cddfSDavid du Colombier 777dd7cddfSDavid du ColombierAll routine declarations changed to the style "GLOBAL(type) name ...", 787dd7cddfSDavid du Colombierthat is, GLOBAL, LOCAL, METHODDEF, EXTERN are now macros taking the 797dd7cddfSDavid du Colombierroutine's return type as an argument. This makes it possible to add 807dd7cddfSDavid du ColombierMicrosoft-style linkage keywords to all the routines by changing just 817dd7cddfSDavid du Colombierthese macros. Note that any application code that was using these macros 827dd7cddfSDavid du Colombierwill have to be changed. 837dd7cddfSDavid du Colombier 847dd7cddfSDavid du ColombierDCT coefficient quantization tables are now stored in normal array order 857dd7cddfSDavid du Colombierrather than zigzag order. Application code that calls jpeg_add_quant_table, 867dd7cddfSDavid du Colombieror otherwise manipulates quantization tables directly, will need to be 877dd7cddfSDavid du Colombierchanged. If you need to make such code work with either older or newer 887dd7cddfSDavid du Colombierversions of the library, a test like "#if JPEG_LIB_VERSION >= 61" is 897dd7cddfSDavid du Colombierrecommended. 907dd7cddfSDavid du Colombier 917dd7cddfSDavid du Colombierdjpeg's trace capability now dumps DQT tables in natural order, not zigzag 927dd7cddfSDavid du Colombierorder. This allows the trace output to be made into a "-qtables" file 937dd7cddfSDavid du Colombiermore easily. 947dd7cddfSDavid du Colombier 957dd7cddfSDavid du ColombierNew system-dependent memory manager module for use on Apple Macintosh. 967dd7cddfSDavid du Colombier 977dd7cddfSDavid du ColombierFix bug in cjpeg's -smooth option: last one or two scanlines would be 987dd7cddfSDavid du Colombierduplicates of the prior line unless the image height mod 16 was 1 or 2. 997dd7cddfSDavid du Colombier 1007dd7cddfSDavid du ColombierRepair minor problems in VMS, BCC, MC6 makefiles. 1017dd7cddfSDavid du Colombier 1027dd7cddfSDavid du ColombierNew configure script based on latest GNU Autoconf. 1037dd7cddfSDavid du Colombier 1047dd7cddfSDavid du ColombierCorrect the list of include files needed by MetroWerks C for ccommand(). 1057dd7cddfSDavid du Colombier 1067dd7cddfSDavid du ColombierNumerous small documentation updates. 1077dd7cddfSDavid du Colombier 1087dd7cddfSDavid du Colombier 1097dd7cddfSDavid du ColombierVersion 6 2-Aug-95 1107dd7cddfSDavid du Colombier------------------- 1117dd7cddfSDavid du Colombier 1127dd7cddfSDavid du ColombierProgressive JPEG support: library can read and write full progressive JPEG 1137dd7cddfSDavid du Colombierfiles. A "buffered image" mode supports incremental decoding for on-the-fly 1147dd7cddfSDavid du Colombierdisplay of progressive images. Simply recompiling an existing IJG-v5-based 1157dd7cddfSDavid du Colombierdecoder with v6 should allow it to read progressive files, though of course 1167dd7cddfSDavid du Colombierwithout any special progressive display. 1177dd7cddfSDavid du Colombier 1187dd7cddfSDavid du ColombierNew "jpegtran" application performs lossless transcoding between different 1197dd7cddfSDavid du ColombierJPEG formats; primarily, it can be used to convert baseline to progressive 1207dd7cddfSDavid du ColombierJPEG and vice versa. In support of jpegtran, the library now allows lossless 1217dd7cddfSDavid du Colombierreading and writing of JPEG files as DCT coefficient arrays. This ability 1227dd7cddfSDavid du Colombiermay be of use in other applications. 1237dd7cddfSDavid du Colombier 1247dd7cddfSDavid du ColombierNotes for programmers: 1257dd7cddfSDavid du Colombier* We changed jpeg_start_decompress() to be able to suspend; this makes all 1267dd7cddfSDavid du Colombierdecoding modes available to suspending-input applications. However, 1277dd7cddfSDavid du Colombierexisting applications that use suspending input will need to be changed 1287dd7cddfSDavid du Colombierto check the return value from jpeg_start_decompress(). You don't need to 1297dd7cddfSDavid du Colombierdo anything if you don't use a suspending data source. 1307dd7cddfSDavid du Colombier* We changed the interface to the virtual array routines: access_virt_array 1317dd7cddfSDavid du Colombierroutines now take a count of the number of rows to access this time. The 1327dd7cddfSDavid du Colombierlast parameter to request_virt_array routines is now interpreted as the 1337dd7cddfSDavid du Colombiermaximum number of rows that may be accessed at once, but not necessarily 1347dd7cddfSDavid du Colombierthe height of every access. 1357dd7cddfSDavid du Colombier 1367dd7cddfSDavid du Colombier 1377dd7cddfSDavid du ColombierVersion 5b 15-Mar-95 1387dd7cddfSDavid du Colombier--------------------- 1397dd7cddfSDavid du Colombier 1407dd7cddfSDavid du ColombierCorrect bugs with grayscale images having v_samp_factor > 1. 1417dd7cddfSDavid du Colombier 1427dd7cddfSDavid du Colombierjpeg_write_raw_data() now supports output suspension. 1437dd7cddfSDavid du Colombier 1447dd7cddfSDavid du ColombierCorrect bugs in "configure" script for case of compiling in 1457dd7cddfSDavid du Colombiera directory other than the one containing the source files. 1467dd7cddfSDavid du Colombier 1477dd7cddfSDavid du ColombierRepair bug in jquant1.c: sometimes didn't use as many colors as it could. 1487dd7cddfSDavid du Colombier 1497dd7cddfSDavid du ColombierBorland C makefile and jconfig file work under either MS-DOS or OS/2. 1507dd7cddfSDavid du Colombier 1517dd7cddfSDavid du ColombierMiscellaneous improvements to documentation. 1527dd7cddfSDavid du Colombier 1537dd7cddfSDavid du Colombier 1547dd7cddfSDavid du ColombierVersion 5a 7-Dec-94 1557dd7cddfSDavid du Colombier-------------------- 1567dd7cddfSDavid du Colombier 1577dd7cddfSDavid du ColombierChanged color conversion roundoff behavior so that grayscale values are 1587dd7cddfSDavid du Colombierrepresented exactly. (This causes test image files to change.) 1597dd7cddfSDavid du Colombier 1607dd7cddfSDavid du ColombierMake ordered dither use 16x16 instead of 4x4 pattern for a small quality 1617dd7cddfSDavid du Colombierimprovement. 1627dd7cddfSDavid du Colombier 1637dd7cddfSDavid du ColombierNew configure script based on latest GNU Autoconf. 1647dd7cddfSDavid du ColombierFix configure script to handle CFLAGS correctly. 1657dd7cddfSDavid du ColombierRename *.auto files to *.cfg, so that configure script still works if 1667dd7cddfSDavid du Colombierfile names have been truncated for DOS. 1677dd7cddfSDavid du Colombier 1687dd7cddfSDavid du ColombierFix bug in rdbmp.c: didn't allow for extra data between header and image. 1697dd7cddfSDavid du Colombier 1707dd7cddfSDavid du ColombierModify rdppm.c/wrppm.c to handle 2-byte raw PPM/PGM formats for 12-bit data. 1717dd7cddfSDavid du Colombier 1727dd7cddfSDavid du ColombierFix several bugs in rdrle.c. 1737dd7cddfSDavid du Colombier 1747dd7cddfSDavid du ColombierNEED_SHORT_EXTERNAL_NAMES option was broken. 1757dd7cddfSDavid du Colombier 1767dd7cddfSDavid du ColombierRevise jerror.h/jerror.c for more flexibility in message table. 1777dd7cddfSDavid du Colombier 1787dd7cddfSDavid du ColombierRepair oversight in jmemname.c NO_MKTEMP case: file could be there 1797dd7cddfSDavid du Colombierbut unreadable. 1807dd7cddfSDavid du Colombier 1817dd7cddfSDavid du Colombier 1827dd7cddfSDavid du ColombierVersion 5 24-Sep-94 1837dd7cddfSDavid du Colombier-------------------- 1847dd7cddfSDavid du Colombier 1857dd7cddfSDavid du ColombierVersion 5 represents a nearly complete redesign and rewrite of the IJG 1867dd7cddfSDavid du Colombiersoftware. Major user-visible changes include: 1877dd7cddfSDavid du Colombier * Automatic configuration simplifies installation for most Unix systems. 1887dd7cddfSDavid du Colombier * A range of speed vs. image quality tradeoffs are supported. 1897dd7cddfSDavid du Colombier This includes resizing of an image during decompression: scaling down 1907dd7cddfSDavid du Colombier by a factor of 1/2, 1/4, or 1/8 is handled very efficiently. 1917dd7cddfSDavid du Colombier * New programs rdjpgcom and wrjpgcom allow insertion and extraction 1927dd7cddfSDavid du Colombier of text comments in a JPEG file. 1937dd7cddfSDavid du Colombier 1947dd7cddfSDavid du ColombierThe application programmer's interface to the library has changed completely. 1957dd7cddfSDavid du ColombierNotable improvements include: 1967dd7cddfSDavid du Colombier * We have eliminated the use of callback routines for handling the 1977dd7cddfSDavid du Colombier uncompressed image data. The application now sees the library as a 1987dd7cddfSDavid du Colombier set of routines that it calls to read or write image data on a 1997dd7cddfSDavid du Colombier scanline-by-scanline basis. 2007dd7cddfSDavid du Colombier * The application image data is represented in a conventional interleaved- 2017dd7cddfSDavid du Colombier pixel format, rather than as a separate array for each color channel. 2027dd7cddfSDavid du Colombier This can save a copying step in many programs. 2037dd7cddfSDavid du Colombier * The handling of compressed data has been cleaned up: the application can 2047dd7cddfSDavid du Colombier supply routines to source or sink the compressed data. It is possible to 2057dd7cddfSDavid du Colombier suspend processing on source/sink buffer overrun, although this is not 2067dd7cddfSDavid du Colombier supported in all operating modes. 2077dd7cddfSDavid du Colombier * All static state has been eliminated from the library, so that multiple 2087dd7cddfSDavid du Colombier instances of compression or decompression can be active concurrently. 2097dd7cddfSDavid du Colombier * JPEG abbreviated datastream formats are supported, ie, quantization and 2107dd7cddfSDavid du Colombier Huffman tables can be stored separately from the image data. 2117dd7cddfSDavid du Colombier * And not only that, but the documentation of the library has improved 2127dd7cddfSDavid du Colombier considerably! 2137dd7cddfSDavid du Colombier 2147dd7cddfSDavid du Colombier 2157dd7cddfSDavid du ColombierThe last widely used release before the version 5 rewrite was version 4A of 2167dd7cddfSDavid du Colombier18-Feb-93. Change logs before that point have been discarded, since they 2177dd7cddfSDavid du Colombierare not of much interest after the rewrite. 218