10 #define JPEG_INTERNALS
15 #ifdef DCT_IFAST_SUPPORTED
23 Sorry,
this code only copes with 8x8 DCTs.
51 #if BITS_IN_JSAMPLE == 8
67 #define FIX_1_082392200 ((INT32) 277)
68 #define FIX_1_414213562 ((INT32) 362)
69 #define FIX_1_847759065 ((INT32) 473)
70 #define FIX_2_613125930 ((INT32) 669)
72 #define FIX_1_082392200 FIX(1.082392200)
73 #define FIX_1_414213562 FIX(1.414213562)
74 #define FIX_1_847759065 FIX(1.847759065)
75 #define FIX_2_613125930 FIX(2.613125930)
84 #ifndef USE_ACCURATE_ROUNDING
86 #define DESCALE(x,n) RIGHT_SHIFT(x, n)
94 #define MULTIPLY(var,const) ((DCTELEM) DESCALE((var) * (const), CONST_BITS))
103 #if BITS_IN_JSAMPLE == 8
104 #define DEQUANTIZE(coef,quantval) (((IFAST_MULT_TYPE) (coef)) * (quantval))
106 #define DEQUANTIZE(coef,quantval) \
107 DESCALE((coef)*(quantval), IFAST_SCALE_BITS-PASS1_BITS)
115 #ifdef RIGHT_SHIFT_IS_UNSIGNED
116 #define ISHIFT_TEMPS DCTELEM ishift_temp;
117 #if BITS_IN_JSAMPLE == 8
118 #define DCTELEMBITS 16
120 #define DCTELEMBITS 32
122 #define IRIGHT_SHIFT(x,shft) \
123 ((ishift_temp = (x)) < 0 ? \
124 (ishift_temp >> (shft)) | ((~((DCTELEM) 0)) << (DCTELEMBITS-(shft))) : \
125 (ishift_temp >> (shft)))
128 #define IRIGHT_SHIFT(x,shft) ((x) >> (shft))
131 #ifdef USE_ACCURATE_ROUNDING
132 #define IDESCALE(x,n) ((int) IRIGHT_SHIFT((x) + (1 << ((n)-1)), n))
134 #define IDESCALE(x,n) ((int) IRIGHT_SHIFT(x, n))
147 DCTELEM tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
148 DCTELEM tmp10, tmp11, tmp12, tmp13;
149 DCTELEM z5, z10, z11, z12, z13;
165 for (ctr =
DCTSIZE; ctr > 0; ctr--) {
210 tmp0 = tmp10 + tmp13;
211 tmp3 = tmp10 - tmp13;
212 tmp1 = tmp11 + tmp12;
213 tmp2 = tmp11 - tmp12;
238 wsptr[
DCTSIZE*0] = (int) (tmp0 + tmp7);
239 wsptr[
DCTSIZE*7] = (int) (tmp0 - tmp7);
240 wsptr[
DCTSIZE*1] = (int) (tmp1 + tmp6);
241 wsptr[
DCTSIZE*6] = (int) (tmp1 - tmp6);
242 wsptr[
DCTSIZE*2] = (int) (tmp2 + tmp5);
243 wsptr[
DCTSIZE*5] = (int) (tmp2 - tmp5);
244 wsptr[
DCTSIZE*4] = (int) (tmp3 + tmp4);
245 wsptr[
DCTSIZE*3] = (int) (tmp3 - tmp4);
257 for (ctr = 0; ctr <
DCTSIZE; ctr++) {
267 #ifndef NO_ZERO_ROW_TEST
268 if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 && wsptr[4] == 0 &&
269 wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
297 tmp0 = tmp10 + tmp13;
298 tmp3 = tmp10 - tmp13;
299 tmp1 = tmp11 + tmp12;
300 tmp2 = tmp11 - tmp12;
jpeg_component_info JCOEFPTR coef_block
jpeg_component_info JCOEFPTR JSAMPARRAY JDIMENSION output_col
jpeg_component_info * compptr
#define IDCT_range_limit(cinfo)
jpeg_idct_ifast(j_decompress_ptr cinfo, jpeg_component_info *compptr, JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col)
#define DEQUANTIZE(coef, quantval)
#define MULTIPLY(var, const)