39#ifndef NO_STRUCT_ASSIGN
40#define ASSIGN_STATE(dest,src) ((dest) = (src))
42#if MAX_COMPS_IN_SCAN == 4
43#define ASSIGN_STATE(dest,src) \
44 ((dest).last_dc_val[0] = (src).last_dc_val[0], \
45 (dest).last_dc_val[1] = (src).last_dc_val[1], \
46 (dest).last_dc_val[2] = (src).last_dc_val[2], \
47 (dest).last_dc_val[3] = (src).last_dc_val[3])
89 int ci, blkn, dctbl, actbl;
96 if (cinfo->Ss != 0 || cinfo->Se !=
DCTSIZE2-1 ||
97 cinfo->Ah != 0 || cinfo->Al != 0)
98 WARNMS(cinfo, JWRN_NOT_SEQUENTIAL);
100 for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
101 compptr = cinfo->cur_comp_info[ci];
115 for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
116 ci = cinfo->MCU_membership[blkn];
117 compptr = cinfo->cur_comp_info[ci];
122 if (
compptr->component_needed) {
154 int p,
i,
l, si, numsymbols;
157 unsigned int huffcode[257];
168 isDC ? cinfo->dc_huff_tbl_ptrs[
tblno] : cinfo->ac_huff_tbl_ptrs[
tblno];
183 for (
l = 1;
l <= 16;
l++) {
186 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
188 huffsize[
p++] = (char)
l;
199 while (huffsize[
p]) {
200 while (((
int) huffsize[
p]) == si) {
201 huffcode[
p++] =
code;
208 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
216 for (
l = 1;
l <= 16;
l++) {
260 for (
i = 0;
i < numsymbols;
i++) {
261 int sym =
htbl->huffval[
i];
262 if (sym < 0 || sym > 15)
263 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
285#define MIN_GET_BITS 15
287#define MIN_GET_BITS (BIT_BUF_SIZE-7)
298 const JOCTET * next_input_byte = state->next_input_byte;
299 size_t bytes_in_buffer = state->bytes_in_buffer;
307 while (bits_left < MIN_GET_BITS) {
311 if (bytes_in_buffer == 0) {
312 if (! (*cinfo->src->fill_input_buffer) (cinfo))
314 next_input_byte = cinfo->src->next_input_byte;
315 bytes_in_buffer = cinfo->src->bytes_in_buffer;
318 c = GETJOCTET(*next_input_byte++);
328 if (bytes_in_buffer == 0) {
329 if (! (*cinfo->src->fill_input_buffer) (cinfo))
331 next_input_byte = cinfo->src->next_input_byte;
332 bytes_in_buffer = cinfo->src->bytes_in_buffer;
335 c = GETJOCTET(*next_input_byte++);
350 cinfo->unread_marker = c;
357 get_buffer = (get_buffer << 8) | c;
372 if (! cinfo->entropy->insufficient_data) {
373 WARNMS(cinfo, JWRN_HIT_MARKER);
374 cinfo->entropy->insufficient_data =
TRUE;
383 state->next_input_byte = next_input_byte;
384 state->bytes_in_buffer = bytes_in_buffer;
428 WARNMS(state->cinfo, JWRN_HUFF_BAD_CODE);
453 if (! (*cinfo->marker->read_restart_marker) (cinfo))
457 for (ci = 0; ci < cinfo->comps_in_scan; ci++)
468 if (cinfo->unread_marker == 0)
499 if (cinfo->restart_interval) {
500 if (entropy->restarts_to_go == 0)
501 if (! process_restart(cinfo))
511 BITREAD_LOAD_STATE(cinfo,entropy->bitstate);
512 ASSIGN_STATE(state, entropy->saved);
516 for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
517 JBLOCKROW block = MCU_data[blkn];
518 d_derived_tbl * dctbl = entropy->dc_cur_tbls[blkn];
519 d_derived_tbl * actbl = entropy->ac_cur_tbls[blkn];
525 HUFF_DECODE(s, br_state, dctbl, return FALSE, label1);
527 CHECK_BIT_BUFFER(br_state, s, return FALSE);
529 s = HUFF_EXTEND(r, s);
532 if (entropy->dc_needed[blkn]) {
534 int ci = cinfo->MCU_membership[blkn];
535 s += state.last_dc_val[ci];
536 state.last_dc_val[ci] = s;
538 (*block)[0] = (JCOEF) s;
541 if (entropy->ac_needed[blkn]) {
545 for (k = 1; k < DCTSIZE2; k++) {
546 HUFF_DECODE(s, br_state, actbl, return FALSE, label2);
553 CHECK_BIT_BUFFER(br_state, s, return FALSE);
555 s = HUFF_EXTEND(r, s);
560 (*block)[jpeg_natural_order[k]] = (JCOEF) s;
572 for (k = 1; k < DCTSIZE2; k++) {
573 HUFF_DECODE(s, br_state, actbl, return FALSE, label3);
580 CHECK_BIT_BUFFER(br_state, s, return FALSE);
598 entropy->restarts_to_go--;
int * l
Definition inflate.c:1579
register unsigned i
Definition inflate.c:1575
#define ASSIGN_STATE(dest, src)
Definition jchuff.c:41
boolean int c_derived_tbl ** pdtbl
Definition jchuff.h:46
boolean isDC
Definition jchuff.h:45
boolean int tblno
Definition jchuff.h:45
JHUFF_TBL * htbl
Definition jchuff.h:50
jpeg_component_info * compptr
Definition jdct.h:105
#define MIN_GET_BITS
Definition jdhuff.c:287
jpeg_huff_decode(bitread_working_state *state, bit_buf_type get_buffer, int bits_left, d_derived_tbl *htbl, int min_bits)
Definition jdhuff.c:398
decode_mcu(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
Definition jdhuff.c:491
jpeg_fill_bit_buffer(bitread_working_state *state, bit_buf_type get_buffer, int bits_left, int nbits)
Definition jdhuff.c:292
jinit_huff_decoder(j_decompress_ptr cinfo)
Definition jdhuff.c:609
process_restart(j_decompress_ptr cinfo)
Definition jdhuff.c:442
start_pass_huff_decoder(j_decompress_ptr cinfo)
Definition jdhuff.c:86
jpeg_make_d_derived_tbl(j_decompress_ptr cinfo, boolean isDC, int tblno, d_derived_tbl **pdtbl)
Definition jdhuff.c:149
huff_entropy_decoder2 * huff_entropy_ptr2
Definition jdhuff.c:78
bit_buf_type int d_derived_tbl int min_bits
Definition jdhuff.h:204
#define GET_BITS(nbits)
Definition jdhuff.h:147
#define HUFF_LOOKAHEAD
Definition jdhuff.h:27
bit_buf_type int bits_left
Definition jdhuff.h:159
#define BITREAD_STATE_VARS
Definition jdhuff.h:105
bit_buf_type int int nbits
Definition jdhuff.h:159
bit_buf_type get_buffer
Definition jdhuff.h:158
INT32 bit_buf_type
Definition jdhuff.h:75
#define CHECK_BIT_BUFFER(state, nbits, action)
Definition jdhuff.h:141
#define BITREAD_SAVE_STATE(cinfop, permstate)
Definition jdhuff.h:117
#define ERREXIT(cinfo, code)
Definition jerror.h:205
#define ERREXIT1(cinfo, code, p1)
Definition jerror.h:208
#define WARNMS(cinfo, code)
Definition jerror.h:238
#define SIZEOF(object)
Definition jinclude.h:83
#define MEMZERO(target, size)
Definition jinclude.h:70
long INT32
Definition jmorecfg.h:161
char JOCTET
Definition jmorecfg.h:115
#define LOCAL(type)
Definition jmorecfg.h:186
#define METHODDEF(type)
Definition jmorecfg.h:184
struct jpeg_decompress_struct * j_decompress_ptr
Definition jpeglib.h:263
JBLOCK FAR * JBLOCKROW
Definition jpeglib.h:71
struct jpeg_common_struct * j_common_ptr
Definition jpeglib.h:261
#define NUM_HUFF_TBLS
Definition jpeglib.h:44
#define JPOOL_IMAGE
Definition jpeglib.h:749
#define MAX_COMPS_IN_SCAN
Definition jpeglib.h:46
#define DCTSIZE2
Definition jpeglib.h:42
#define D_MAX_BLOCKS_IN_MCU
Definition jpeglib.h:57
bit_buf_type get_buffer
Definition jdhuff.h:86
int bits_left
Definition jdhuff.h:87
INT32 maxcode[18]
Definition jdhuff.h:31
UINT8 look_sym[1<< HUFF_LOOKAHEAD]
Definition jdhuff.h:48
INT32 valoffset[17]
Definition jdhuff.h:33
int look_nbits[1<< HUFF_LOOKAHEAD]
Definition jdhuff.h:47
JHUFF_TBL * pub
Definition jdhuff.h:40
struct jpeg_entropy_decoder pub
Definition jdhuff.c:53
boolean ac_needed[D_MAX_BLOCKS_IN_MCU]
Definition jdhuff.c:75
unsigned int restarts_to_go
Definition jdhuff.c:62
d_derived_tbl * dc_cur_tbls[D_MAX_BLOCKS_IN_MCU]
Definition jdhuff.c:71
savable_state2 saved
Definition jdhuff.c:59
d_derived_tbl * ac_cur_tbls[D_MAX_BLOCKS_IN_MCU]
Definition jdhuff.c:72
d_derived_tbl * ac_derived_tbls[NUM_HUFF_TBLS]
Definition jdhuff.c:66
d_derived_tbl * dc_derived_tbls[NUM_HUFF_TBLS]
Definition jdhuff.c:65
bitread_perm_state bitstate
Definition jdhuff.c:58
boolean dc_needed[D_MAX_BLOCKS_IN_MCU]
Definition jdhuff.c:74
int unread_marker
Definition jpeglib.h:614
boolean insufficient_data
Definition jpegint.h:216
int last_dc_val[MAX_COMPS_IN_SCAN]
Definition jdhuff.c:31
uch * p
Definition crypt.c:594
#define GLOBAL(g)
Definition crypt.c:87
for(n=0;n< RAND_HEAD_LEN;n++)
Definition crypt.c:467
if(GLOBAL(newzip))
Definition crypt.c:475
typedef int(UZ_EXP MsgFn)()
#define TRUE
Definition unzpriv.h:1295
#define FALSE
Definition unzpriv.h:1298