119 switch (cinfo->num_components) {
121 cinfo->jpeg_color_space = JCS_GRAYSCALE;
122 cinfo->out_color_space = JCS_GRAYSCALE;
126 if (cinfo->saw_JFIF_marker) {
127 cinfo->jpeg_color_space = JCS_YCbCr;
128 }
else if (cinfo->saw_Adobe_marker) {
129 switch (cinfo->Adobe_transform) {
131 cinfo->jpeg_color_space = JCS_RGB;
134 cinfo->jpeg_color_space = JCS_YCbCr;
137 WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
138 cinfo->jpeg_color_space = JCS_YCbCr;
143 int cid0 = cinfo->comp_info[0].component_id;
144 int cid1 = cinfo->comp_info[1].component_id;
145 int cid2 = cinfo->comp_info[2].component_id;
147 if (cid0 == 1 && cid1 == 2 && cid2 == 3)
149 else if (cid0 == 82 && cid1 == 71 && cid2 == 66)
150 cinfo->jpeg_color_space =
JCS_RGB;
152 TRACEMS3(cinfo, 1, JTRC_UNKNOWN_IDS, cid0, cid1, cid2);
157 cinfo->out_color_space =
JCS_RGB;
161 if (cinfo->saw_Adobe_marker) {
162 switch (cinfo->Adobe_transform) {
164 cinfo->jpeg_color_space = JCS_CMYK;
167 cinfo->jpeg_color_space = JCS_YCCK;
170 WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
171 cinfo->jpeg_color_space = JCS_YCCK;
188 cinfo->scale_num = 1;
189 cinfo->scale_denom = 1;
190 cinfo->output_gamma = 1.0;
191 cinfo->buffered_image =
FALSE;
192 cinfo->raw_data_out =
FALSE;
194 cinfo->do_fancy_upsampling =
TRUE;
195 cinfo->do_block_smoothing =
TRUE;
196 cinfo->quantize_colors =
FALSE;
199#ifdef QUANT_2PASS_SUPPORTED
200 cinfo->two_pass_quantize =
TRUE;
202 cinfo->two_pass_quantize =
FALSE;
204 cinfo->desired_number_of_colors = 256;
205 cinfo->colormap =
NULL;
207 cinfo->enable_1pass_quant =
FALSE;
208 cinfo->enable_external_quant =
FALSE;
209 cinfo->enable_2pass_quant =
FALSE;
292 switch (cinfo->global_state) {
295 (*cinfo->inputctl->reset_input_controller) (cinfo);
297 (*cinfo->src->init_source) (cinfo);
298 cinfo->global_state = DSTATE_INHEADER;
300 case DSTATE_INHEADER:
301 retcode = (*cinfo->inputctl->consume_input) (cinfo);
302 if (retcode == JPEG_REACHED_SOS) {
304 default_decompress_parms(cinfo);
306 cinfo->global_state = DSTATE_READY;
320 retcode = (*cinfo->inputctl->consume_input) (cinfo);
323 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
372 cinfo->global_state ==
DSTATE_RAW_OK) && ! cinfo->buffered_image) {
374 if (cinfo->output_scanline < cinfo->output_height)
375 ERREXIT(cinfo, JERR_TOO_LITTLE_DATA);
376 (*cinfo->master->finish_output_pass) (cinfo);
377 cinfo->global_state = DSTATE_STOPPING;
380 cinfo->global_state = DSTATE_STOPPING;
383 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
386 while (! cinfo->inputctl->eoi_reached) {
387 if ((*cinfo->inputctl->consume_input) (cinfo) == JPEG_SUSPENDED)
391 (*cinfo->src->term_source) (cinfo);
#define TRACEMS3(cinfo, lvl, code, p1, p2, p3)
Definition jerror.h:264