16 #ifdef NEED_SHORT_EXTERNAL_NAMES 17 #define jpeg_make_d_derived_tbl jpeg16_make_d_derived_tbl 18 #define jpeg_fill_bit_buffer jpeg16_fill_bit_buffer 19 #define jpeg_huff_decode jpeg16_huff_decode 25 #define HUFF_LOOKAHEAD 8 29 IJG_INT32 maxcode[18];
31 IJG_INT32 valoffset[17];
45 int look_nbits[1<<HUFF_LOOKAHEAD];
46 UINT8 look_sym[1<<HUFF_LOOKAHEAD];
50 EXTERN(
void) jpeg_make_d_derived_tbl
73 typedef IJG_INT32 bit_buf_type;
74 #define BIT_BUF_SIZE 32 84 bit_buf_type get_buffer;
91 const JOCTET * next_input_byte;
92 size_t bytes_in_buffer;
96 bit_buf_type get_buffer;
103 #define BITREAD_STATE_VARS \ 104 register bit_buf_type get_buffer; \ 105 register int bits_left; \ 106 bitread_working_state br_state 108 #define BITREAD_LOAD_STATE(cinfop,permstate) \ 109 br_state.cinfo = cinfop; \ 110 br_state.next_input_byte = cinfop->src->next_input_byte; \ 111 br_state.bytes_in_buffer = cinfop->src->bytes_in_buffer; \ 112 get_buffer = permstate.get_buffer; \ 113 bits_left = permstate.bits_left; 115 #define BITREAD_SAVE_STATE(cinfop,permstate) \ 116 cinfop->src->next_input_byte = br_state.next_input_byte; \ 117 cinfop->src->bytes_in_buffer = br_state.bytes_in_buffer; \ 118 permstate.get_buffer = get_buffer; \ 119 permstate.bits_left = bits_left 139 #define CHECK_BIT_BUFFER(state,nbits,action) \ 140 { if (bits_left < (nbits)) { \ 141 if (! jpeg_fill_bit_buffer(&(state),get_buffer,bits_left,nbits)) \ 143 get_buffer = (state).get_buffer; bits_left = (state).bits_left; } } 145 #define GET_BITS(nbits) \ 146 (((int) (get_buffer >> (bits_left -= (nbits)))) & ((1<<(nbits))-1)) 148 #define PEEK_BITS(nbits) \ 149 (((int) (get_buffer >> (bits_left - (nbits)))) & ((1<<(nbits))-1)) 151 #define DROP_BITS(nbits) \ 152 (bits_left -= (nbits)) 155 EXTERN(
boolean) jpeg_fill_bit_buffer
157 register
int bits_left,
int nbits));
177 #define HUFF_DECODE(result,state,htbl,failaction,slowlabel) \ 178 { register int nb, look; \ 179 if (bits_left < HUFF_LOOKAHEAD) { \ 180 if (! jpeg_fill_bit_buffer(&state,get_buffer,bits_left, 0)) {failaction;} \ 181 get_buffer = state.get_buffer; bits_left = state.bits_left; \ 182 if (bits_left < HUFF_LOOKAHEAD) { \ 183 nb = 1; goto slowlabel; \ 186 look = PEEK_BITS(HUFF_LOOKAHEAD); \ 187 if ((nb = htbl->look_nbits[look]) != 0) { \ 189 result = htbl->look_sym[look]; \ 191 nb = HUFF_LOOKAHEAD+1; \ 193 if ((result=jpeg_huff_decode(&state,get_buffer,bits_left,htbl,nb)) < 0) \ 195 get_buffer = state.get_buffer; bits_left = state.bits_left; \ 200 EXTERN(
int) jpeg_huff_decode
202 register
int bits_left,
d_derived_tbl * htbl,
int min_bits));
209 #define huffd_common_fields \ 210 boolean insufficient_data; \ 214 bitread_perm_state bitstate