comparison fdctref.c @ 35:c77207dc78f4 libavcodec

added idct reference code
author glantau
date Tue, 07 Aug 2001 22:43:37 +0000
parents 26331be7e47d
children 3e0f62e5eed6
comparison
equal deleted inserted replaced
34:2733a4c1c693 35:c77207dc78f4
114 * downwards instead of upwards) is assumed to occur less often 114 * downwards instead of upwards) is assumed to occur less often
115 * (if at all) 115 * (if at all)
116 */ 116 */
117 } 117 }
118 } 118 }
119
120 /* perform IDCT matrix multiply for 8x8 coefficient block */
121
122 void idct(block)
123 short *block;
124 {
125 int i, j, k, v;
126 double partial_product;
127 double tmp[64];
128
129 for (i=0; i<8; i++)
130 for (j=0; j<8; j++)
131 {
132 partial_product = 0.0;
133
134 for (k=0; k<8; k++)
135 partial_product+= c[k][j]*block[8*i+k];
136
137 tmp[8*i+j] = partial_product;
138 }
139
140 /* Transpose operation is integrated into address mapping by switching
141 loop order of i and j */
142
143 for (j=0; j<8; j++)
144 for (i=0; i<8; i++)
145 {
146 partial_product = 0.0;
147
148 for (k=0; k<8; k++)
149 partial_product+= c[k][i]*tmp[8*k+j];
150
151 v = (int) floor(partial_product+0.5);
152 block[8*i+j] = v;
153 }
154 }