Mercurial > libavcodec.hg
comparison simple_idct.c @ 642:4263629270c8 libavcodec
10l (compilation if defined ARCH_ALPHA)
author | michaelni |
---|---|
date | Mon, 02 Sep 2002 17:08:40 +0000 |
parents | e7b72c1dfa1b |
children | 2b7ff6dfee35 |
comparison
equal
deleted
inserted
replaced
641:eaa9ef2e2557 | 642:4263629270c8 |
---|---|
171 row[7] = (a0 - b0) >> ROW_SHIFT; | 171 row[7] = (a0 - b0) >> ROW_SHIFT; |
172 | 172 |
173 return 2; | 173 return 2; |
174 } | 174 } |
175 | 175 |
176 inline static void idctSparseCol(int16_t *col) | 176 inline static void idctSparseCol2(int16_t *col) |
177 { | 177 { |
178 int a0, a1, a2, a3, b0, b1, b2, b3; | 178 int a0, a1, a2, a3, b0, b1, b2, b3; |
179 | 179 |
180 col[0] += (1 << (COL_SHIFT - 1)) / W4; | 180 col[0] += (1 << (COL_SHIFT - 1)) / W4; |
181 | 181 |
484 } | 484 } |
485 | 485 |
486 static inline void idctSparseCol (int16_t * col) | 486 static inline void idctSparseCol (int16_t * col) |
487 { | 487 { |
488 int a0, a1, a2, a3, b0, b1, b2, b3; | 488 int a0, a1, a2, a3, b0, b1, b2, b3; |
489 UINT8 *cm = cropTbl + MAX_NEG_CROP; | |
490 | 489 |
491 /* XXX: I did that only to give same values as previous code */ | 490 /* XXX: I did that only to give same values as previous code */ |
492 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); | 491 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); |
493 a1 = a0; | 492 a1 = a0; |
494 a2 = a0; | 493 a2 = a0; |
595 if (rowsZero) { | 594 if (rowsZero) { |
596 idctCol2(block); | 595 idctCol2(block); |
597 } else if (rowsConstant) { | 596 } else if (rowsConstant) { |
598 uint64_t *lblock = (uint64_t *) block; | 597 uint64_t *lblock = (uint64_t *) block; |
599 | 598 |
600 idctSparseCol(block); | 599 idctSparseCol2(block); |
601 for (i = 0; i < 8; i++) { | 600 for (i = 0; i < 8; i++) { |
602 uint64_t v = (uint16_t) block[i * 8]; | 601 uint64_t v = (uint16_t) block[i * 8]; |
603 | 602 |
604 v += v << 16; | 603 v += v << 16; |
605 v += v << 32; | 604 v += v << 32; |
607 lblock[1] = v; | 606 lblock[1] = v; |
608 lblock += 2; | 607 lblock += 2; |
609 } | 608 } |
610 } else { | 609 } else { |
611 for (i = 0; i < 8; i++) | 610 for (i = 0; i < 8; i++) |
612 idctSparseCol(block + i); | 611 idctSparseCol2(block + i); |
613 } | 612 } |
614 } | 613 } |
615 | 614 |
616 /* XXX: suppress this mess */ | 615 /* XXX: suppress this mess */ |
617 void simple_idct_put(UINT8 *dest, int line_size, DCTELEM *block) | 616 void simple_idct_put(UINT8 *dest, int line_size, DCTELEM *block) |