172{
179
182
184#ifdef DCT_SCALING_SUPPORTED
185
186
187
188
189#ifndef PROVIDE_ISLOW_TABLES
190#define PROVIDE_ISLOW_TABLES
191#endif
192 case ((1 << 8) + 1):
193 fdct->
do_dct[ci] = jpeg_fdct_1x1;
195 break;
196 case ((2 << 8) + 2):
197 fdct->
do_dct[ci] = jpeg_fdct_2x2;
199 break;
200 case ((3 << 8) + 3):
201 fdct->
do_dct[ci] = jpeg_fdct_3x3;
203 break;
204 case ((4 << 8) + 4):
205 fdct->
do_dct[ci] = jpeg_fdct_4x4;
207 break;
208 case ((5 << 8) + 5):
209 fdct->
do_dct[ci] = jpeg_fdct_5x5;
211 break;
212 case ((6 << 8) + 6):
213 fdct->
do_dct[ci] = jpeg_fdct_6x6;
215 break;
216 case ((7 << 8) + 7):
217 fdct->
do_dct[ci] = jpeg_fdct_7x7;
219 break;
220 case ((9 << 8) + 9):
221 fdct->
do_dct[ci] = jpeg_fdct_9x9;
223 break;
224 case ((10 << 8) + 10):
225 fdct->
do_dct[ci] = jpeg_fdct_10x10;
227 break;
228 case ((11 << 8) + 11):
229 fdct->
do_dct[ci] = jpeg_fdct_11x11;
231 break;
232 case ((12 << 8) + 12):
233 fdct->
do_dct[ci] = jpeg_fdct_12x12;
235 break;
236 case ((13 << 8) + 13):
237 fdct->
do_dct[ci] = jpeg_fdct_13x13;
239 break;
240 case ((14 << 8) + 14):
241 fdct->
do_dct[ci] = jpeg_fdct_14x14;
243 break;
244 case ((15 << 8) + 15):
245 fdct->
do_dct[ci] = jpeg_fdct_15x15;
247 break;
248 case ((16 << 8) + 16):
249 fdct->
do_dct[ci] = jpeg_fdct_16x16;
251 break;
252 case ((16 << 8) + 8):
253 fdct->
do_dct[ci] = jpeg_fdct_16x8;
255 break;
256 case ((14 << 8) + 7):
257 fdct->
do_dct[ci] = jpeg_fdct_14x7;
259 break;
260 case ((12 << 8) + 6):
261 fdct->
do_dct[ci] = jpeg_fdct_12x6;
263 break;
264 case ((10 << 8) + 5):
265 fdct->
do_dct[ci] = jpeg_fdct_10x5;
267 break;
268 case ((8 << 8) + 4):
269 fdct->
do_dct[ci] = jpeg_fdct_8x4;
271 break;
272 case ((6 << 8) + 3):
273 fdct->
do_dct[ci] = jpeg_fdct_6x3;
275 break;
276 case ((4 << 8) + 2):
277 fdct->
do_dct[ci] = jpeg_fdct_4x2;
279 break;
280 case ((2 << 8) + 1):
281 fdct->
do_dct[ci] = jpeg_fdct_2x1;
283 break;
284 case ((8 << 8) + 16):
285 fdct->
do_dct[ci] = jpeg_fdct_8x16;
287 break;
288 case ((7 << 8) + 14):
289 fdct->
do_dct[ci] = jpeg_fdct_7x14;
291 break;
292 case ((6 << 8) + 12):
293 fdct->
do_dct[ci] = jpeg_fdct_6x12;
295 break;
296 case ((5 << 8) + 10):
297 fdct->
do_dct[ci] = jpeg_fdct_5x10;
299 break;
300 case ((4 << 8) + 8):
301 fdct->
do_dct[ci] = jpeg_fdct_4x8;
303 break;
304 case ((3 << 8) + 6):
305 fdct->
do_dct[ci] = jpeg_fdct_3x6;
307 break;
308 case ((2 << 8) + 4):
309 fdct->
do_dct[ci] = jpeg_fdct_2x4;
311 break;
312 case ((1 << 8) + 2):
313 fdct->
do_dct[ci] = jpeg_fdct_1x2;
315 break;
316#endif
319#ifdef DCT_ISLOW_SUPPORTED
321#ifndef PROVIDE_ISLOW_TABLES
322#define PROVIDE_ISLOW_TABLES
323#endif
324 fdct->
do_dct[ci] = jpeg_fdct_islow;
326 break;
327#endif
328#ifdef DCT_IFAST_SUPPORTED
330#if BITS_IN_JSAMPLE < JPEG_DATA_PRECISION || \
331 BITS_IN_JSAMPLE > JPEG_DATA_PRECISION + 8
332
333
334
335
336
337#ifndef PROVIDE_ISLOW_TABLES
338#define PROVIDE_ISLOW_TABLES
339#endif
340 fdct->
do_dct[ci] = jpeg_fdct_islow;
342#else
343#ifndef PROVIDE_IFAST_TABLES
344#define PROVIDE_IFAST_TABLES
345#endif
346 fdct->
do_dct[ci] = jpeg_fdct_ifast;
348#endif
349 break;
350#endif
351#ifdef DCT_FLOAT_SUPPORTED
353 fdct->do_float_dct[ci] = jpeg_fdct_float;
355 break;
356#endif
357 default:
358 ERREXIT(cinfo, JERR_NOT_COMPILED);
359 }
360 break;
361 default:
364 }
366
369 ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
371
373#ifdef PROVIDE_ISLOW_TABLES
375
376
377
382 }
384 break;
385#endif
386#ifdef PROVIDE_IFAST_TABLES
388 {
389
390
391
392
393
394
395
396#define CONST_BITS 14
398
399 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520,
400 22725, 31521, 29692, 26722, 22725, 17855, 12299, 6270,
401 21407, 29692, 27969, 25172, 21407, 16819, 11585, 5906,
402 19266, 26722, 25172, 22654, 19266, 15137, 10426, 5315,
403 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520,
404 12873, 17855, 16819, 15137, 12873, 10114, 6967, 3552,
405 8867, 12299, 11585, 10426, 8867, 6967, 4799, 2446,
406 4520, 6270, 5906, 5315, 4520, 3552, 2446, 1247
407 };
409
417 }
418 } else {
424 }
425 }
426 }
428 break;
429#endif
430#ifdef DCT_FLOAT_SUPPORTED
432 {
433
434
435
436
437
438
439
440
441
444 static const double aanscalefactor[
DCTSIZE] = {
445 1.0, 1.387039845, 1.306562965, 1.175875602,
446 1.0, 0.785694958, 0.541196100, 0.275899379
447 };
448#if BITS_IN_JSAMPLE == JPEG_DATA_PRECISION
449
452 for (col = 0; col <
DCTSIZE; col++) {
453 fdtbl[
i] = (FAST_FLOAT)
454 (1.0 / ((
double) qtbl->quantval[
i] *
455 aanscalefactor[
row] * aanscalefactor[col] *
457#else
459
460
461#if BITS_IN_JSAMPLE < JPEG_DATA_PRECISION
463 do { extrafactor *= 0.5; }
while (--
i);
464#else
466 do { extrafactor *= 2.0; }
while (--
i);
467#endif
468
471 for (col = 0; col <
DCTSIZE; col++) {
472 fdtbl[
i] = (FAST_FLOAT)
473 (1.0 / ((
double) qtbl->quantval[
i] *
474 aanscalefactor[
row] * aanscalefactor[col] *
475 extrafactor));
476#endif
478 }
479 }
480 }
481 fdct->
pub.forward_DCT[ci] = forward_DCT_float;
482 break;
483#endif
484 default:
485 ERREXIT(cinfo, JERR_NOT_COMPILED);
486 }
487 }
488}
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
for(i=0;i< ARRAY_SIZE(offsets);i++)
forward_DCT(j_compress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY sample_data, JBLOCKROW coef_blocks, JDIMENSION start_col, JDIMENSION num_blocks)
#define MULTIPLY16V16(var1, var2)
#define ERREXIT1(cinfo, code, p1)
#define ERREXIT2(cinfo, code, p1, p2)
#define JPEG_DATA_PRECISION
JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS]