Release Notes

Open Source Used In AsyncOS 8.8 for Cisco Web Security Appliances
89
end of the file or a SOS marker beyond the target output scan.)
* jpeg_finish_decompress() will read until the end of file, and thus can
suspend if the end hasn't already been reached (as can be tested by
calling jpeg_input_complete()).
jpeg_start_output(), jpeg_finish_output(), and jpeg_finish_decompress()
all return TRUE if they completed their tasks, FALSE if they had to suspend.
In the event of a FALSE return, the application must load more input data
and repeat the call. Applications that use non-suspending data sources need
not check the return values of these three routines.
It is possible to change decoding parameters between output passes in the
buffered-image mode. The decoder library currently supports only very
limited changes of parameters. ONLY THE FOLLOWING parameter changes are
allowed after jpeg_start_decompress() is called:
* dct_method can be changed before each call to jpeg_start_output().
For example, one could use a fast DCT method for early scans, changing
to a higher quality method for the final scan.
* dither_mode can be changed before each call to jpeg_start_output();
of course this has no impact if not using color quantization. Typically
one would use ordered dither for initial passes, then switch to
Floyd-Steinberg dither for the final pass. Caution: changing dither mode
can cause more memory to be allocated by the library. Although the amount
of memory involved is not large (a scanline or so), it may cause the
initial max_memory_to_use specification to be exceeded, which in the worst
case would result in an out-of-memory failure.
* do_block_smoothing can be changed before each call to jpeg_start_output().
This setting is relevant only when decoding a progressive JPEG image.
During the first DC-only scan, block smoothing provides a very "fuzzy" look
instead of the very "blocky" look seen without it; which is better seems a
matter of personal taste. But block smoothing is nearly always a win
during later stages, especially when decoding a successive-approximation
image: smoothing helps to hide the slight blockiness that otherwise shows
up on smooth gradients until the lowest coefficient bits are sent.
* Color quantization mode can be changed under the rules described below.
You *cannot* change between full-color and quantized output (because that
would alter the required I/O buffer sizes), but you can change which
quantization method is used.
When generating color-quantized output, changing quantization method is a
very useful way of switching between high-speed and high-quality display.
The library allows you to change among its three quantization methods:
1. Single-pass quantization to a fixed color cube.
Selected by cinfo.two_pass_quantize = FALSE and cinfo.colormap = NULL.
2. Single-pass quantization to an application-supplied colormap.
Selected by setting cinfo.colormap to point to the colormap (the value of
two_pass_quantize is ignored); also set cinfo.actual_number_of_colors.
3. Two-pass quantization to a colormap chosen specifically for the image.