Mercurial > libavcodec.hg
comparison faandct.c @ 1571:aa4dc16c0f18 libavcodec
* adding integer/floating point AAN implementations for DCT 2-4-8
author | romansh |
---|---|
date | Sat, 25 Oct 2003 00:32:54 +0000 |
parents | 820e06c6ca9b |
children | eb26d190cf5a |
comparison
equal
deleted
inserted
replaced
1570:9a9c14e87ebf | 1571:aa4dc16c0f18 |
---|---|
158 data[8*3 + i]= lrintf(SCALE(8*3 + i) * (z13 - z2)); | 158 data[8*3 + i]= lrintf(SCALE(8*3 + i) * (z13 - z2)); |
159 data[8*1 + i]= lrintf(SCALE(8*1 + i) * (z11 + z4)); | 159 data[8*1 + i]= lrintf(SCALE(8*1 + i) * (z11 + z4)); |
160 data[8*7 + i]= lrintf(SCALE(8*7 + i) * (z11 - z4)); | 160 data[8*7 + i]= lrintf(SCALE(8*7 + i) * (z11 - z4)); |
161 } | 161 } |
162 } | 162 } |
163 | |
164 void ff_faandct248(DCTELEM * data) | |
165 { | |
166 FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; | |
167 FLOAT tmp10, tmp11, tmp12, tmp13; | |
168 FLOAT z1, z2, z3, z4, z5, z11, z13; | |
169 FLOAT temp[64]; | |
170 int i; | |
171 | |
172 emms_c(); | |
173 | |
174 for (i=0; i<8*8; i+=8) { | |
175 tmp0= data[0 + i] + data[7 + i]; | |
176 tmp7= data[0 + i] - data[7 + i]; | |
177 tmp1= data[1 + i] + data[6 + i]; | |
178 tmp6= data[1 + i] - data[6 + i]; | |
179 tmp2= data[2 + i] + data[5 + i]; | |
180 tmp5= data[2 + i] - data[5 + i]; | |
181 tmp3= data[3 + i] + data[4 + i]; | |
182 tmp4= data[3 + i] - data[4 + i]; | |
183 | |
184 tmp10= tmp0 + tmp3; | |
185 tmp13= tmp0 - tmp3; | |
186 tmp11= tmp1 + tmp2; | |
187 tmp12= tmp1 - tmp2; | |
188 | |
189 temp[0 + i]= tmp10 + tmp11; | |
190 temp[4 + i]= tmp10 - tmp11; | |
191 | |
192 z1= (tmp12 + tmp13)*A1; | |
193 temp[2 + i]= tmp13 + z1; | |
194 temp[6 + i]= tmp13 - z1; | |
195 | |
196 tmp10= tmp4 + tmp5; | |
197 tmp11= tmp5 + tmp6; | |
198 tmp12= tmp6 + tmp7; | |
199 | |
200 z5= (tmp10 - tmp12) * A5; | |
201 z2= tmp10*A2 + z5; | |
202 z4= tmp12*A4 + z5; | |
203 z3= tmp11*A1; | |
204 | |
205 z11= tmp7 + z3; | |
206 z13= tmp7 - z3; | |
207 | |
208 temp[5 + i]= z13 + z2; | |
209 temp[3 + i]= z13 - z2; | |
210 temp[1 + i]= z11 + z4; | |
211 temp[7 + i]= z11 - z4; | |
212 } | |
213 | |
214 for (i=0; i<8; i++) { | |
215 tmp0 = temp[8*0 + i] + temp[8*1 + i]; | |
216 tmp1 = temp[8*2 + i] + temp[8*3 + i]; | |
217 tmp2 = temp[8*4 + i] + temp[8*5 + i]; | |
218 tmp3 = temp[8*6 + i] + temp[8*7 + i]; | |
219 tmp4 = temp[8*0 + i] - temp[8*1 + i]; | |
220 tmp5 = temp[8*2 + i] - temp[8*3 + i]; | |
221 tmp6 = temp[8*4 + i] - temp[8*5 + i]; | |
222 tmp7 = temp[8*6 + i] - temp[8*7 + i]; | |
223 | |
224 tmp10 = tmp0 + tmp3; | |
225 tmp11 = tmp1 + tmp2; | |
226 tmp12 = tmp1 - tmp2; | |
227 tmp13 = tmp0 - tmp3; | |
228 | |
229 data[8*0 + i] = lrintf(SCALE(8*0 + i) * (tmp10 + tmp11)); | |
230 data[8*4 + i] = lrintf(SCALE(8*4 + i) * (tmp10 - tmp11)); | |
231 | |
232 z1 = (tmp12 + tmp13)* A1; | |
233 data[8*2 + i] = lrintf(SCALE(8*2 + i) * (tmp13 + z1)); | |
234 data[8*6 + i] = lrintf(SCALE(8*6 + i) * (tmp13 - z1)); | |
235 | |
236 tmp10 = tmp4 + tmp7; | |
237 tmp11 = tmp5 + tmp6; | |
238 tmp12 = tmp5 - tmp6; | |
239 tmp13 = tmp4 - tmp7; | |
240 | |
241 data[8*1 + i] = lrintf(SCALE(8*0 + i) * (tmp10 + tmp11)); | |
242 data[8*5 + i] = lrintf(SCALE(8*4 + i) * (tmp10 - tmp11)); | |
243 | |
244 z1 = (tmp12 + tmp13)* A1; | |
245 data[8*3 + i] = lrintf(SCALE(8*2 + i) * (tmp13 + z1)); | |
246 data[8*7 + i] = lrintf(SCALE(8*6 + i) * (tmp13 - z1)); | |
247 } | |
248 } |