Mercurial > libavcodec.hg
diff dsputil.c @ 174:ac5075a55488 libavcodec
new IDCT code by Michael Niedermayer (michaelni@gmx.at) - #define SIMPLE_IDCT to enable
author | arpi_esp |
---|---|
date | Sun, 09 Dec 2001 12:04:09 +0000 |
parents | 06f63b58d2a8 |
children | 9e0e56869d05 |
line wrap: on
line diff
--- a/dsputil.c Wed Nov 28 01:26:03 2001 +0000 +++ b/dsputil.c Sun Dec 09 12:04:09 2001 +0000 @@ -20,6 +20,7 @@ #include <stdio.h> #include "avcodec.h" #include "dsputil.h" +#include "simple_idct.h" void (*ff_idct)(DCTELEM *block); void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size); @@ -388,6 +389,27 @@ /* permute block according so that it corresponds to the MMX idct order */ +#ifdef SIMPLE_IDCT +void block_permute(INT16 *block) +{ + int i; + INT16 temp[64]; + +// for(i=0; i<64; i++) temp[i] = block[ block_permute_op(i) ]; + for(i=0; i<64; i++) temp[ block_permute_op(i) ] = block[i]; + + for(i=0; i<64; i++) block[i] = temp[i]; +/* + for(i=0; i<64; i++) + { + if((i&7)==0) printf("\n"); + printf("%2d ", block[i]); + } +*/ +} + +#else + void block_permute(INT16 *block) { int tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; @@ -409,6 +431,7 @@ block += 8; } } +#endif void dsputil_init(void) { @@ -425,7 +448,11 @@ squareTbl[i] = (i - 256) * (i - 256); } +#ifdef SIMPLE_IDCT + ff_idct = simple_idct; +#else ff_idct = j_rev_dct; +#endif get_pixels = get_pixels_c; put_pixels_clamped = put_pixels_clamped_c; add_pixels_clamped = add_pixels_clamped_c; @@ -449,6 +476,10 @@ use_permuted_idct = 0; #endif +#ifdef SIMPLE_IDCT + if(ff_idct == simple_idct) use_permuted_idct=0; +#endif + if (use_permuted_idct) { /* permute for IDCT */ for(i=0;i<64;i++) {