Lines Matching refs:cinfo

45 use_merged_upsample (j_decompress_ptr cinfo)

49 if (cinfo->do_fancy_upsampling || cinfo->CCIR601_sampling)
52 if (cinfo->jpeg_color_space != JCS_YCbCr || cinfo->num_components != 3 ||
53 cinfo->out_color_space != JCS_RGB ||
54 cinfo->out_color_components != RGB_PIXELSIZE)
57 if (cinfo->comp_info[0].h_samp_factor != 2 ||
58 cinfo->comp_info[1].h_samp_factor != 1 ||
59 cinfo->comp_info[2].h_samp_factor != 1 ||
60 cinfo->comp_info[0].v_samp_factor > 2 ||
61 cinfo->comp_info[1].v_samp_factor != 1 ||
62 cinfo->comp_info[2].v_samp_factor != 1)
65 if (cinfo->comp_info[0].DCT_scaled_size != cinfo->min_DCT_scaled_size ||
66 cinfo->comp_info[1].DCT_scaled_size != cinfo->min_DCT_scaled_size ||
67 cinfo->comp_info[2].DCT_scaled_size != cinfo->min_DCT_scaled_size)
85 jpeg_calc_output_dimensions (j_decompress_ptr cinfo)
94 if (cinfo->global_state != DSTATE_READY)
95 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
100 if (cinfo->scale_num * 8 <= cinfo->scale_denom) {
102 cinfo->output_width = (JDIMENSION)
103 jdiv_round_up((long) cinfo->image_width, 8L);
104 cinfo->output_height = (JDIMENSION)
105 jdiv_round_up((long) cinfo->image_height, 8L);
106 cinfo->min_DCT_scaled_size = 1;
107 } else if (cinfo->scale_num * 4 <= cinfo->scale_denom) {
109 cinfo->output_width = (JDIMENSION)
110 jdiv_round_up((long) cinfo->image_width, 4L);
111 cinfo->output_height = (JDIMENSION)
112 jdiv_round_up((long) cinfo->image_height, 4L);
113 cinfo->min_DCT_scaled_size = 2;
114 } else if (cinfo->scale_num * 2 <= cinfo->scale_denom) {
116 cinfo->output_width = (JDIMENSION)
117 jdiv_round_up((long) cinfo->image_width, 2L);
118 cinfo->output_height = (JDIMENSION)
119 jdiv_round_up((long) cinfo->image_height, 2L);
120 cinfo->min_DCT_scaled_size = 4;
123 cinfo->output_width = cinfo->image_width;
124 cinfo->output_height = cinfo->image_height;
125 cinfo->min_DCT_scaled_size = DCTSIZE;
132 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
134 int ssize = cinfo->min_DCT_scaled_size;
137 cinfo->max_h_samp_factor * cinfo->min_DCT_scaled_size) &&
139 cinfo->max_v_samp_factor * cinfo->min_DCT_scaled_size)) {
148 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
152 jdiv_round_up((long) cinfo->image_width *
154 (long) (cinfo->max_h_samp_factor * DCTSIZE));
156 jdiv_round_up((long) cinfo->image_height *
158 (long) (cinfo->max_v_samp_factor * DCTSIZE));
164 cinfo->output_width = cinfo->image_width;
165 cinfo->output_height = cinfo->image_height;
174 switch (cinfo->out_color_space) {
176 cinfo->out_color_components = 1;
180 cinfo->out_color_components = RGB_PIXELSIZE;
184 cinfo->out_color_components = 3;
188 cinfo->out_color_components = 4;
191 cinfo->out_color_components = cinfo->num_components;
194 cinfo->output_components = (cinfo->quantize_colors ? 1 :
195 cinfo->out_color_components);
198 if (use_merged_upsample(cinfo))
199 cinfo->rec_outbuf_height = cinfo->max_v_samp_factor;
201 cinfo->rec_outbuf_height = 1;
249 prepare_range_limit_table (j_decompress_ptr cinfo)
256 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
259 cinfo->sample_range_limit = table;
273 cinfo->sample_range_limit, CENTERJSAMPLE * SIZEOF(JSAMPLE));
289 master_selection (j_decompress_ptr cinfo)
291 my_master_ptr master = (my_master_ptr) cinfo->master;
297 jpeg_calc_output_dimensions(cinfo);
298 prepare_range_limit_table(cinfo);
301 samplesperrow = (long) cinfo->output_width * (long) cinfo->out_color_components;
304 ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
308 master->using_merged_upsample = use_merged_upsample(cinfo);
314 if (! cinfo->quantize_colors || ! cinfo->buffered_image) {
315 cinfo->enable_1pass_quant = FALSE;
316 cinfo->enable_external_quant = FALSE;
317 cinfo->enable_2pass_quant = FALSE;
319 if (cinfo->quantize_colors) {
320 if (cinfo->raw_data_out)
321 ERREXIT(cinfo, JERR_NOTIMPL);
323 if (cinfo->out_color_components != 3) {
324 cinfo->enable_1pass_quant = TRUE;
325 cinfo->enable_external_quant = FALSE;
326 cinfo->enable_2pass_quant = FALSE;
327 cinfo->colormap = NULL;
328 } else if (cinfo->colormap != NULL) {
329 cinfo->enable_external_quant = TRUE;
330 } else if (cinfo->two_pass_quantize) {
331 cinfo->enable_2pass_quant = TRUE;
333 cinfo->enable_1pass_quant = TRUE;
336 if (cinfo->enable_1pass_quant) {
338 jinit_1pass_quantizer(cinfo);
339 master->quantizer_1pass = cinfo->cquantize;
341 ERREXIT(cinfo, JERR_NOT_COMPILED);
346 if (cinfo->enable_2pass_quant || cinfo->enable_external_quant) {
348 jinit_2pass_quantizer(cinfo);
349 master->quantizer_2pass = cinfo->cquantize;
351 ERREXIT(cinfo, JERR_NOT_COMPILED);
360 if (! cinfo->raw_data_out) {
363 jinit_merged_upsampler(cinfo); /* does color conversion too */
365 ERREXIT(cinfo, JERR_NOT_COMPILED);
368 jinit_color_deconverter(cinfo);
369 jinit_upsampler(cinfo);
371 jinit_d_post_controller(cinfo, cinfo->enable_2pass_quant);
374 jinit_inverse_dct(cinfo);
376 if (cinfo->arith_code) {
377 ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
379 if (cinfo->progressive_mode) {
381 jinit_phuff_decoder(cinfo);
383 ERREXIT(cinfo, JERR_NOT_COMPILED);
386 jinit_huff_decoder(cinfo);
390 use_c_buffer = cinfo->inputctl->has_multiple_scans || cinfo->buffered_image;
391 jinit_d_coef_controller(cinfo, use_c_buffer);
393 if (! cinfo->raw_data_out)
394 jinit_d_main_controller(cinfo, FALSE /* never need full buffer here */);
397 (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
400 (*cinfo->inputctl->start_input_pass) (cinfo);
407 if (cinfo->progress != NULL && ! cinfo->buffered_image &&
408 cinfo->inputctl->has_multiple_scans) {
411 if (cinfo->progressive_mode) {
413 nscans = 2 + 3 * cinfo->num_components;
416 nscans = cinfo->num_components;
418 cinfo->progress->pass_counter = 0L;
419 cinfo->progress->pass_limit = (long) cinfo->total_iMCU_rows * nscans;
420 cinfo->progress->completed_passes = 0;
421 cinfo->progress->total_passes = (cinfo->enable_2pass_quant ? 3 : 2);
439 prepare_for_output_pass (j_decompress_ptr cinfo)
441 my_master_ptr master = (my_master_ptr) cinfo->master;
447 (*cinfo->cquantize->start_pass) (cinfo, FALSE);
448 (*cinfo->post->start_pass) (cinfo, JBUF_CRANK_DEST);
449 (*cinfo->main->start_pass) (cinfo, JBUF_CRANK_DEST);
451 ERREXIT(cinfo, JERR_NOT_COMPILED);
454 if (cinfo->quantize_colors && cinfo->colormap == NULL) {
456 if (cinfo->two_pass_quantize && cinfo->enable_2pass_quant) {
457 cinfo->cquantize = master->quantizer_2pass;
459 } else if (cinfo->enable_1pass_quant) {
460 cinfo->cquantize = master->quantizer_1pass;
462 ERREXIT(cinfo, JERR_MODE_CHANGE);
465 (*cinfo->idct->start_pass) (cinfo);
466 (*cinfo->coef->start_output_pass) (cinfo);
467 if (! cinfo->raw_data_out) {
469 (*cinfo->cconvert->start_pass) (cinfo);
470 (*cinfo->upsample->start_pass) (cinfo);
471 if (cinfo->quantize_colors)
472 (*cinfo->cquantize->start_pass) (cinfo, master->pub.is_dummy_pass);
473 (*cinfo->post->start_pass) (cinfo,
475 (*cinfo->main->start_pass) (cinfo, JBUF_PASS_THRU);
480 if (cinfo->progress != NULL) {
481 cinfo->progress->completed_passes = master->pass_number;
482 cinfo->progress->total_passes = master->pass_number +
487 if (cinfo->buffered_image && ! cinfo->inputctl->eoi_reached) {
488 cinfo->progress->total_passes += (cinfo->enable_2pass_quant ? 2 : 1);
499 finish_output_pass (j_decompress_ptr cinfo)
501 my_master_ptr master = (my_master_ptr) cinfo->master;
503 if (cinfo->quantize_colors)
504 (*cinfo->cquantize->finish_pass) (cinfo);
516 jpeg_new_colormap (j_decompress_ptr cinfo)
518 my_master_ptr master = (my_master_ptr) cinfo->master;
521 if (cinfo->global_state != DSTATE_BUFIMAGE)
522 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
524 if (cinfo->quantize_colors && cinfo->enable_external_quant &&
525 cinfo->colormap != NULL) {
527 cinfo->cquantize = master->quantizer_2pass;
529 (*cinfo->cquantize->new_color_map) (cinfo);
532 ERREXIT(cinfo, JERR_MODE_CHANGE);
544 jinit_master_decompress (j_decompress_ptr cinfo)
549 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
551 cinfo->master = (struct jpeg_decomp_master *) master;
557 master_selection(cinfo);