diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2008-06-28 10:42:31 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2008-06-28 10:42:31 +0000 |
commit | aadd27cdf41a3ecc4a00588d7829e1672a066b98 (patch) | |
tree | d6145b36fefa115a65cbaa74bb3e8f2fd61f9a23 /libavcodec/dct-test.c | |
parent | ddca6ab678bb7f4abd17b040a059b9b79630ff48 (diff) | |
download | ffmpeg-aadd27cdf41a3ecc4a00588d7829e1672a066b98.tar.gz |
Make code independent/less dependent on dsputil.
This also makes the mmx parts work again ...
Originally committed as revision 14021 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/dct-test.c')
-rw-r--r-- | libavcodec/dct-test.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libavcodec/dct-test.c b/libavcodec/dct-test.c index 0868c2e3f8..f3f9408d98 100644 --- a/libavcodec/dct-test.c +++ b/libavcodec/dct-test.c @@ -33,7 +33,6 @@ #include <math.h> #include "libavutil/common.h" -#include "dsputil.h" #include "simple_idct.h" #include "faandct.h" @@ -79,6 +78,8 @@ struct algo { #define FAAN_SCALE NO_PERM #endif +static int cpu_flags; + struct algo algos[] = { {"REF-DBL", 0, fdct, fdct, NO_PERM}, {"FAAN", 0, ff_faandct, fdct, FAAN_SCALE}, @@ -172,6 +173,14 @@ static DCTELEM block[64] __attribute__ ((aligned (16))); static DCTELEM block1[64] __attribute__ ((aligned (8))); static DCTELEM block_org[64] __attribute__ ((aligned (8))); +static inline void mmx_emms(void) +{ +#ifdef HAVE_MMX + if (cpu_flags & MM_MMX) + asm volatile ("emms\n\t"); +#endif +} + void dct_error(const char *name, int is_idct, void (*fdct_func)(DCTELEM *block), void (*fdct_ref)(DCTELEM *block), int form, int test) @@ -249,7 +258,7 @@ void dct_error(const char *name, int is_idct, #endif fdct_func(block); - emms_c(); /* for ff_mmx_idct */ + mmx_emms(); if (form == SCALE_PERM) { for(i=0; i<64; i++) { @@ -346,7 +355,7 @@ void dct_error(const char *name, int is_idct, it1 += NB_ITS_SPEED; ti1 = gettime() - ti; } while (ti1 < 1000000); - emms_c(); + mmx_emms(); printf("%s %s: %0.1f kdct/s\n", is_idct ? "IDCT" : "DCT", @@ -506,7 +515,7 @@ void idct248_error(const char *name, it1 += NB_ITS_SPEED; ti1 = gettime() - ti; } while (ti1 < 1000000); - emms_c(); + mmx_emms(); printf("%s %s: %0.1f kdct/s\n", 1 ? "IDCT248" : "DCT248", @@ -528,7 +537,7 @@ int main(int argc, char **argv) int test_idct = 0, test_248_dct = 0; int c,i; int test=1; - int cpu_flags = mm_support(); + cpu_flags = mm_support(); init_fdct(); idct_mmx_init(); |