Mercurial > libavcodec.hg
comparison simple_idct.c @ 2979:bfabfdf9ce55 libavcodec
COSMETICS: tabs --> spaces, some prettyprinting
author | diego |
---|---|
date | Thu, 22 Dec 2005 01:10:11 +0000 |
parents | ef2149182f1c |
children | 0b546eab515d |
comparison
equal
deleted
inserted
replaced
2978:403183bbb505 | 2979:bfabfdf9ce55 |
---|---|
73 | 73 |
74 #endif | 74 #endif |
75 | 75 |
76 static inline void idctRowCondDC (DCTELEM * row) | 76 static inline void idctRowCondDC (DCTELEM * row) |
77 { | 77 { |
78 int a0, a1, a2, a3, b0, b1, b2, b3; | 78 int a0, a1, a2, a3, b0, b1, b2, b3; |
79 #ifdef FAST_64BIT | 79 #ifdef FAST_64BIT |
80 uint64_t temp; | 80 uint64_t temp; |
81 #else | 81 #else |
82 uint32_t temp; | 82 uint32_t temp; |
83 #endif | 83 #endif |
95 temp += temp << 16; | 95 temp += temp << 16; |
96 temp += temp << 32; | 96 temp += temp << 32; |
97 ((uint64_t *)row)[0] = temp; | 97 ((uint64_t *)row)[0] = temp; |
98 ((uint64_t *)row)[1] = temp; | 98 ((uint64_t *)row)[1] = temp; |
99 return; | 99 return; |
100 } | 100 } |
101 }else{ | 101 }else{ |
102 if (!(row[1]|row[2]|row[3]|row[4]|row[5]|row[6]|row[7])) { | 102 if (!(row[1]|row[2]|row[3]|row[4]|row[5]|row[6]|row[7])) { |
103 row[0]=row[1]=row[2]=row[3]=row[4]=row[5]=row[6]=row[7]= row[0] << 3; | 103 row[0]=row[1]=row[2]=row[3]=row[4]=row[5]=row[6]=row[7]= row[0] << 3; |
104 return; | 104 return; |
105 } | 105 } |
123 } | 123 } |
124 } | 124 } |
125 #endif | 125 #endif |
126 | 126 |
127 a0 = (W4 * row[0]) + (1 << (ROW_SHIFT - 1)); | 127 a0 = (W4 * row[0]) + (1 << (ROW_SHIFT - 1)); |
128 a1 = a0; | 128 a1 = a0; |
129 a2 = a0; | 129 a2 = a0; |
130 a3 = a0; | 130 a3 = a0; |
131 | 131 |
132 /* no need to optimize : gcc does it */ | 132 /* no need to optimize : gcc does it */ |
133 a0 += W2 * row[2]; | 133 a0 += W2 * row[2]; |
134 a1 += W6 * row[2]; | 134 a1 += W6 * row[2]; |
135 a2 -= W6 * row[2]; | 135 a2 -= W6 * row[2]; |
147 #ifdef FAST_64BIT | 147 #ifdef FAST_64BIT |
148 temp = ((uint64_t*)row)[1]; | 148 temp = ((uint64_t*)row)[1]; |
149 #else | 149 #else |
150 temp = ((uint32_t*)row)[2] | ((uint32_t*)row)[3]; | 150 temp = ((uint32_t*)row)[2] | ((uint32_t*)row)[3]; |
151 #endif | 151 #endif |
152 if (temp != 0) { | 152 if (temp != 0) { |
153 a0 += W4*row[4] + W6*row[6]; | 153 a0 += W4*row[4] + W6*row[6]; |
154 a1 += - W4*row[4] - W2*row[6]; | 154 a1 += - W4*row[4] - W2*row[6]; |
155 a2 += - W4*row[4] + W2*row[6]; | 155 a2 += - W4*row[4] + W2*row[6]; |
156 a3 += W4*row[4] - W6*row[6]; | 156 a3 += W4*row[4] - W6*row[6]; |
157 | 157 |
164 MAC16(b2, W7, row[5]); | 164 MAC16(b2, W7, row[5]); |
165 MAC16(b2, W3, row[7]); | 165 MAC16(b2, W3, row[7]); |
166 | 166 |
167 MAC16(b3, W3, row[5]); | 167 MAC16(b3, W3, row[5]); |
168 MAC16(b3, -W1, row[7]); | 168 MAC16(b3, -W1, row[7]); |
169 } | 169 } |
170 | 170 |
171 row[0] = (a0 + b0) >> ROW_SHIFT; | 171 row[0] = (a0 + b0) >> ROW_SHIFT; |
172 row[7] = (a0 - b0) >> ROW_SHIFT; | 172 row[7] = (a0 - b0) >> ROW_SHIFT; |
173 row[1] = (a1 + b1) >> ROW_SHIFT; | 173 row[1] = (a1 + b1) >> ROW_SHIFT; |
174 row[6] = (a1 - b1) >> ROW_SHIFT; | 174 row[6] = (a1 - b1) >> ROW_SHIFT; |
175 row[2] = (a2 + b2) >> ROW_SHIFT; | 175 row[2] = (a2 + b2) >> ROW_SHIFT; |
176 row[5] = (a2 - b2) >> ROW_SHIFT; | 176 row[5] = (a2 - b2) >> ROW_SHIFT; |
177 row[3] = (a3 + b3) >> ROW_SHIFT; | 177 row[3] = (a3 + b3) >> ROW_SHIFT; |
178 row[4] = (a3 - b3) >> ROW_SHIFT; | 178 row[4] = (a3 - b3) >> ROW_SHIFT; |
179 } | 179 } |
180 | 180 |
181 static inline void idctSparseColPut (uint8_t *dest, int line_size, | 181 static inline void idctSparseColPut (uint8_t *dest, int line_size, |
182 DCTELEM * col) | 182 DCTELEM * col) |
183 { | 183 { |
184 int a0, a1, a2, a3, b0, b1, b2, b3; | 184 int a0, a1, a2, a3, b0, b1, b2, b3; |
185 uint8_t *cm = cropTbl + MAX_NEG_CROP; | 185 uint8_t *cm = cropTbl + MAX_NEG_CROP; |
186 | 186 |
187 /* XXX: I did that only to give same values as previous code */ | 187 /* XXX: I did that only to give same values as previous code */ |
188 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); | 188 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); |
189 a1 = a0; | 189 a1 = a0; |
190 a2 = a0; | 190 a2 = a0; |
191 a3 = a0; | 191 a3 = a0; |
192 | 192 |
193 a0 += + W2*col[8*2]; | 193 a0 += + W2*col[8*2]; |
194 a1 += + W6*col[8*2]; | 194 a1 += + W6*col[8*2]; |
195 a2 += - W6*col[8*2]; | 195 a2 += - W6*col[8*2]; |
196 a3 += - W2*col[8*2]; | 196 a3 += - W2*col[8*2]; |
203 MAC16(b0, + W3, col[8*3]); | 203 MAC16(b0, + W3, col[8*3]); |
204 MAC16(b1, - W7, col[8*3]); | 204 MAC16(b1, - W7, col[8*3]); |
205 MAC16(b2, - W1, col[8*3]); | 205 MAC16(b2, - W1, col[8*3]); |
206 MAC16(b3, - W5, col[8*3]); | 206 MAC16(b3, - W5, col[8*3]); |
207 | 207 |
208 if(col[8*4]){ | 208 if(col[8*4]){ |
209 a0 += + W4*col[8*4]; | 209 a0 += + W4*col[8*4]; |
210 a1 += - W4*col[8*4]; | 210 a1 += - W4*col[8*4]; |
211 a2 += - W4*col[8*4]; | 211 a2 += - W4*col[8*4]; |
212 a3 += + W4*col[8*4]; | 212 a3 += + W4*col[8*4]; |
213 } | 213 } |
214 | 214 |
215 if (col[8*5]) { | 215 if (col[8*5]) { |
216 MAC16(b0, + W5, col[8*5]); | 216 MAC16(b0, + W5, col[8*5]); |
217 MAC16(b1, - W1, col[8*5]); | 217 MAC16(b1, - W1, col[8*5]); |
218 MAC16(b2, + W7, col[8*5]); | 218 MAC16(b2, + W7, col[8*5]); |
219 MAC16(b3, + W3, col[8*5]); | 219 MAC16(b3, + W3, col[8*5]); |
220 } | 220 } |
221 | 221 |
222 if(col[8*6]){ | 222 if(col[8*6]){ |
223 a0 += + W6*col[8*6]; | 223 a0 += + W6*col[8*6]; |
224 a1 += - W2*col[8*6]; | 224 a1 += - W2*col[8*6]; |
225 a2 += + W2*col[8*6]; | 225 a2 += + W2*col[8*6]; |
226 a3 += - W6*col[8*6]; | 226 a3 += - W6*col[8*6]; |
227 } | 227 } |
228 | 228 |
229 if (col[8*7]) { | 229 if (col[8*7]) { |
230 MAC16(b0, + W7, col[8*7]); | 230 MAC16(b0, + W7, col[8*7]); |
231 MAC16(b1, - W5, col[8*7]); | 231 MAC16(b1, - W5, col[8*7]); |
232 MAC16(b2, + W3, col[8*7]); | 232 MAC16(b2, + W3, col[8*7]); |
233 MAC16(b3, - W1, col[8*7]); | 233 MAC16(b3, - W1, col[8*7]); |
234 } | 234 } |
235 | 235 |
236 dest[0] = cm[(a0 + b0) >> COL_SHIFT]; | 236 dest[0] = cm[(a0 + b0) >> COL_SHIFT]; |
237 dest += line_size; | 237 dest += line_size; |
238 dest[0] = cm[(a1 + b1) >> COL_SHIFT]; | 238 dest[0] = cm[(a1 + b1) >> COL_SHIFT]; |
239 dest += line_size; | 239 dest += line_size; |
251 } | 251 } |
252 | 252 |
253 static inline void idctSparseColAdd (uint8_t *dest, int line_size, | 253 static inline void idctSparseColAdd (uint8_t *dest, int line_size, |
254 DCTELEM * col) | 254 DCTELEM * col) |
255 { | 255 { |
256 int a0, a1, a2, a3, b0, b1, b2, b3; | 256 int a0, a1, a2, a3, b0, b1, b2, b3; |
257 uint8_t *cm = cropTbl + MAX_NEG_CROP; | 257 uint8_t *cm = cropTbl + MAX_NEG_CROP; |
258 | 258 |
259 /* XXX: I did that only to give same values as previous code */ | 259 /* XXX: I did that only to give same values as previous code */ |
260 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); | 260 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); |
261 a1 = a0; | 261 a1 = a0; |
262 a2 = a0; | 262 a2 = a0; |
263 a3 = a0; | 263 a3 = a0; |
264 | 264 |
265 a0 += + W2*col[8*2]; | 265 a0 += + W2*col[8*2]; |
266 a1 += + W6*col[8*2]; | 266 a1 += + W6*col[8*2]; |
267 a2 += - W6*col[8*2]; | 267 a2 += - W6*col[8*2]; |
268 a3 += - W2*col[8*2]; | 268 a3 += - W2*col[8*2]; |
275 MAC16(b0, + W3, col[8*3]); | 275 MAC16(b0, + W3, col[8*3]); |
276 MAC16(b1, - W7, col[8*3]); | 276 MAC16(b1, - W7, col[8*3]); |
277 MAC16(b2, - W1, col[8*3]); | 277 MAC16(b2, - W1, col[8*3]); |
278 MAC16(b3, - W5, col[8*3]); | 278 MAC16(b3, - W5, col[8*3]); |
279 | 279 |
280 if(col[8*4]){ | 280 if(col[8*4]){ |
281 a0 += + W4*col[8*4]; | 281 a0 += + W4*col[8*4]; |
282 a1 += - W4*col[8*4]; | 282 a1 += - W4*col[8*4]; |
283 a2 += - W4*col[8*4]; | 283 a2 += - W4*col[8*4]; |
284 a3 += + W4*col[8*4]; | 284 a3 += + W4*col[8*4]; |
285 } | 285 } |
286 | 286 |
287 if (col[8*5]) { | 287 if (col[8*5]) { |
288 MAC16(b0, + W5, col[8*5]); | 288 MAC16(b0, + W5, col[8*5]); |
289 MAC16(b1, - W1, col[8*5]); | 289 MAC16(b1, - W1, col[8*5]); |
290 MAC16(b2, + W7, col[8*5]); | 290 MAC16(b2, + W7, col[8*5]); |
291 MAC16(b3, + W3, col[8*5]); | 291 MAC16(b3, + W3, col[8*5]); |
292 } | 292 } |
293 | 293 |
294 if(col[8*6]){ | 294 if(col[8*6]){ |
295 a0 += + W6*col[8*6]; | 295 a0 += + W6*col[8*6]; |
296 a1 += - W2*col[8*6]; | 296 a1 += - W2*col[8*6]; |
297 a2 += + W2*col[8*6]; | 297 a2 += + W2*col[8*6]; |
298 a3 += - W6*col[8*6]; | 298 a3 += - W6*col[8*6]; |
299 } | 299 } |
300 | 300 |
301 if (col[8*7]) { | 301 if (col[8*7]) { |
302 MAC16(b0, + W7, col[8*7]); | 302 MAC16(b0, + W7, col[8*7]); |
303 MAC16(b1, - W5, col[8*7]); | 303 MAC16(b1, - W5, col[8*7]); |
304 MAC16(b2, + W3, col[8*7]); | 304 MAC16(b2, + W3, col[8*7]); |
305 MAC16(b3, - W1, col[8*7]); | 305 MAC16(b3, - W1, col[8*7]); |
306 } | 306 } |
307 | 307 |
308 dest[0] = cm[dest[0] + ((a0 + b0) >> COL_SHIFT)]; | 308 dest[0] = cm[dest[0] + ((a0 + b0) >> COL_SHIFT)]; |
309 dest += line_size; | 309 dest += line_size; |
310 dest[0] = cm[dest[0] + ((a1 + b1) >> COL_SHIFT)]; | 310 dest[0] = cm[dest[0] + ((a1 + b1) >> COL_SHIFT)]; |
311 dest += line_size; | 311 dest += line_size; |
322 dest[0] = cm[dest[0] + ((a0 - b0) >> COL_SHIFT)]; | 322 dest[0] = cm[dest[0] + ((a0 - b0) >> COL_SHIFT)]; |
323 } | 323 } |
324 | 324 |
325 static inline void idctSparseCol (DCTELEM * col) | 325 static inline void idctSparseCol (DCTELEM * col) |
326 { | 326 { |
327 int a0, a1, a2, a3, b0, b1, b2, b3; | 327 int a0, a1, a2, a3, b0, b1, b2, b3; |
328 | 328 |
329 /* XXX: I did that only to give same values as previous code */ | 329 /* XXX: I did that only to give same values as previous code */ |
330 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); | 330 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); |
331 a1 = a0; | 331 a1 = a0; |
332 a2 = a0; | 332 a2 = a0; |
333 a3 = a0; | 333 a3 = a0; |
334 | 334 |
335 a0 += + W2*col[8*2]; | 335 a0 += + W2*col[8*2]; |
336 a1 += + W6*col[8*2]; | 336 a1 += + W6*col[8*2]; |
337 a2 += - W6*col[8*2]; | 337 a2 += - W6*col[8*2]; |
338 a3 += - W2*col[8*2]; | 338 a3 += - W2*col[8*2]; |
345 MAC16(b0, + W3, col[8*3]); | 345 MAC16(b0, + W3, col[8*3]); |
346 MAC16(b1, - W7, col[8*3]); | 346 MAC16(b1, - W7, col[8*3]); |
347 MAC16(b2, - W1, col[8*3]); | 347 MAC16(b2, - W1, col[8*3]); |
348 MAC16(b3, - W5, col[8*3]); | 348 MAC16(b3, - W5, col[8*3]); |
349 | 349 |
350 if(col[8*4]){ | 350 if(col[8*4]){ |
351 a0 += + W4*col[8*4]; | 351 a0 += + W4*col[8*4]; |
352 a1 += - W4*col[8*4]; | 352 a1 += - W4*col[8*4]; |
353 a2 += - W4*col[8*4]; | 353 a2 += - W4*col[8*4]; |
354 a3 += + W4*col[8*4]; | 354 a3 += + W4*col[8*4]; |
355 } | 355 } |
356 | 356 |
357 if (col[8*5]) { | 357 if (col[8*5]) { |
358 MAC16(b0, + W5, col[8*5]); | 358 MAC16(b0, + W5, col[8*5]); |
359 MAC16(b1, - W1, col[8*5]); | 359 MAC16(b1, - W1, col[8*5]); |
360 MAC16(b2, + W7, col[8*5]); | 360 MAC16(b2, + W7, col[8*5]); |
361 MAC16(b3, + W3, col[8*5]); | 361 MAC16(b3, + W3, col[8*5]); |
362 } | 362 } |
363 | 363 |
364 if(col[8*6]){ | 364 if(col[8*6]){ |
365 a0 += + W6*col[8*6]; | 365 a0 += + W6*col[8*6]; |
366 a1 += - W2*col[8*6]; | 366 a1 += - W2*col[8*6]; |
367 a2 += + W2*col[8*6]; | 367 a2 += + W2*col[8*6]; |
368 a3 += - W6*col[8*6]; | 368 a3 += - W6*col[8*6]; |
369 } | 369 } |
370 | 370 |
371 if (col[8*7]) { | 371 if (col[8*7]) { |
372 MAC16(b0, + W7, col[8*7]); | 372 MAC16(b0, + W7, col[8*7]); |
373 MAC16(b1, - W5, col[8*7]); | 373 MAC16(b1, - W5, col[8*7]); |
374 MAC16(b2, + W3, col[8*7]); | 374 MAC16(b2, + W3, col[8*7]); |
375 MAC16(b3, - W1, col[8*7]); | 375 MAC16(b3, - W1, col[8*7]); |
376 } | 376 } |
377 | 377 |
378 col[0 ] = ((a0 + b0) >> COL_SHIFT); | 378 col[0 ] = ((a0 + b0) >> COL_SHIFT); |
379 col[8 ] = ((a1 + b1) >> COL_SHIFT); | 379 col[8 ] = ((a1 + b1) >> COL_SHIFT); |
380 col[16] = ((a2 + b2) >> COL_SHIFT); | 380 col[16] = ((a2 + b2) >> COL_SHIFT); |
381 col[24] = ((a3 + b3) >> COL_SHIFT); | 381 col[24] = ((a3 + b3) >> COL_SHIFT); |