]>
git.saurik.com Git - wxWidgets.git/blob - src/tiff/contrib/ojpeg/jdhuff_add.c
2 * BEWARE OF KLUDGE: This subroutine is a hack for decoding illegal JPEG-in-
3 * TIFF encapsulations produced by Microsoft's Wang Imaging
4 * for Windows application with the public-domain TIFF Library. Based upon an
5 * examination of selected output files, this program apparently divides a JPEG
6 * bit-stream into consecutive horizontal TIFF "strips", such that the JPEG
7 * encoder's/decoder's DC coefficients for each image component are reset before
8 * each "strip". Moreover, a "strip" is not necessarily encoded in a multiple
9 * of 8 bits, so one must sometimes discard 1-7 bits at the end of each "strip"
10 * for alignment to the next input-Byte storage boundary. IJG JPEG Library
11 * decoder state is not normally exposed to client applications, so this sub-
12 * routine provides the TIFF Library with a "hook" to make these corrections.
13 * It should be called after "jpeg_start_decompress()" and before
14 * "jpeg_finish_decompress()", just before decoding each "strip" using
15 * "jpeg_read_raw_data()" or "jpeg_read_scanlines()".
17 * This kludge is not sanctioned or supported by the Independent JPEG Group, and
18 * future changes to the IJG JPEG Library might invalidate it. Do not send bug
19 * reports about this code to IJG developers. Instead, contact the author for
20 * advice: Scott B. Marovich <marovich@hpl.hp.com>, Hewlett-Packard Labs, 6/01.
23 jpeg_reset_huff_decode (register j_decompress_ptr cinfo
,register float *refbw
)
24 { register huff_entropy_ptr entropy
= (huff_entropy_ptr
)cinfo
->entropy
;
27 /* Re-initialize DC predictions */
28 do entropy
->saved
.last_dc_val
[ci
] = -refbw
[ci
<< 1];
29 while (++ci
< cinfo
->comps_in_scan
);
30 /* Discard encoded input bits, up to the next Byte boundary */
31 entropy
->bitstate
.bits_left
&= ~7;