comparison simple_idct.c @ 2967:ef2149182f1c libavcodec

COSMETICS: Remove all trailing whitespace.
author diego
date Sat, 17 Dec 2005 18:14:38 +0000
parents 1e39f273ecd6
children bfabfdf9ce55
comparison
equal deleted inserted replaced
2966:564788471dd4 2967:ef2149182f1c
15 * 15 *
16 * You should have received a copy of the GNU Lesser General Public 16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software 17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */ 19 */
20 20
21 /** 21 /**
22 * @file simple_idct.c 22 * @file simple_idct.c
23 * simpleidct in C. 23 * simpleidct in C.
24 */ 24 */
25 25
26 /* 26 /*
27 based upon some outcommented c code from mpeg2dec (idct_mmx.c 27 based upon some outcommented c code from mpeg2dec (idct_mmx.c
28 written by Aaron Holtzman <aholtzma@ess.engr.uvic.ca>) 28 written by Aaron Holtzman <aholtzma@ess.engr.uvic.ca>)
29 */ 29 */
30 #include "avcodec.h" 30 #include "avcodec.h"
31 #include "dsputil.h" 31 #include "dsputil.h"
32 #include "simple_idct.h" 32 #include "simple_idct.h"
33 33
87 #define ROW0_MASK 0xffff000000000000LL 87 #define ROW0_MASK 0xffff000000000000LL
88 #else 88 #else
89 #define ROW0_MASK 0xffffLL 89 #define ROW0_MASK 0xffffLL
90 #endif 90 #endif
91 if(sizeof(DCTELEM)==2){ 91 if(sizeof(DCTELEM)==2){
92 if ( ((((uint64_t *)row)[0] & ~ROW0_MASK) | 92 if ( ((((uint64_t *)row)[0] & ~ROW0_MASK) |
93 ((uint64_t *)row)[1]) == 0) { 93 ((uint64_t *)row)[1]) == 0) {
94 temp = (row[0] << 3) & 0xffff; 94 temp = (row[0] << 3) & 0xffff;
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;
106 } 106 }
107 #else 107 #else
108 if(sizeof(DCTELEM)==2){ 108 if(sizeof(DCTELEM)==2){
109 if (!(((uint32_t*)row)[1] | 109 if (!(((uint32_t*)row)[1] |
110 ((uint32_t*)row)[2] | 110 ((uint32_t*)row)[2] |
111 ((uint32_t*)row)[3] | 111 ((uint32_t*)row)[3] |
112 row[1])) { 112 row[1])) {
113 temp = (row[0] << 3) & 0xffff; 113 temp = (row[0] << 3) & 0xffff;
114 temp += temp << 16; 114 temp += temp << 16;
115 ((uint32_t*)row)[0]=((uint32_t*)row)[1] = 115 ((uint32_t*)row)[0]=((uint32_t*)row)[1] =
116 ((uint32_t*)row)[2]=((uint32_t*)row)[3] = temp; 116 ((uint32_t*)row)[2]=((uint32_t*)row)[3] = temp;
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
158 MAC16(b0, W5, row[5]); 158 MAC16(b0, W5, row[5]);
159 MAC16(b0, W7, row[7]); 159 MAC16(b0, W7, row[7]);
160 160
161 MAC16(b1, -W1, row[5]); 161 MAC16(b1, -W1, row[5]);
162 MAC16(b1, -W5, row[7]); 162 MAC16(b1, -W5, row[7]);
163 163
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;
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
248 dest[0] = cm[(a1 - b1) >> COL_SHIFT]; 248 dest[0] = cm[(a1 - b1) >> COL_SHIFT];
249 dest += line_size; 249 dest += line_size;
250 dest[0] = cm[(a0 - b0) >> COL_SHIFT]; 250 dest[0] = cm[(a0 - b0) >> COL_SHIFT];
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
388 void simple_idct_put(uint8_t *dest, int line_size, DCTELEM *block) 388 void simple_idct_put(uint8_t *dest, int line_size, DCTELEM *block)
389 { 389 {
390 int i; 390 int i;
391 for(i=0; i<8; i++) 391 for(i=0; i<8; i++)
392 idctRowCondDC(block + i*8); 392 idctRowCondDC(block + i*8);
393 393
394 for(i=0; i<8; i++) 394 for(i=0; i<8; i++)
395 idctSparseColPut(dest + i, line_size, block + i); 395 idctSparseColPut(dest + i, line_size, block + i);
396 } 396 }
397 397
398 void simple_idct_add(uint8_t *dest, int line_size, DCTELEM *block) 398 void simple_idct_add(uint8_t *dest, int line_size, DCTELEM *block)
399 { 399 {
400 int i; 400 int i;
401 for(i=0; i<8; i++) 401 for(i=0; i<8; i++)
402 idctRowCondDC(block + i*8); 402 idctRowCondDC(block + i*8);
403 403
404 for(i=0; i<8; i++) 404 for(i=0; i<8; i++)
405 idctSparseColAdd(dest + i, line_size, block + i); 405 idctSparseColAdd(dest + i, line_size, block + i);
406 } 406 }
407 407
408 void simple_idct(DCTELEM *block) 408 void simple_idct(DCTELEM *block)
409 { 409 {
410 int i; 410 int i;
411 for(i=0; i<8; i++) 411 for(i=0; i<8; i++)
412 idctRowCondDC(block + i*8); 412 idctRowCondDC(block + i*8);
413 413
414 for(i=0; i<8; i++) 414 for(i=0; i<8; i++)
415 idctSparseCol(block + i); 415 idctSparseCol(block + i);
416 } 416 }
417 417
418 /* 2x4x8 idct */ 418 /* 2x4x8 idct */
465 specification */ 465 specification */
466 void simple_idct248_put(uint8_t *dest, int line_size, DCTELEM *block) 466 void simple_idct248_put(uint8_t *dest, int line_size, DCTELEM *block)
467 { 467 {
468 int i; 468 int i;
469 DCTELEM *ptr; 469 DCTELEM *ptr;
470 470
471 /* butterfly */ 471 /* butterfly */
472 ptr = block; 472 ptr = block;
473 for(i=0;i<4;i++) { 473 for(i=0;i<4;i++) {
474 BF(0); 474 BF(0);
475 BF(1); 475 BF(1);