kusano 7d535a
CHANGE LOG for Independent JPEG Group's JPEG software
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 9  13-Jan-2013
kusano 7d535a
----------------------
kusano 7d535a
kusano 7d535a
Add cjpeg -rgb1 option to create an RGB JPEG file, and insert
kusano 7d535a
a simple reversible color transform into the processing which
kusano 7d535a
significantly improves the compression.
kusano 7d535a
The recommended command for lossless coding of RGB images is now
kusano 7d535a
cjpeg -rgb1 -block 1 -arithmetic.
kusano 7d535a
As said, this option improves the compression significantly, but
kusano 7d535a
the files are not compatible with JPEG decoders prior to IJG v9
kusano 7d535a
due to the included color transform.
kusano 7d535a
The used color transform and marker signaling is compatible with
kusano 7d535a
other JPEG standards (e.g., JPEG-LS part 2).
kusano 7d535a
kusano 7d535a
Remove the automatic de-ANSI-fication support (Automake 1.12).
kusano 7d535a
Thank also to Nitin A Kamble for suggestion.
kusano 7d535a
kusano 7d535a
Add remark for jpeg_mem_dest() in jdatadst.c.
kusano 7d535a
Thank to Elie-Gregoire Khoury for the hint.
kusano 7d535a
kusano 7d535a
Support files with invalid component identifiers (created
kusano 7d535a
by Adobe PDF).  Thank to Robin Watts for the suggestion.
kusano 7d535a
kusano 7d535a
Adapt full buffer case in jcmainct.c for use with scaled DCT.
kusano 7d535a
Thank to Sergii Biloshytskyi for the suggestion.
kusano 7d535a
kusano 7d535a
Add type identifier for declaration of noreturn functions.
kusano 7d535a
Thank to Brett L. Moore for the suggestion.
kusano 7d535a
kusano 7d535a
Correct argument type in format string, avoid compiler warnings.
kusano 7d535a
Thank to Vincent Torri for hint.
kusano 7d535a
kusano 7d535a
Add missing #include directives in configuration checks, avoid
kusano 7d535a
configuration errors.  Thank to John Spencer for the hint.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 8d  15-Jan-2012
kusano 7d535a
-----------------------
kusano 7d535a
kusano 7d535a
Add cjpeg -rgb option to create RGB JPEG files.
kusano 7d535a
Using this switch suppresses the conversion from RGB
kusano 7d535a
colorspace input to the default YCbCr JPEG colorspace.
kusano 7d535a
This feature allows true lossless JPEG coding of RGB color images.
kusano 7d535a
The recommended command for this purpose is currently
kusano 7d535a
cjpeg -rgb -block 1 -arithmetic.
kusano 7d535a
SmartScale capable decoder (introduced with IJG JPEG 8) required.
kusano 7d535a
Thank to Michael Koch for the initial suggestion.
kusano 7d535a
kusano 7d535a
Add option to disable the region adjustment in the transupp crop code.
kusano 7d535a
Thank to Jeffrey Friedl for the suggestion.
kusano 7d535a
kusano 7d535a
Thank to Richard Jones and Edd Dawson for various minor corrections.
kusano 7d535a
kusano 7d535a
Thank to Akim Demaille for configure.ac cleanup.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 8c  16-Jan-2011
kusano 7d535a
-----------------------
kusano 7d535a
kusano 7d535a
Add option to compression library and cjpeg (-block N) to use
kusano 7d535a
different DCT block size.
kusano 7d535a
All N from 1 to 16 are possible.  Default is 8 (baseline format).
kusano 7d535a
Larger values produce higher compression,
kusano 7d535a
smaller values produce higher quality.
kusano 7d535a
SmartScale capable decoder (introduced with IJG JPEG 8) required.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 8b  16-May-2010
kusano 7d535a
-----------------------
kusano 7d535a
kusano 7d535a
Repair problem in new memory source manager with corrupt JPEG data.
kusano 7d535a
Thank to Ted Campbell and Samuel Chun for the report.
kusano 7d535a
kusano 7d535a
Repair problem in Makefile.am test target.
kusano 7d535a
Thank to anonymous user for the report.
kusano 7d535a
kusano 7d535a
Support MinGW installation with automatic configure.
kusano 7d535a
Thank to Volker Grabsch for the suggestion.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 8a  28-Feb-2010
kusano 7d535a
-----------------------
kusano 7d535a
kusano 7d535a
Writing tables-only datastreams via jpeg_write_tables works again.
kusano 7d535a
kusano 7d535a
Support 32-bit BMPs (RGB image with Alpha channel) for read in cjpeg.
kusano 7d535a
Thank to Brett Blackham for the suggestion.
kusano 7d535a
kusano 7d535a
Improve accuracy in floating point IDCT calculation.
kusano 7d535a
Thank to Robert Hooke for the hint.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 8  10-Jan-2010
kusano 7d535a
----------------------
kusano 7d535a
kusano 7d535a
jpegtran now supports the same -scale option as djpeg for "lossless" resize.
kusano 7d535a
An implementation of the JPEG SmartScale extension is required for this
kusano 7d535a
feature.  A (draft) specification of the JPEG SmartScale extension is
kusano 7d535a
available as a contributed document at ITU and ISO.  Revision 2 or later
kusano 7d535a
of the document is required (latest document version is Revision 3).
kusano 7d535a
The SmartScale extension will enable more features beside lossless resize
kusano 7d535a
in future implementations, as described in the document (new compression
kusano 7d535a
options).
kusano 7d535a
kusano 7d535a
Add sanity check in BMP reader module to avoid cjpeg crash for empty input
kusano 7d535a
image (thank to Isaev Ildar of ISP RAS, Moscow, RU for reporting this error).
kusano 7d535a
kusano 7d535a
Add data source and destination managers for read from and write to
kusano 7d535a
memory buffers.  New API functions jpeg_mem_src and jpeg_mem_dest.
kusano 7d535a
Thank to Roberto Boni from Italy for the suggestion.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 7  27-Jun-2009
kusano 7d535a
----------------------
kusano 7d535a
kusano 7d535a
New scaled DCTs implemented.
kusano 7d535a
djpeg now supports scalings N/8 with all N from 1 to 16.
kusano 7d535a
cjpeg now supports scalings 8/N with all N from 1 to 16.
kusano 7d535a
Scaled DCTs with size larger than 8 are now also used for resolving the
kusano 7d535a
common 2x2 chroma subsampling case without additional spatial resampling.
kusano 7d535a
Separate spatial resampling for those kind of files is now only necessary
kusano 7d535a
for N>8 scaling cases.
kusano 7d535a
Furthermore, separate scaled DCT functions are provided for direct resolving
kusano 7d535a
of the common asymmetric subsampling cases (2x1 and 1x2) without additional
kusano 7d535a
spatial resampling.
kusano 7d535a
kusano 7d535a
cjpeg -quality option has been extended for support of separate quality
kusano 7d535a
settings for luminance and chrominance (or in general, for every provided
kusano 7d535a
quantization table slot).
kusano 7d535a
New API function jpeg_default_qtables() and q_scale_factor array in library.
kusano 7d535a
kusano 7d535a
Added -nosmooth option to cjpeg, complementary to djpeg.
kusano 7d535a
New variable "do_fancy_downsampling" in library, complement to fancy
kusano 7d535a
upsampling.  Fancy upsampling now uses direct DCT scaling with sizes
kusano 7d535a
larger than 8.  The old method is not reversible and has been removed.
kusano 7d535a
kusano 7d535a
Support arithmetic entropy encoding and decoding.
kusano 7d535a
Added files jaricom.c, jcarith.c, jdarith.c.
kusano 7d535a
kusano 7d535a
Straighten the file structure:
kusano 7d535a
Removed files jidctred.c, jcphuff.c, jchuff.h, jdphuff.c, jdhuff.h.
kusano 7d535a
kusano 7d535a
jpegtran has a new "lossless" cropping feature.
kusano 7d535a
kusano 7d535a
Implement -perfect option in jpegtran, new API function
kusano 7d535a
jtransform_perfect_transform() in transupp. (DP 204_perfect.dpatch)
kusano 7d535a
kusano 7d535a
Better error messages for jpegtran fopen failure.
kusano 7d535a
(DP 203_jpegtran_errmsg.dpatch)
kusano 7d535a
kusano 7d535a
Fix byte order issue with 16bit PPM/PGM files in rdppm.c/wrppm.c:
kusano 7d535a
according to Netpbm, the de facto standard implementation of the PNM formats,
kusano 7d535a
the most significant byte is first. (DP 203_rdppm.dpatch)
kusano 7d535a
kusano 7d535a
Add -raw option to rdjpgcom not to mangle the output.
kusano 7d535a
(DP 205_rdjpgcom_raw.dpatch)
kusano 7d535a
kusano 7d535a
Make rdjpgcom locale aware. (DP 201_rdjpgcom_locale.dpatch)
kusano 7d535a
kusano 7d535a
Add extern "C" to jpeglib.h.
kusano 7d535a
This avoids the need to put extern "C" { ... } around #include "jpeglib.h"
kusano 7d535a
in your C++ application.  Defining the symbol DONT_USE_EXTERN_C in the
kusano 7d535a
configuration prevents this. (DP 202_jpeglib.h_c++.dpatch)
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 6b  27-Mar-1998
kusano 7d535a
-----------------------
kusano 7d535a
kusano 7d535a
jpegtran has new features for lossless image transformations (rotation
kusano 7d535a
and flipping) as well as "lossless" reduction to grayscale.
kusano 7d535a
kusano 7d535a
jpegtran now copies comments by default; it has a -copy switch to enable
kusano 7d535a
copying all APPn blocks as well, or to suppress comments.  (Formerly it
kusano 7d535a
always suppressed comments and APPn blocks.)  jpegtran now also preserves
kusano 7d535a
JFIF version and resolution information.
kusano 7d535a
kusano 7d535a
New decompressor library feature: COM and APPn markers found in the input
kusano 7d535a
file can be saved in memory for later use by the application.  (Before,
kusano 7d535a
you had to code this up yourself with a custom marker processor.)
kusano 7d535a
kusano 7d535a
There is an unused field "void * client_data" now in compress and decompress
kusano 7d535a
parameter structs; this may be useful in some applications.
kusano 7d535a
kusano 7d535a
JFIF version number information is now saved by the decoder and accepted by
kusano 7d535a
the encoder.  jpegtran uses this to copy the source file's version number,
kusano 7d535a
to ensure "jpegtran -copy all" won't create bogus files that contain JFXX
kusano 7d535a
extensions but claim to be version 1.01.  Applications that generate their
kusano 7d535a
own JFXX extension markers also (finally) have a supported way to cause the
kusano 7d535a
encoder to emit JFIF version number 1.02.
kusano 7d535a
kusano 7d535a
djpeg's trace mode reports JFIF 1.02 thumbnail images as such, rather
kusano 7d535a
than as unknown APP0 markers.
kusano 7d535a
kusano 7d535a
In -verbose mode, djpeg and rdjpgcom will try to print the contents of
kusano 7d535a
APP12 markers as text.  Some digital cameras store useful text information
kusano 7d535a
in APP12 markers.
kusano 7d535a
kusano 7d535a
Handling of truncated data streams is more robust: blocks beyond the one in
kusano 7d535a
which the error occurs will be output as uniform gray, or left unchanged
kusano 7d535a
if decoding a progressive JPEG.  The appearance no longer depends on the
kusano 7d535a
Huffman tables being used.
kusano 7d535a
kusano 7d535a
Huffman tables are checked for validity much more carefully than before.
kusano 7d535a
kusano 7d535a
To avoid the Unisys LZW patent, djpeg's GIF output capability has been
kusano 7d535a
changed to produce "uncompressed GIFs", and cjpeg's GIF input capability
kusano 7d535a
has been removed altogether.  We're not happy about it either, but there
kusano 7d535a
seems to be no good alternative.
kusano 7d535a
kusano 7d535a
The configure script now supports building libjpeg as a shared library
kusano 7d535a
on many flavors of Unix (all the ones that GNU libtool knows how to
kusano 7d535a
build shared libraries for).  Use "./configure --enable-shared" to
kusano 7d535a
try this out.
kusano 7d535a
kusano 7d535a
New jconfig file and makefiles for Microsoft Visual C++ and Developer Studio.
kusano 7d535a
Also, a jconfig file and a build script for Metrowerks CodeWarrior
kusano 7d535a
on Apple Macintosh.  makefile.dj has been updated for DJGPP v2, and there
kusano 7d535a
are miscellaneous other minor improvements in the makefiles.
kusano 7d535a
kusano 7d535a
jmemmac.c now knows how to create temporary files following Mac System 7
kusano 7d535a
conventions.
kusano 7d535a
kusano 7d535a
djpeg's -map switch is now able to read raw-format PPM files reliably.
kusano 7d535a
kusano 7d535a
cjpeg -progressive -restart no longer generates any unnecessary DRI markers.
kusano 7d535a
kusano 7d535a
Multiple calls to jpeg_simple_progression for a single JPEG object
kusano 7d535a
no longer leak memory.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 6a  7-Feb-96
kusano 7d535a
--------------------
kusano 7d535a
kusano 7d535a
Library initialization sequence modified to detect version mismatches
kusano 7d535a
and struct field packing mismatches between library and calling application.
kusano 7d535a
This change requires applications to be recompiled, but does not require
kusano 7d535a
any application source code change.
kusano 7d535a
kusano 7d535a
All routine declarations changed to the style "GLOBAL(type) name ...",
kusano 7d535a
that is, GLOBAL, LOCAL, METHODDEF, EXTERN are now macros taking the
kusano 7d535a
routine's return type as an argument.  This makes it possible to add
kusano 7d535a
Microsoft-style linkage keywords to all the routines by changing just
kusano 7d535a
these macros.  Note that any application code that was using these macros
kusano 7d535a
will have to be changed.
kusano 7d535a
kusano 7d535a
DCT coefficient quantization tables are now stored in normal array order
kusano 7d535a
rather than zigzag order.  Application code that calls jpeg_add_quant_table,
kusano 7d535a
or otherwise manipulates quantization tables directly, will need to be
kusano 7d535a
changed.  If you need to make such code work with either older or newer
kusano 7d535a
versions of the library, a test like "#if JPEG_LIB_VERSION >= 61" is
kusano 7d535a
recommended.
kusano 7d535a
kusano 7d535a
djpeg's trace capability now dumps DQT tables in natural order, not zigzag
kusano 7d535a
order.  This allows the trace output to be made into a "-qtables" file
kusano 7d535a
more easily.
kusano 7d535a
kusano 7d535a
New system-dependent memory manager module for use on Apple Macintosh.
kusano 7d535a
kusano 7d535a
Fix bug in cjpeg's -smooth option: last one or two scanlines would be
kusano 7d535a
duplicates of the prior line unless the image height mod 16 was 1 or 2.
kusano 7d535a
kusano 7d535a
Repair minor problems in VMS, BCC, MC6 makefiles.
kusano 7d535a
kusano 7d535a
New configure script based on latest GNU Autoconf.
kusano 7d535a
kusano 7d535a
Correct the list of include files needed by MetroWerks C for ccommand().
kusano 7d535a
kusano 7d535a
Numerous small documentation updates.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 6  2-Aug-95
kusano 7d535a
-------------------
kusano 7d535a
kusano 7d535a
Progressive JPEG support: library can read and write full progressive JPEG
kusano 7d535a
files.  A "buffered image" mode supports incremental decoding for on-the-fly
kusano 7d535a
display of progressive images.  Simply recompiling an existing IJG-v5-based
kusano 7d535a
decoder with v6 should allow it to read progressive files, though of course
kusano 7d535a
without any special progressive display.
kusano 7d535a
kusano 7d535a
New "jpegtran" application performs lossless transcoding between different
kusano 7d535a
JPEG formats; primarily, it can be used to convert baseline to progressive
kusano 7d535a
JPEG and vice versa.  In support of jpegtran, the library now allows lossless
kusano 7d535a
reading and writing of JPEG files as DCT coefficient arrays.  This ability
kusano 7d535a
may be of use in other applications.
kusano 7d535a
kusano 7d535a
Notes for programmers:
kusano 7d535a
* We changed jpeg_start_decompress() to be able to suspend; this makes all
kusano 7d535a
decoding modes available to suspending-input applications.  However,
kusano 7d535a
existing applications that use suspending input will need to be changed
kusano 7d535a
to check the return value from jpeg_start_decompress().  You don't need to
kusano 7d535a
do anything if you don't use a suspending data source.
kusano 7d535a
* We changed the interface to the virtual array routines: access_virt_array
kusano 7d535a
routines now take a count of the number of rows to access this time.  The
kusano 7d535a
last parameter to request_virt_array routines is now interpreted as the
kusano 7d535a
maximum number of rows that may be accessed at once, but not necessarily
kusano 7d535a
the height of every access.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 5b  15-Mar-95
kusano 7d535a
---------------------
kusano 7d535a
kusano 7d535a
Correct bugs with grayscale images having v_samp_factor > 1.
kusano 7d535a
kusano 7d535a
jpeg_write_raw_data() now supports output suspension.
kusano 7d535a
kusano 7d535a
Correct bugs in "configure" script for case of compiling in
kusano 7d535a
a directory other than the one containing the source files.
kusano 7d535a
kusano 7d535a
Repair bug in jquant1.c: sometimes didn't use as many colors as it could.
kusano 7d535a
kusano 7d535a
Borland C makefile and jconfig file work under either MS-DOS or OS/2.
kusano 7d535a
kusano 7d535a
Miscellaneous improvements to documentation.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 5a  7-Dec-94
kusano 7d535a
--------------------
kusano 7d535a
kusano 7d535a
Changed color conversion roundoff behavior so that grayscale values are
kusano 7d535a
represented exactly.  (This causes test image files to change.)
kusano 7d535a
kusano 7d535a
Make ordered dither use 16x16 instead of 4x4 pattern for a small quality
kusano 7d535a
improvement.
kusano 7d535a
kusano 7d535a
New configure script based on latest GNU Autoconf.
kusano 7d535a
Fix configure script to handle CFLAGS correctly.
kusano 7d535a
Rename *.auto files to *.cfg, so that configure script still works if
kusano 7d535a
file names have been truncated for DOS.
kusano 7d535a
kusano 7d535a
Fix bug in rdbmp.c: didn't allow for extra data between header and image.
kusano 7d535a
kusano 7d535a
Modify rdppm.c/wrppm.c to handle 2-byte raw PPM/PGM formats for 12-bit data.
kusano 7d535a
kusano 7d535a
Fix several bugs in rdrle.c.
kusano 7d535a
kusano 7d535a
NEED_SHORT_EXTERNAL_NAMES option was broken.
kusano 7d535a
kusano 7d535a
Revise jerror.h/jerror.c for more flexibility in message table.
kusano 7d535a
kusano 7d535a
Repair oversight in jmemname.c NO_MKTEMP case: file could be there
kusano 7d535a
but unreadable.
kusano 7d535a
kusano 7d535a
kusano 7d535a
Version 5  24-Sep-94
kusano 7d535a
--------------------
kusano 7d535a
kusano 7d535a
Version 5 represents a nearly complete redesign and rewrite of the IJG
kusano 7d535a
software.  Major user-visible changes include:
kusano 7d535a
  * Automatic configuration simplifies installation for most Unix systems.
