62 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
64 qtblno = compptr->quant_tbl_no;
66 if (qtblno < 0 || qtblno >= NUM_QUANT_TBLS ||
67 cinfo->quant_tbl_ptrs[qtblno] == NULL)
68 ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
69 qtbl = cinfo->quant_tbl_ptrs[qtblno];
72 switch (cinfo->dct_method) {
73#ifdef DCT_ISLOW_SUPPORTED
78 if (fdct->divisors[qtblno] == NULL) {
79 fdct->divisors[qtblno] = (DCTELEM *)
80 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
81 DCTSIZE2 * SIZEOF(DCTELEM));
83 dtbl = fdct->divisors[qtblno];
84 for (i = 0; i < DCTSIZE2; i++) {
85 dtbl[i] = ((DCTELEM) qtbl->quantval[i]) << 3;
89#ifdef DCT_IFAST_SUPPORTED
99 static const INT16 aanscales[DCTSIZE2] = {
101 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520,
102 22725, 31521, 29692, 26722, 22725, 17855, 12299, 6270,
103 21407, 29692, 27969, 25172, 21407, 16819, 11585, 5906,
104 19266, 26722, 25172, 22654, 19266, 15137, 10426, 5315,
105 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520,
106 12873, 17855, 16819, 15137, 12873, 10114, 6967, 3552,
107 8867, 12299, 11585, 10426, 8867, 6967, 4799, 2446,
108 4520, 6270, 5906, 5315, 4520, 3552, 2446, 1247
112 if (fdct->divisors[qtblno] == NULL) {
113 fdct->divisors[qtblno] = (DCTELEM *)
114 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
115 DCTSIZE2 * SIZEOF(DCTELEM));
117 dtbl = fdct->divisors[qtblno];
118 for (i = 0; i < DCTSIZE2; i++) {
120 DESCALE(MULTIPLY16V16((INT32) qtbl->quantval[i],
121 (INT32) aanscales[i]),
127#ifdef DCT_FLOAT_SUPPORTED
140 static const double aanscalefactor[DCTSIZE] = {
141 1.0, 1.387039845, 1.306562965, 1.175875602,
142 1.0, 0.785694958, 0.541196100, 0.275899379
145 if (fdct->float_divisors[qtblno] == NULL) {
146 fdct->float_divisors[qtblno] = (FAST_FLOAT *)
147 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
148 DCTSIZE2 * SIZEOF(FAST_FLOAT));
150 fdtbl = fdct->float_divisors[qtblno];
152 for (row = 0; row < DCTSIZE; row++) {
153 for (col = 0; col < DCTSIZE; col++) {
154 fdtbl[i] = (FAST_FLOAT)
155 (1.0 / (((double) qtbl->quantval[i] *
156 aanscalefactor[row] * aanscalefactor[col] * 8.0)));
164 ERREXIT(cinfo, JERR_NOT_COMPILED);