Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(445)

Side by Side Diff: third_party/libjpeg_turbo/jdmaster.c

Issue 7554002: Updates libjpeg-turbo to 1.1.90 (r677) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: '' Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/libjpeg_turbo/jdmainct.c ('k') | third_party/libjpeg_turbo/jdsample.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * jdmaster.c 2 * jdmaster.c
3 * 3 *
4 * Copyright (C) 1991-1997, Thomas G. Lane. 4 * Copyright (C) 1991-1997, Thomas G. Lane.
5 * Copyright (C) 2009, D. R. Commander. 5 * Copyright (C) 2009-2010, D. R. Commander.
6 * This file is part of the Independent JPEG Group's software. 6 * This file is part of the Independent JPEG Group's software.
7 * For conditions of distribution and use, see the accompanying README file. 7 * For conditions of distribution and use, see the accompanying README file.
8 * 8 *
9 * This file contains master control logic for the JPEG decompressor. 9 * This file contains master control logic for the JPEG decompressor.
10 * These routines are concerned with selecting the modules to be executed 10 * These routines are concerned with selecting the modules to be executed
11 * and with determining the number of passes and the work to be done in each 11 * and with determining the number of passes and the work to be done in each
12 * pass. 12 * pass.
13 */ 13 */
14 14
15 #define JPEG_INTERNALS 15 #define JPEG_INTERNALS
16 #include "jinclude.h" 16 #include "jinclude.h"
17 #include "jpeglib.h" 17 #include "jpeglib.h"
18 #include "jpegcomp.h"
18 19
19 20
20 /* Private state */ 21 /* Private state */
21 22
22 typedef struct { 23 typedef struct {
23 struct jpeg_decomp_master pub; /* public fields */ 24 struct jpeg_decomp_master pub; /* public fields */
24 25
25 int pass_number; /* # of passes completed */ 26 int pass_number; /* # of passes completed */
26 27
27 boolean using_merged_upsample; /* TRUE if using merged upsample/cconvert */ 28 boolean using_merged_upsample; /* TRUE if using merged upsample/cconvert */
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 return FALSE; 62 return FALSE;
62 /* and it only handles 2h1v or 2h2v sampling ratios */ 63 /* and it only handles 2h1v or 2h2v sampling ratios */
63 if (cinfo->comp_info[0].h_samp_factor != 2 || 64 if (cinfo->comp_info[0].h_samp_factor != 2 ||
64 cinfo->comp_info[1].h_samp_factor != 1 || 65 cinfo->comp_info[1].h_samp_factor != 1 ||
65 cinfo->comp_info[2].h_samp_factor != 1 || 66 cinfo->comp_info[2].h_samp_factor != 1 ||
66 cinfo->comp_info[0].v_samp_factor > 2 || 67 cinfo->comp_info[0].v_samp_factor > 2 ||
67 cinfo->comp_info[1].v_samp_factor != 1 || 68 cinfo->comp_info[1].v_samp_factor != 1 ||
68 cinfo->comp_info[2].v_samp_factor != 1) 69 cinfo->comp_info[2].v_samp_factor != 1)
69 return FALSE; 70 return FALSE;
70 /* furthermore, it doesn't work if we've scaled the IDCTs differently */ 71 /* furthermore, it doesn't work if we've scaled the IDCTs differently */
71 if (cinfo->comp_info[0].DCT_scaled_size != cinfo->min_DCT_scaled_size || 72 if (cinfo->comp_info[0]._DCT_scaled_size != cinfo->_min_DCT_scaled_size ||
72 cinfo->comp_info[1].DCT_scaled_size != cinfo->min_DCT_scaled_size || 73 cinfo->comp_info[1]._DCT_scaled_size != cinfo->_min_DCT_scaled_size ||
73 cinfo->comp_info[2].DCT_scaled_size != cinfo->min_DCT_scaled_size) 74 cinfo->comp_info[2]._DCT_scaled_size != cinfo->_min_DCT_scaled_size)
74 return FALSE; 75 return FALSE;
75 /* ??? also need to test for upsample-time rescaling, when & if supported */ 76 /* ??? also need to test for upsample-time rescaling, when & if supported */
76 return TRUE; /* by golly, it'll work... */ 77 return TRUE; /* by golly, it'll work... */
77 #else 78 #else
78 return FALSE; 79 return FALSE;
79 #endif 80 #endif
80 } 81 }
81 82
82 83
83 /* 84 /*
(...skipping 18 matching lines...) Expand all
102 103
103 #ifdef IDCT_SCALING_SUPPORTED 104 #ifdef IDCT_SCALING_SUPPORTED
104 105
105 /* Compute actual output image dimensions and DCT scaling choices. */ 106 /* Compute actual output image dimensions and DCT scaling choices. */
106 if (cinfo->scale_num * 8 <= cinfo->scale_denom) { 107 if (cinfo->scale_num * 8 <= cinfo->scale_denom) {
107 /* Provide 1/8 scaling */ 108 /* Provide 1/8 scaling */
108 cinfo->output_width = (JDIMENSION) 109 cinfo->output_width = (JDIMENSION)
109 jdiv_round_up((long) cinfo->image_width, 8L); 110 jdiv_round_up((long) cinfo->image_width, 8L);
110 cinfo->output_height = (JDIMENSION) 111 cinfo->output_height = (JDIMENSION)
111 jdiv_round_up((long) cinfo->image_height, 8L); 112 jdiv_round_up((long) cinfo->image_height, 8L);
113 #if JPEG_LIB_VERSION >= 70
114 cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = 1;
115 #else
112 cinfo->min_DCT_scaled_size = 1; 116 cinfo->min_DCT_scaled_size = 1;
117 #endif
113 } else if (cinfo->scale_num * 4 <= cinfo->scale_denom) { 118 } else if (cinfo->scale_num * 4 <= cinfo->scale_denom) {
114 /* Provide 1/4 scaling */ 119 /* Provide 1/4 scaling */
115 cinfo->output_width = (JDIMENSION) 120 cinfo->output_width = (JDIMENSION)
116 jdiv_round_up((long) cinfo->image_width, 4L); 121 jdiv_round_up((long) cinfo->image_width, 4L);
117 cinfo->output_height = (JDIMENSION) 122 cinfo->output_height = (JDIMENSION)
118 jdiv_round_up((long) cinfo->image_height, 4L); 123 jdiv_round_up((long) cinfo->image_height, 4L);
124 #if JPEG_LIB_VERSION >= 70
125 cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = 2;
126 #else
119 cinfo->min_DCT_scaled_size = 2; 127 cinfo->min_DCT_scaled_size = 2;
128 #endif
120 } else if (cinfo->scale_num * 2 <= cinfo->scale_denom) { 129 } else if (cinfo->scale_num * 2 <= cinfo->scale_denom) {
121 /* Provide 1/2 scaling */ 130 /* Provide 1/2 scaling */
122 cinfo->output_width = (JDIMENSION) 131 cinfo->output_width = (JDIMENSION)
123 jdiv_round_up((long) cinfo->image_width, 2L); 132 jdiv_round_up((long) cinfo->image_width, 2L);
124 cinfo->output_height = (JDIMENSION) 133 cinfo->output_height = (JDIMENSION)
125 jdiv_round_up((long) cinfo->image_height, 2L); 134 jdiv_round_up((long) cinfo->image_height, 2L);
135 #if JPEG_LIB_VERSION >= 70
136 cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = 4;
137 #else
126 cinfo->min_DCT_scaled_size = 4; 138 cinfo->min_DCT_scaled_size = 4;
139 #endif
127 } else { 140 } else {
128 /* Provide 1/1 scaling */ 141 /* Provide 1/1 scaling */
129 cinfo->output_width = cinfo->image_width; 142 cinfo->output_width = cinfo->image_width;
130 cinfo->output_height = cinfo->image_height; 143 cinfo->output_height = cinfo->image_height;
144 #if JPEG_LIB_VERSION >= 70
145 cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = DCTSIZE;
146 #else
131 cinfo->min_DCT_scaled_size = DCTSIZE; 147 cinfo->min_DCT_scaled_size = DCTSIZE;
148 #endif
132 } 149 }
133 /* In selecting the actual DCT scaling for each component, we try to 150 /* In selecting the actual DCT scaling for each component, we try to
134 * scale up the chroma components via IDCT scaling rather than upsampling. 151 * scale up the chroma components via IDCT scaling rather than upsampling.
135 * This saves time if the upsampler gets to use 1:1 scaling. 152 * This saves time if the upsampler gets to use 1:1 scaling.
136 * Note this code assumes that the supported DCT scalings are powers of 2. 153 * Note this code assumes that the supported DCT scalings are powers of 2.
137 */ 154 */
138 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components; 155 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
139 ci++, compptr++) { 156 ci++, compptr++) {
140 int ssize = cinfo->min_DCT_scaled_size; 157 int ssize = cinfo->_min_DCT_scaled_size;
141 while (ssize < DCTSIZE && 158 while (ssize < DCTSIZE &&
142 (compptr->h_samp_factor * ssize * 2 <= 159 (compptr->h_samp_factor * ssize * 2 <=
143 » cinfo->max_h_samp_factor * cinfo->min_DCT_scaled_size) && 160 » cinfo->max_h_samp_factor * cinfo->_min_DCT_scaled_size) &&
144 (compptr->v_samp_factor * ssize * 2 <= 161 (compptr->v_samp_factor * ssize * 2 <=
145 » cinfo->max_v_samp_factor * cinfo->min_DCT_scaled_size)) { 162 » cinfo->max_v_samp_factor * cinfo->_min_DCT_scaled_size)) {
146 ssize = ssize * 2; 163 ssize = ssize * 2;
147 } 164 }
165 #if JPEG_LIB_VERSION >= 70
166 compptr->DCT_h_scaled_size = compptr->DCT_v_scaled_size = ssize;
167 #else
148 compptr->DCT_scaled_size = ssize; 168 compptr->DCT_scaled_size = ssize;
169 #endif
149 } 170 }
150 171
151 /* Recompute downsampled dimensions of components; 172 /* Recompute downsampled dimensions of components;
152 * application needs to know these if using raw downsampled data. 173 * application needs to know these if using raw downsampled data.
153 */ 174 */
154 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components; 175 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
155 ci++, compptr++) { 176 ci++, compptr++) {
156 /* Size in samples, after IDCT scaling */ 177 /* Size in samples, after IDCT scaling */
157 compptr->downsampled_width = (JDIMENSION) 178 compptr->downsampled_width = (JDIMENSION)
158 jdiv_round_up((long) cinfo->image_width * 179 jdiv_round_up((long) cinfo->image_width *
159 » » (long) (compptr->h_samp_factor * compptr->DCT_scaled_size), 180 » » (long) (compptr->h_samp_factor * compptr->_DCT_scaled_size),
160 (long) (cinfo->max_h_samp_factor * DCTSIZE)); 181 (long) (cinfo->max_h_samp_factor * DCTSIZE));
161 compptr->downsampled_height = (JDIMENSION) 182 compptr->downsampled_height = (JDIMENSION)
162 jdiv_round_up((long) cinfo->image_height * 183 jdiv_round_up((long) cinfo->image_height *
163 » » (long) (compptr->v_samp_factor * compptr->DCT_scaled_size), 184 » » (long) (compptr->v_samp_factor * compptr->_DCT_scaled_size),
164 (long) (cinfo->max_v_samp_factor * DCTSIZE)); 185 (long) (cinfo->max_v_samp_factor * DCTSIZE));
165 } 186 }
166 187
167 #else /* !IDCT_SCALING_SUPPORTED */ 188 #else /* !IDCT_SCALING_SUPPORTED */
168 189
169 /* Hardwire it to "no scaling" */ 190 /* Hardwire it to "no scaling" */
170 cinfo->output_width = cinfo->image_width; 191 cinfo->output_width = cinfo->image_width;
171 cinfo->output_height = cinfo->image_height; 192 cinfo->output_height = cinfo->image_height;
172 /* jdinput.c has already initialized DCT_scaled_size to DCTSIZE, 193 /* jdinput.c has already initialized DCT_scaled_size to DCTSIZE,
173 * and has computed unscaled downsampled_width and downsampled_height. 194 * and has computed unscaled downsampled_width and downsampled_height.
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 } else { 398 } else {
378 jinit_color_deconverter(cinfo); 399 jinit_color_deconverter(cinfo);
379 jinit_upsampler(cinfo); 400 jinit_upsampler(cinfo);
380 } 401 }
381 jinit_d_post_controller(cinfo, cinfo->enable_2pass_quant); 402 jinit_d_post_controller(cinfo, cinfo->enable_2pass_quant);
382 } 403 }
383 /* Inverse DCT */ 404 /* Inverse DCT */
384 jinit_inverse_dct(cinfo); 405 jinit_inverse_dct(cinfo);
385 /* Entropy decoding: either Huffman or arithmetic coding. */ 406 /* Entropy decoding: either Huffman or arithmetic coding. */
386 if (cinfo->arith_code) { 407 if (cinfo->arith_code) {
408 #ifdef D_ARITH_CODING_SUPPORTED
409 jinit_arith_decoder(cinfo);
410 #else
387 ERREXIT(cinfo, JERR_ARITH_NOTIMPL); 411 ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
412 #endif
388 } else { 413 } else {
389 if (cinfo->progressive_mode) { 414 if (cinfo->progressive_mode) {
390 #ifdef D_PROGRESSIVE_SUPPORTED 415 #ifdef D_PROGRESSIVE_SUPPORTED
391 jinit_phuff_decoder(cinfo); 416 jinit_phuff_decoder(cinfo);
392 #else 417 #else
393 ERREXIT(cinfo, JERR_NOT_COMPILED); 418 ERREXIT(cinfo, JERR_NOT_COMPILED);
394 #endif 419 #endif
395 } else 420 } else
396 jinit_huff_decoder(cinfo); 421 jinit_huff_decoder(cinfo);
397 } 422 }
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, 584 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
560 SIZEOF(my_decomp_master)); 585 SIZEOF(my_decomp_master));
561 cinfo->master = (struct jpeg_decomp_master *) master; 586 cinfo->master = (struct jpeg_decomp_master *) master;
562 master->pub.prepare_for_output_pass = prepare_for_output_pass; 587 master->pub.prepare_for_output_pass = prepare_for_output_pass;
563 master->pub.finish_output_pass = finish_output_pass; 588 master->pub.finish_output_pass = finish_output_pass;
564 589
565 master->pub.is_dummy_pass = FALSE; 590 master->pub.is_dummy_pass = FALSE;
566 591
567 master_selection(cinfo); 592 master_selection(cinfo);
568 } 593 }
OLDNEW
« no previous file with comments | « third_party/libjpeg_turbo/jdmainct.c ('k') | third_party/libjpeg_turbo/jdsample.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698