kusano 7d535a
  * A range of speed vs. image quality tradeoffs are supported.
kusano 7d535a
    This includes resizing of an image during decompression: scaling down
kusano 7d535a
    by a factor of 1/2, 1/4, or 1/8 is handled very efficiently.
kusano 7d535a
  * New programs rdjpgcom and wrjpgcom allow insertion and extraction
kusano 7d535a
    of text comments in a JPEG file.
kusano 7d535a
kusano 7d535a
The application programmer's interface to the library has changed completely.
kusano 7d535a
Notable improvements include:
kusano 7d535a
  * We have eliminated the use of callback routines for handling the
kusano 7d535a
    uncompressed image data.  The application now sees the library as a
kusano 7d535a
    set of routines that it calls to read or write image data on a
kusano 7d535a
    scanline-by-scanline basis.
kusano 7d535a
  * The application image data is represented in a conventional interleaved-
kusano 7d535a
    pixel format, rather than as a separate array for each color channel.
kusano 7d535a
    This can save a copying step in many programs.
kusano 7d535a
  * The handling of compressed data has been cleaned up: the application can
kusano 7d535a
    supply routines to source or sink the compressed data.  It is possible to
kusano 7d535a
    suspend processing on source/sink buffer overrun, although this is not
kusano 7d535a
    supported in all operating modes.
kusano 7d535a
  * All static state has been eliminated from the library, so that multiple
kusano 7d535a
    instances of compression or decompression can be active concurrently.
kusano 7d535a
  * JPEG abbreviated datastream formats are supported, ie, quantization and
kusano 7d535a
    Huffman tables can be stored separately from the image data.
kusano 7d535a
  * And not only that, but the documentation of the library has improved
kusano 7d535a
    considerably!
kusano 7d535a
kusano 7d535a
kusano 7d535a
The last widely used release before the version 5 rewrite was version 4A of
kusano 7d535a
18-Feb-93.  Change logs before that point have been discarded, since they
kusano 7d535a
are not of much interest after the rewrite.