137#define CTX_PREPARE_FOR_IMCU 0
138#define CTX_PROCESS_IMCU 1
139#define CTX_POSTPONED_ROW 2
149#ifdef QUANT_2PASS_SUPPORTED
164 int M = cinfo->min_DCT_scaled_size;
174 main_->xbuffer[1] = main_->xbuffer[0] + cinfo->num_components;
176 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
179 cinfo->min_DCT_scaled_size;
187 main_->xbuffer[0][ci] = xbuf;
188 xbuf += rgroup * (
M + 4);
189 main_->xbuffer[1][ci] = xbuf;
205 int M = cinfo->min_DCT_scaled_size;
209 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
211 rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
212 cinfo->min_DCT_scaled_size;
213 xbuf0 = main_->xbuffer[0][ci];
214 xbuf1 = main_->xbuffer[1][ci];
216 buf = main_->buffer[ci];
217 for (i = 0; i < rgroup * (M + 2); i++) {
218 xbuf0[i] = xbuf1[i] = buf[i];
221 for (
i = 0;
i < rgroup * 2;
i++) {
222 xbuf1[rgroup*(
M-2) +
i] = buf[rgroup*
M +
i];
223 xbuf1[rgroup*
M +
i] = buf[rgroup*(
M-2) +
i];
230 for (
i = 0;
i < rgroup;
i++) {
231 xbuf0[
i - rgroup] = xbuf0[0];
245 int M = cinfo->min_DCT_scaled_size;
249 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
251 rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
252 cinfo->min_DCT_scaled_size;
253 xbuf0 = main_->xbuffer[0][ci];
254 xbuf1 = main_->xbuffer[1][ci];
255 for (i = 0; i < rgroup; i++) {
256 xbuf0[i - rgroup] = xbuf0[rgroup*(M+1) + i];
257 xbuf1[i - rgroup] = xbuf1[rgroup*(M+1) + i];
258 xbuf0[rgroup*(M+2) + i] = xbuf0[i];
259 xbuf1[rgroup*(M+2) + i] = xbuf1[i];
273 int ci,
i, rgroup, iMCUheight, rows_left;
277 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
280 iMCUheight = compptr->v_samp_factor * compptr->DCT_scaled_size;
281 rgroup = iMCUheight / cinfo->min_DCT_scaled_size;
283 rows_left = (int) (compptr->downsampled_height % (JDIMENSION) iMCUheight);
284 if (rows_left == 0) rows_left = iMCUheight;
289 main_->rowgroups_avail = (JDIMENSION) ((rows_left-1) / rgroup + 1);
295 for (
i = 0;
i < rgroup * 2;
i++) {
296 xbuf[rows_left +
i] = xbuf[rows_left-1];
313 if (cinfo->upsample->need_context_rows) {
326#ifdef QUANT_2PASS_SUPPORTED
333 ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
354 if (! (*cinfo->coef->decompress_data) (cinfo, main_->buffer))
356 main_->buffer_full = TRUE;
360 rowgroups_avail = (
JDIMENSION) cinfo->min_DCT_scaled_size;
367 (*cinfo->post->post_process_data) (cinfo, main_->
buffer,
373 main_->buffer_full = FALSE;
374 main_->rowgroup_ctr = 0;
393 if (! (*cinfo->coef->decompress_data) (cinfo,
394 main_->xbuffer[main_->whichptr]))
396 main_->buffer_full = TRUE;
397 main_->iMCU_row_ctr++;
406 case CTX_POSTPONED_ROW:
408 (*cinfo->post->post_process_data) (cinfo, main_->xbuffer[main_->whichptr],
409 &main_->rowgroup_ctr, main_->rowgroups_avail,
410 output_buf, out_row_ctr, out_rows_avail);
411 if (main_->rowgroup_ctr < main_->rowgroups_avail)
413 main_->context_state = CTX_PREPARE_FOR_IMCU;
414 if (*out_row_ctr >= out_rows_avail)
417 case CTX_PREPARE_FOR_IMCU:
419 main_->rowgroup_ctr = 0;
420 main_->rowgroups_avail = (JDIMENSION) (cinfo->min_DCT_scaled_size - 1);
424 if (main_->iMCU_row_ctr == cinfo->total_iMCU_rows)
425 set_bottom_pointers(cinfo);
426 main_->context_state = CTX_PROCESS_IMCU;
428 case CTX_PROCESS_IMCU:
430 (*cinfo->post->post_process_data) (cinfo, main_->xbuffer[main_->whichptr],
431 &main_->rowgroup_ctr, main_->rowgroups_avail,
432 output_buf, out_row_ctr, out_rows_avail);
433 if (main_->rowgroup_ctr < main_->rowgroups_avail)
436 if (main_->iMCU_row_ctr == 1)
437 set_wraparound_pointers(cinfo);
439 main_->whichptr ^= 1;
440 main_->buffer_full = FALSE;
443 main_->rowgroup_ctr = (JDIMENSION) (cinfo->min_DCT_scaled_size + 1);
444 main_->rowgroups_avail = (JDIMENSION) (cinfo->min_DCT_scaled_size + 2);
445 main_->context_state = CTX_POSTPONED_ROW;
456#ifdef QUANT_2PASS_SUPPORTED
479 int ci, rgroup, ngroups;
489 ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
494 if (cinfo->upsample->need_context_rows) {
495 if (cinfo->min_DCT_scaled_size < 2)
496 ERREXIT(cinfo, JERR_NOTIMPL);
497 alloc_funny_pointers(cinfo);
498 ngroups = cinfo->min_DCT_scaled_size + 2;
500 ngroups = cinfo->min_DCT_scaled_size;
503 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
505 rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
506 cinfo->min_DCT_scaled_size;
507 main_->buffer[ci] = (*cinfo->mem->alloc_sarray)
508 ((j_common_ptr) cinfo, JPOOL_IMAGE,
509 compptr->width_in_blocks * compptr->DCT_scaled_size,
510 (JDIMENSION) (rgroup * ngroups));
register unsigned i
Definition inflate.c:1575
jpeg_component_info * compptr
Definition jdct.h:105
jpeg_component_info JCOEFPTR JSAMPARRAY output_buf
Definition jdct.h:106
process_data_crank_post(j_decompress_ptr cinfo, JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail)
Definition jdmainct.c:459
set_bottom_pointers(j_decompress_ptr cinfo)
Definition jdmainct.c:266
METHODDEF(void)
Definition jdmainct.c:143
process_data_simple_main2(j_decompress_ptr cinfo, JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail)
Definition jdmainct.c:345
jinit_d_main_controller(j_decompress_ptr cinfo, boolean need_full_buffer)
Definition jdmainct.c:476
set_wraparound_pointers(j_decompress_ptr cinfo)
Definition jdmainct.c:238
my_main_controller4 * my_main_ptr4
Definition jdmainct.c:134
#define CTX_PREPARE_FOR_IMCU
Definition jdmainct.c:137
process_data_context_main(j_decompress_ptr cinfo, JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail)
Definition jdmainct.c:385
start_pass_main2(j_decompress_ptr cinfo, J_BUF_MODE pass_mode)
Definition jdmainct.c:307
make_funny_pointers(j_decompress_ptr cinfo)
Definition jdmainct.c:195
#define ERREXIT(cinfo, code)
Definition jerror.h:205
#define SIZEOF(object)
Definition jinclude.h:83
unsigned int JDIMENSION
Definition jmorecfg.h:171
#define MAX_COMPONENTS
Definition jmorecfg.h:35
#define LOCAL(type)
Definition jmorecfg.h:186
J_BUF_MODE
Definition jpegint.h:16
@ JBUF_PASS_THRU
Definition jpegint.h:17
@ JBUF_CRANK_DEST
Definition jpegint.h:20
boolean need_full_buffer
Definition jpegint.h:338
struct jpeg_decompress_struct * j_decompress_ptr
Definition jpeglib.h:263
struct jpeg_common_struct * j_common_ptr
Definition jpeglib.h:261
#define JPP(arglist)
Definition jpeglib.h:818
JSAMPARRAY * JSAMPIMAGE
Definition jpeglib.h:68
JSAMPROW * JSAMPARRAY
Definition jpeglib.h:67
JSAMPLE FAR * JSAMPROW
Definition jpeglib.h:66
#define JPOOL_IMAGE
Definition jpeglib.h:749
#define M
Definition nseel-cfunc.c:37
struct jpeg_d_main_controller * main
Definition jpeglib.h:620
Definition jdmainct.c:114
JSAMPIMAGE xbuffer[2]
Definition jdmainct.c:126
int context_state
Definition jdmainct.c:129
JDIMENSION rowgroups_avail
Definition jdmainct.c:130
struct jpeg_d_main_controller pub
Definition jdmainct.c:115
int whichptr
Definition jdmainct.c:128
JDIMENSION rowgroup_ctr
Definition jdmainct.c:121
JDIMENSION iMCU_row_ctr
Definition jdmainct.c:131
boolean buffer_full
Definition jdmainct.c:120
JSAMPARRAY buffer[MAX_COMPONENTS]
Definition jdmainct.c:118
#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
switch(option)
Definition fileio.c:2034
#define FALSE
Definition unzpriv.h:1298