40#ifndef NO_STRUCT_ASSIGN
41#define ASSIGN_STATE(dest,src) ((dest) = (src))
43#if MAX_COMPS_IN_SCAN == 4
44#define ASSIGN_STATE(dest,src) \
45 ((dest).put_buffer = (src).put_buffer, \
46 (dest).put_bits = (src).put_bits, \
47 (dest).last_dc_val[0] = (src).last_dc_val[0], \
48 (dest).last_dc_val[1] = (src).last_dc_val[1], \
49 (dest).last_dc_val[2] = (src).last_dc_val[2], \
50 (dest).last_dc_val[3] = (src).last_dc_val[3])
68#ifdef ENTROPY_OPT_SUPPORTED
92#ifdef ENTROPY_OPT_SUPPORTED
109 int ci, dctbl, actbl;
112 if (gather_statistics) {
113#ifdef ENTROPY_OPT_SUPPORTED
117 ERREXIT(cinfo, JERR_NOT_COMPILED);
124 for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
125 compptr = cinfo->cur_comp_info[ci];
128 if (gather_statistics) {
129#ifdef ENTROPY_OPT_SUPPORTED
133 ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, dctbl);
135 ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, actbl);
138 if (entropy->dc_count_ptrs[dctbl] ==
NULL)
139 entropy->dc_count_ptrs[dctbl] = (
long *)
143 if (entropy->ac_count_ptrs[actbl] ==
NULL)
144 entropy->ac_count_ptrs[actbl] = (
long *)
153 & entropy->dc_derived_tbls[dctbl]);
155 & entropy->ac_derived_tbls[actbl]);
158 entropy->saved.last_dc_val[ci] = 0;
162 entropy->saved.put_buffer = 0;
163 entropy->saved.put_bits = 0;
166 entropy->restarts_to_go = cinfo->restart_interval;
167 entropy->next_restart_num = 0;
184 int p,
i,
l, lastp, si, maxsymbol;
186 unsigned int huffcode[257];
197 isDC ? cinfo->dc_huff_tbl_ptrs[
tblno] : cinfo->ac_huff_tbl_ptrs[
tblno];
211 for (
l = 1;
l <= 16;
l++) {
214 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
216 huffsize[
p++] = (char)
l;
227 while (huffsize[
p]) {
228 while (((
int) huffsize[
p]) == si) {
229 huffcode[
p++] =
code;
236 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
255 maxsymbol =
isDC ? 15 : 255;
257 for (
p = 0;
p < lastp;
p++) {
260 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
270#define emit_byte(state,val,action) \
271 { *(state)->next_output_byte++ = (JOCTET) (val); \
272 if (--(state)->free_in_buffer == 0) \
273 if (! dump_buffer(state)) \
283 if (! (*dest->empty_output_buffer) (state->cinfo))
307 int put_bits = state->cur.put_bits;
311 ERREXIT(state->cinfo, JERR_HUFF_MISSING_CODE);
317 put_buffer <<= 24 - put_bits;
319 put_buffer |= state->cur.put_buffer;
321 while (put_bits >= 8) {
322 int c = (
int) ((put_buffer >> 16) & 0xFF);
332 state->cur.put_buffer = put_buffer;
333 state->cur.put_bits = put_bits;
344 state->cur.put_buffer = 0;
345 state->cur.put_bits = 0;
362 temp =
temp2 = block[0] - last_dc_val;
381 ERREXIT(state->cinfo, JERR_BAD_DCT_COEF);
403 if (!
emit_bits(state, actbl->ehufco[0xF0], actbl->ehufsi[0xF0]))
421 ERREXIT(state->cinfo, JERR_BAD_DCT_COEF);
425 if (!
emit_bits(state, actbl->ehufco[
i], actbl->ehufsi[
i]))
439 if (!
emit_bits(state, actbl->ehufco[0], actbl->ehufsi[0]))
462 for (ci = 0; ci < state->cinfo->comps_in_scan; ci++)
463 state->cur.last_dc_val[ci] = 0;
490 if (cinfo->restart_interval) {
497 for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
498 ci = cinfo->MCU_membership[blkn];
499 compptr = cinfo->cur_comp_info[ci];
515 if (cinfo->restart_interval) {
546 ERREXIT(cinfo, JERR_CANT_SUSPEND);
566#ifdef ENTROPY_OPT_SUPPORTED
573 long dc_counts[],
long ac_counts[])
581 temp = block[0] - last_dc_val;
595 ERREXIT(cinfo, JERR_BAD_DCT_COEF);
624 ERREXIT(cinfo, JERR_BAD_DCT_COEF);
627 ac_counts[(
r << 4) +
nbits]++;
652 if (cinfo->restart_interval) {
653 if (entropy->restarts_to_go == 0) {
655 for (ci = 0; ci < cinfo->comps_in_scan; ci++)
656 entropy->saved.last_dc_val[ci] = 0;
658 entropy->restarts_to_go = cinfo->restart_interval;
663 for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
664 ci = cinfo->MCU_membership[blkn];
665 compptr = cinfo->cur_comp_info[ci];
666 htest_one_block(cinfo, MCU_data[blkn][0], entropy->saved.last_dc_val[ci],
667 entropy->dc_count_ptrs[
compptr->dc_tbl_no],
668 entropy->ac_count_ptrs[
compptr->ac_tbl_no]);
669 entropy->saved.last_dc_val[ci] = MCU_data[blkn][0][0];
719 for (
i = 0;
i < 257;
i++)
735 for (
i = 0;
i <= 256;
i++) {
746 for (
i = 0;
i <= 256;
i++) {
763 while (others[c1] >= 0) {
772 while (others[
c2] >= 0) {
779 for (
i = 0;
i <= 256;
i++) {
784 ERREXIT(cinfo, JERR_HUFF_CLEN_OVERFLOW);
802 while (bits[
i] > 0) {
828 for (
j = 0;
j <= 255;
j++) {
829 if (codesize[
j] ==
i) {
849 int ci, dctbl, actbl;
861 for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
862 compptr = cinfo->cur_comp_info[ci];
865 if (! did_dc[dctbl]) {
866 htblptr = & cinfo->dc_huff_tbl_ptrs[dctbl];
867 if (*htblptr ==
NULL)
870 did_dc[dctbl] =
TRUE;
872 if (! did_ac[actbl]) {
873 htblptr = & cinfo->ac_huff_tbl_ptrs[actbl];
874 if (*htblptr ==
NULL)
877 did_ac[actbl] =
TRUE;
900 entropy->
pub.start_pass = start_pass_huff;
905#ifdef ENTROPY_OPT_SUPPORTED
static const unsigned char temp2[]
Definition DistrhoArtwork3BandEQ.cpp:2750
int * l
Definition inflate.c:1579
register unsigned k
Definition inflate.c:946
register unsigned j
Definition inflate.c:1576
unsigned v[N_MAX]
Definition inflate.c:1584
register unsigned i
Definition inflate.c:1575
static void c2(register WDL_FFT_COMPLEX *a)
Definition fft.c:270
htest_one_block(j_compress_ptr cinfo, JCOEFPTR block, int last_dc_val, long dc_counts[], long ac_counts[])
Definition jchuff.c:572
#define ASSIGN_STATE(dest, src)
Definition jchuff.c:41
encode_mcu_gather(j_compress_ptr cinfo, JBLOCKROW *MCU_data)
Definition jchuff.c:645
flush_bits(working_state *state)
Definition jchuff.c:340
jpeg_gen_optimal_table(j_compress_ptr cinfo, JHUFF_TBL *htbl, long freq[])
Definition jchuff.c:705
encode_mcu_huff(j_compress_ptr cinfo, JBLOCKROW *MCU_data)
Definition jchuff.c:476
jpeg_make_c_derived_tbl(j_compress_ptr cinfo, boolean isDC, int tblno, c_derived_tbl **pdtbl)
Definition jchuff.c:179
jinit_huff_encoder(j_compress_ptr cinfo)
Definition jchuff.c:891
INLINE emit_bits(working_state *state, unsigned int code, int size)
Definition jchuff.c:302
finish_pass_gather(j_compress_ptr cinfo)
Definition jchuff.c:846
dump_buffer(working_state *state)
Definition jchuff.c:278
finish_pass_huff(j_compress_ptr cinfo)
Definition jchuff.c:533
#define emit_byte(state, val, action)
Definition jchuff.c:270
encode_one_block(working_state *state, JCOEFPTR block, int last_dc_val, c_derived_tbl *dctbl, c_derived_tbl *actbl)
Definition jchuff.c:353
emit_restart(working_state *state, int restart_num)
Definition jchuff.c:451
huff_entropy_encoder * huff_entropy_ptr
Definition jchuff.c:74
#define MAX_COEF_BITS
Definition jchuff.h:25
boolean int c_derived_tbl ** pdtbl
Definition jchuff.h:46
boolean isDC
Definition jchuff.h:45
JHUFF_TBL long freq[]
Definition jchuff.h:50
boolean int tblno
Definition jchuff.h:45
JHUFF_TBL * htbl
Definition jchuff.h:50
jpeg_alloc_huff_table(j_common_ptr cinfo)
Definition jcomapi.c:98
jpeg_component_info * compptr
Definition jdct.h:105
bit_buf_type int int nbits
Definition jdhuff.h:159
#define ERREXIT(cinfo, code)
Definition jerror.h:205
#define ERREXIT1(cinfo, code, p1)
Definition jerror.h:208
#define MEMCOPY(dest, src, size)
Definition jinclude.h:71
#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
short UINT8
Definition jmorecfg.h:140
const int jpeg_natural_order[]
Definition jutils.c:53
JBLOCK FAR * JBLOCKROW
Definition jpeglib.h:71
struct jpeg_common_struct * j_common_ptr
Definition jpeglib.h:261
#define JPP(arglist)
Definition jpeglib.h:818
#define NUM_HUFF_TBLS
Definition jpeglib.h:44
JCOEF FAR * JCOEFPTR
Definition jpeglib.h:75
#define JPEG_RST0
Definition jpeglib.h:1045
#define JPOOL_IMAGE
Definition jpeglib.h:749
#define MAX_COMPS_IN_SCAN
Definition jpeglib.h:46
struct jpeg_compress_struct * j_compress_ptr
Definition jpeglib.h:262
#define DCTSIZE2
Definition jpeglib.h:42
unsigned int ehufco[256]
Definition jchuff.h:31
char ehufsi[256]
Definition jchuff.h:32
c_derived_tbl * ac_derived_tbls[NUM_HUFF_TBLS]
Definition jchuff.c:66
struct jpeg_entropy_encoder pub
Definition jchuff.c:56
c_derived_tbl * dc_derived_tbls[NUM_HUFF_TBLS]
Definition jchuff.c:65
unsigned int restarts_to_go
Definition jchuff.c:61
savable_state saved
Definition jchuff.c:58
long * ac_count_ptrs[NUM_HUFF_TBLS]
Definition jchuff.c:70
int next_restart_num
Definition jchuff.c:62
long * dc_count_ptrs[NUM_HUFF_TBLS]
Definition jchuff.c:69
struct jpeg_entropy_encoder * entropy
Definition jpeglib.h:403
struct jpeg_destination_mgr * dest
Definition jpeglib.h:272
size_t free_in_buffer
Definition jpeglib.h:715
JOCTET * next_output_byte
Definition jpeglib.h:714
int last_dc_val[MAX_COMPS_IN_SCAN]
Definition jchuff.c:32
INT32 put_buffer
Definition jchuff.c:30
int put_bits
Definition jchuff.c:31
size_t free_in_buffer
Definition jchuff.c:82
savable_state cur
Definition jchuff.c:83
JOCTET * next_output_byte
Definition jchuff.c:81
j_compress_ptr cinfo
Definition jchuff.c:84
uch * p
Definition crypt.c:594
#define GLOBAL(g)
Definition crypt.c:87
return c
Definition crypt.c:175
int r
Definition crypt.c:458
if(GLOBAL(newzip))
Definition crypt.c:475
typedef int(UZ_EXP MsgFn)()
#define TRUE
Definition unzpriv.h:1295
#define FALSE
Definition unzpriv.h:1298