aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/dct-test.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2008-06-28 10:42:31 +0000
committerMichael Niedermayer <michaelni@gmx.at>2008-06-28 10:42:31 +0000
commitaadd27cdf41a3ecc4a00588d7829e1672a066b98 (patch)
treed6145b36fefa115a65cbaa74bb3e8f2fd61f9a23 /libavcodec/dct-test.c
parentddca6ab678bb7f4abd17b040a059b9b79630ff48 (diff)
downloadffmpeg-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.c19
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();