52#ifdef IDCT_SCALING_SUPPORTED
220 if (cinfo->data_precision < 8 || cinfo->data_precision > 12)
221 ERREXIT1(cinfo, JERR_BAD_PRECISION, cinfo->data_precision);
225 ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
229 cinfo->max_h_samp_factor = 1;
230 cinfo->max_v_samp_factor = 1;
231 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
235 ERREXIT(cinfo, JERR_BAD_SAMPLING);
236 cinfo->max_h_samp_factor =
MAX(cinfo->max_h_samp_factor,
238 cinfo->max_v_samp_factor =
MAX(cinfo->max_v_samp_factor,
243 if (cinfo->is_baseline || (cinfo->progressive_mode &&
244 cinfo->comps_in_scan)) {
251 cinfo->block_size = 1;
253 cinfo->lim_Se = cinfo->Se;
256 cinfo->block_size = 2;
258 cinfo->lim_Se = cinfo->Se;
261 cinfo->block_size = 3;
263 cinfo->lim_Se = cinfo->Se;
266 cinfo->block_size = 4;
268 cinfo->lim_Se = cinfo->Se;
271 cinfo->block_size = 5;
273 cinfo->lim_Se = cinfo->Se;
276 cinfo->block_size = 6;
278 cinfo->lim_Se = cinfo->Se;
281 cinfo->block_size = 7;
283 cinfo->lim_Se = cinfo->Se;
286 cinfo->block_size = 8;
291 cinfo->block_size = 9;
296 cinfo->block_size = 10;
301 cinfo->block_size = 11;
306 cinfo->block_size = 12;
311 cinfo->block_size = 13;
316 cinfo->block_size = 14;
321 cinfo->block_size = 15;
326 cinfo->block_size = 16;
331 ERREXIT4(cinfo, JERR_BAD_PROGRESSION,
332 cinfo->Ss, cinfo->Se, cinfo->Ah, cinfo->Al);
341 cinfo->min_DCT_h_scaled_size = cinfo->block_size;
342 cinfo->min_DCT_v_scaled_size = cinfo->block_size;
345 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
352 (
long) (cinfo->max_h_samp_factor * cinfo->block_size));
355 (
long) (cinfo->max_v_samp_factor * cinfo->block_size));
363 (
long) cinfo->max_h_samp_factor);
366 (
long) cinfo->max_v_samp_factor);
376 (
long) (cinfo->max_v_samp_factor * cinfo->block_size));
379 if (cinfo->comps_in_scan < cinfo->num_components || cinfo->progressive_mode)
380 cinfo->inputctl->has_multiple_scans =
TRUE;
382 cinfo->inputctl->has_multiple_scans =
FALSE;
391 int ci, mcublks, tmp;
394 if (cinfo->comps_in_scan == 1) {
397 compptr = cinfo->cur_comp_info[0];
417 cinfo->blocks_in_MCU = 1;
418 cinfo->MCU_membership[0] = 0;
424 ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->comps_in_scan,
430 (
long) (cinfo->max_h_samp_factor * cinfo->block_size));
431 cinfo->MCU_rows_in_scan = cinfo->total_iMCU_rows;
433 cinfo->blocks_in_MCU = 0;
435 for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
436 compptr = cinfo->cur_comp_info[ci];
452 ERREXIT(cinfo, JERR_BAD_MCU_SIZE);
453 while (mcublks-- > 0) {
454 cinfo->MCU_membership[cinfo->blocks_in_MCU++] = ci;
490 for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
491 compptr = cinfo->cur_comp_info[ci];
498 cinfo->quant_tbl_ptrs[qtblno] ==
NULL)
499 ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
501 qtbl = (
JQUANT_TBL *) (*cinfo->mem->alloc_small)
521 (*cinfo->entropy->start_pass) (cinfo);
522 (*cinfo->coef->start_input_pass) (cinfo);
523 cinfo->inputctl->consume_input = cinfo->coef->consume_data;
536 (*cinfo->entropy->finish_pass) (cinfo);
561 if (inputctl->
pub.eoi_reached)
565 val = (*cinfo->marker->read_markers) (cinfo);
572 if (cinfo->comps_in_scan == 0) {
582 if (! inputctl->
pub.has_multiple_scans)
583 ERREXIT(cinfo, JERR_EOI_EXPECTED);
584 if (cinfo->comps_in_scan == 0)
590 inputctl->
pub.eoi_reached =
TRUE;
592 if (cinfo->marker->saw_SOF)
593 ERREXIT(cinfo, JERR_SOF_NO_SOS);
598 if (cinfo->output_scan_number > cinfo->input_scan_number)
599 cinfo->output_scan_number = cinfo->input_scan_number;
621 inputctl->
pub.has_multiple_scans =
FALSE;
626 (*cinfo->marker->reset_marker_reader) (cinfo);
628 cinfo->coef_bits =
NULL;
645 cinfo->inputctl = &inputctl->
pub;
654 inputctl->
pub.has_multiple_scans =
FALSE;
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
jpeg_component_info * compptr
#define ERREXIT4(cinfo, code, p1, p2, p3, p4)
#define ERREXIT1(cinfo, code, p1)
#define ERREXIT2(cinfo, code, p1, p2)
#define MEMCOPY(dest, src, size)
#define JPEG_MAX_DIMENSION
struct jpeg_common_struct * j_common_ptr
#define MAX_COMPS_IN_SCAN
#define D_MAX_BLOCKS_IN_MCU
jdiv_round_up(long a, long b)
const int jpeg_natural_order4[4 *4+16]
const int jpeg_natural_order[DCTSIZE2+16]
const int jpeg_natural_order2[2 *2+16]
const int jpeg_natural_order5[5 *5+16]
const int jpeg_natural_order7[7 *7+16]
const int jpeg_natural_order6[6 *6+16]
const int jpeg_natural_order3[3 *3+16]
JDIMENSION downsampled_height
JDIMENSION width_in_blocks
JDIMENSION height_in_blocks
JDIMENSION downsampled_width
int min_DCT_h_scaled_size
int min_DCT_v_scaled_size
jpeg_component_info * comp_info