blob: c6e939960202a52dba5e2646a1d69c334731c0bf [file] [log] [blame]
Thomas G. Lane36a4ccc1994-09-24 00:00:00 +00001CHANGE LOG for Independent JPEG Group's JPEG software
2
3
Guido Vollbedinga4ecaac2010-05-16 00:00:00 +00004Version 8b 16-May-2010
5-----------------------
6
7Repair problem in new memory source manager with corrupt JPEG data.
8Thank to Ted Campbell and Samuel Chun for the report.
9
Guido Vollbedinga4ecaac2010-05-16 00:00:00 +000010
Guido Vollbedingf18f81b2010-02-28 00:00:00 +000011Version 8a 28-Feb-2010
12-----------------------
13
14Writing tables-only datastreams via jpeg_write_tables works again.
15
16Support 32-bit BMPs (RGB image with Alpha channel) for read in cjpeg.
17Thank to Brett Blackham for the suggestion.
18
Guido Vollbedingf18f81b2010-02-28 00:00:00 +000019
Guido Vollbeding989630f2010-01-10 00:00:00 +000020Version 8 10-Jan-2010
21----------------------
22
Guido Vollbeding989630f2010-01-10 00:00:00 +000023Add sanity check in BMP reader module to avoid cjpeg crash for empty input
24image (thank to Isaev Ildar of ISP RAS, Moscow, RU for reporting this error).
25
26Add data source and destination managers for read from and write to
27memory buffers. New API functions jpeg_mem_src and jpeg_mem_dest.
28Thank to Roberto Boni from Italy for the suggestion.
29
30
Guido Vollbeding5996a252009-06-27 00:00:00 +000031Version 7 27-Jun-2009
32----------------------
33
Guido Vollbeding5996a252009-06-27 00:00:00 +000034cjpeg -quality option has been extended for support of separate quality
35settings for luminance and chrominance (or in general, for every provided
36quantization table slot).
37New API function jpeg_default_qtables() and q_scale_factor array in library.
38
Guido Vollbeding5996a252009-06-27 00:00:00 +000039jpegtran has a new "lossless" cropping feature.
40
41Implement -perfect option in jpegtran, new API function
42jtransform_perfect_transform() in transupp. (DP 204_perfect.dpatch)
43
44Better error messages for jpegtran fopen failure.
45(DP 203_jpegtran_errmsg.dpatch)
46
47Fix byte order issue with 16bit PPM/PGM files in rdppm.c/wrppm.c:
48according to Netpbm, the de facto standard implementation of the PNM formats,
49the most significant byte is first. (DP 203_rdppm.dpatch)
50
51Add -raw option to rdjpgcom not to mangle the output.
52(DP 205_rdjpgcom_raw.dpatch)
53
54Make rdjpgcom locale aware. (DP 201_rdjpgcom_locale.dpatch)
55
56Add extern "C" to jpeglib.h.
57This avoids the need to put extern "C" { ... } around #include "jpeglib.h"
58in your C++ application. Defining the symbol DONT_USE_EXTERN_C in the
59configuration prevents this. (DP 202_jpeglib.h_c++.dpatch)
60
61
Thomas G. Lane5ead57a1998-03-27 00:00:00 +000062Version 6b 27-Mar-1998
63-----------------------
64
65jpegtran has new features for lossless image transformations (rotation
66and flipping) as well as "lossless" reduction to grayscale.
67
68jpegtran now copies comments by default; it has a -copy switch to enable
69copying all APPn blocks as well, or to suppress comments. (Formerly it
70always suppressed comments and APPn blocks.) jpegtran now also preserves
71JFIF version and resolution information.
72
73New decompressor library feature: COM and APPn markers found in the input
74file can be saved in memory for later use by the application. (Before,
75you had to code this up yourself with a custom marker processor.)
76
77There is an unused field "void * client_data" now in compress and decompress
78parameter structs; this may be useful in some applications.
79
80JFIF version number information is now saved by the decoder and accepted by
81the encoder. jpegtran uses this to copy the source file's version number,
82to ensure "jpegtran -copy all" won't create bogus files that contain JFXX
83extensions but claim to be version 1.01. Applications that generate their
84own JFXX extension markers also (finally) have a supported way to cause the
85encoder to emit JFIF version number 1.02.
86
87djpeg's trace mode reports JFIF 1.02 thumbnail images as such, rather
88than as unknown APP0 markers.
89
90In -verbose mode, djpeg and rdjpgcom will try to print the contents of
91APP12 markers as text. Some digital cameras store useful text information
92in APP12 markers.
93
94Handling of truncated data streams is more robust: blocks beyond the one in
95which the error occurs will be output as uniform gray, or left unchanged
96if decoding a progressive JPEG. The appearance no longer depends on the
97Huffman tables being used.
98
99Huffman tables are checked for validity much more carefully than before.
100
101To avoid the Unisys LZW patent, djpeg's GIF output capability has been
102changed to produce "uncompressed GIFs", and cjpeg's GIF input capability
103has been removed altogether. We're not happy about it either, but there
104seems to be no good alternative.
105
106The configure script now supports building libjpeg as a shared library
107on many flavors of Unix (all the ones that GNU libtool knows how to
108build shared libraries for). Use "./configure --enable-shared" to
109try this out.
110
111New jconfig file and makefiles for Microsoft Visual C++ and Developer Studio.
112Also, a jconfig file and a build script for Metrowerks CodeWarrior
113on Apple Macintosh. makefile.dj has been updated for DJGPP v2, and there
114are miscellaneous other minor improvements in the makefiles.
115
116jmemmac.c now knows how to create temporary files following Mac System 7
117conventions.
118
119djpeg's -map switch is now able to read raw-format PPM files reliably.
120
121cjpeg -progressive -restart no longer generates any unnecessary DRI markers.
122
123Multiple calls to jpeg_simple_progression for a single JPEG object
124no longer leak memory.
125
126
Thomas G. Lane489583f1996-02-07 00:00:00 +0000127Version 6a 7-Feb-96
128--------------------
129
130Library initialization sequence modified to detect version mismatches
131and struct field packing mismatches between library and calling application.
132This change requires applications to be recompiled, but does not require
133any application source code change.
134
135All routine declarations changed to the style "GLOBAL(type) name ...",
136that is, GLOBAL, LOCAL, METHODDEF, EXTERN are now macros taking the
137routine's return type as an argument. This makes it possible to add
138Microsoft-style linkage keywords to all the routines by changing just
139these macros. Note that any application code that was using these macros
140will have to be changed.
141
142DCT coefficient quantization tables are now stored in normal array order
143rather than zigzag order. Application code that calls jpeg_add_quant_table,
144or otherwise manipulates quantization tables directly, will need to be
145changed. If you need to make such code work with either older or newer
146versions of the library, a test like "#if JPEG_LIB_VERSION >= 61" is
147recommended.
148
149djpeg's trace capability now dumps DQT tables in natural order, not zigzag
150order. This allows the trace output to be made into a "-qtables" file
151more easily.
152
153New system-dependent memory manager module for use on Apple Macintosh.
154
155Fix bug in cjpeg's -smooth option: last one or two scanlines would be
156duplicates of the prior line unless the image height mod 16 was 1 or 2.
157
158Repair minor problems in VMS, BCC, MC6 makefiles.
159
160New configure script based on latest GNU Autoconf.
161
162Correct the list of include files needed by MetroWerks C for ccommand().
163
164Numerous small documentation updates.
165
166
Thomas G. Lanebc79e061995-08-02 00:00:00 +0000167Version 6 2-Aug-95
168-------------------
169
170Progressive JPEG support: library can read and write full progressive JPEG
171files. A "buffered image" mode supports incremental decoding for on-the-fly
172display of progressive images. Simply recompiling an existing IJG-v5-based
173decoder with v6 should allow it to read progressive files, though of course
174without any special progressive display.
175
176New "jpegtran" application performs lossless transcoding between different
177JPEG formats; primarily, it can be used to convert baseline to progressive
178JPEG and vice versa. In support of jpegtran, the library now allows lossless
179reading and writing of JPEG files as DCT coefficient arrays. This ability
180may be of use in other applications.
181
182Notes for programmers:
183* We changed jpeg_start_decompress() to be able to suspend; this makes all
184decoding modes available to suspending-input applications. However,
185existing applications that use suspending input will need to be changed
186to check the return value from jpeg_start_decompress(). You don't need to
187do anything if you don't use a suspending data source.
188* We changed the interface to the virtual array routines: access_virt_array
189routines now take a count of the number of rows to access this time. The
190last parameter to request_virt_array routines is now interpreted as the
191maximum number of rows that may be accessed at once, but not necessarily
192the height of every access.
193
194
Thomas G. Lanea8b67c41995-03-15 00:00:00 +0000195Version 5b 15-Mar-95
196---------------------
197
198Correct bugs with grayscale images having v_samp_factor > 1.
199
200jpeg_write_raw_data() now supports output suspension.
201
202Correct bugs in "configure" script for case of compiling in
203a directory other than the one containing the source files.
204
205Repair bug in jquant1.c: sometimes didn't use as many colors as it could.
206
207Borland C makefile and jconfig file work under either MS-DOS or OS/2.
208
209Miscellaneous improvements to documentation.
210
211
Thomas G. Lane9ba2f5e1994-12-07 00:00:00 +0000212Version 5a 7-Dec-94
213--------------------
214
215Changed color conversion roundoff behavior so that grayscale values are
216represented exactly. (This causes test image files to change.)
217
218Make ordered dither use 16x16 instead of 4x4 pattern for a small quality
219improvement.
220
221New configure script based on latest GNU Autoconf.
222Fix configure script to handle CFLAGS correctly.
223Rename *.auto files to *.cfg, so that configure script still works if
224file names have been truncated for DOS.
225
226Fix bug in rdbmp.c: didn't allow for extra data between header and image.
227
228Modify rdppm.c/wrppm.c to handle 2-byte raw PPM/PGM formats for 12-bit data.
229
230Fix several bugs in rdrle.c.
231
232NEED_SHORT_EXTERNAL_NAMES option was broken.
233
234Revise jerror.h/jerror.c for more flexibility in message table.
235
236Repair oversight in jmemname.c NO_MKTEMP case: file could be there
237but unreadable.
238
239
Thomas G. Lane36a4ccc1994-09-24 00:00:00 +0000240Version 5 24-Sep-94
241--------------------
242
243Version 5 represents a nearly complete redesign and rewrite of the IJG
244software. Major user-visible changes include:
245 * Automatic configuration simplifies installation for most Unix systems.
246 * A range of speed vs. image quality tradeoffs are supported.
247 This includes resizing of an image during decompression: scaling down
248 by a factor of 1/2, 1/4, or 1/8 is handled very efficiently.
249 * New programs rdjpgcom and wrjpgcom allow insertion and extraction
250 of text comments in a JPEG file.
251
252The application programmer's interface to the library has changed completely.
253Notable improvements include:
254 * We have eliminated the use of callback routines for handling the
255 uncompressed image data. The application now sees the library as a
256 set of routines that it calls to read or write image data on a
257 scanline-by-scanline basis.
258 * The application image data is represented in a conventional interleaved-
259 pixel format, rather than as a separate array for each color channel.
260 This can save a copying step in many programs.
261 * The handling of compressed data has been cleaned up: the application can
262 supply routines to source or sink the compressed data. It is possible to
263 suspend processing on source/sink buffer overrun, although this is not
264 supported in all operating modes.
265 * All static state has been eliminated from the library, so that multiple
266 instances of compression or decompression can be active concurrently.
267 * JPEG abbreviated datastream formats are supported, ie, quantization and
268 Huffman tables can be stored separately from the image data.
269 * And not only that, but the documentation of the library has improved
270 considerably!
271
272
273The last widely used release before the version 5 rewrite was version 4A of
27418-Feb-93. Change logs before that point have been discarded, since they
275are not of much interest after the rewrite.