xref: /plan9/sys/src/cmd/gs/jpeg/change.log (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
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