[FFmpeg-cvslog] dct-test: split table in two for idct and fdct

Mans Rullgard git at videolan.org
Tue Jul 5 02:52:24 CEST 2011


ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Sun Jul  3 23:03:11 2011 +0100| [4b357756b1a6e4a8d47d5e8def7c8561efc61c60] | committer: Mans Rullgard

dct-test: split table in two for idct and fdct

Signed-off-by: Mans Rullgard <mans at mansr.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4b357756b1a6e4a8d47d5e8def7c8561efc61c60
---

 libavcodec/dct-test.c |   36 ++++++++++++++++++++++--------------
 1 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/libavcodec/dct-test.c b/libavcodec/dct-test.c
index 7602cfa..9a38304 100644
--- a/libavcodec/dct-test.c
+++ b/libavcodec/dct-test.c
@@ -85,23 +85,36 @@ struct algo {
 
 static int cpu_flags;
 
-struct algo algos[] = {
+static const struct algo fdct_tab[] = {
     {"REF-DBL",         0, ff_ref_fdct,        ff_ref_fdct, NO_PERM},
     {"FAAN",            0, ff_faandct,         ff_ref_fdct, FAAN_SCALE},
-    {"FAANI",           1, ff_faanidct,        ff_ref_idct, NO_PERM},
     {"IJG-AAN-INT",     0, fdct_ifast,         ff_ref_fdct, SCALE_PERM},
     {"IJG-LLM-INT",     0, ff_jpeg_fdct_islow, ff_ref_fdct, NO_PERM},
-    {"REF-DBL",         1, ff_ref_idct,        ff_ref_idct, NO_PERM},
-    {"INT",             1, j_rev_dct,          ff_ref_idct, MMX_PERM},
-    {"SIMPLE-C",        1, ff_simple_idct,     ff_ref_idct, NO_PERM},
 
 #if HAVE_MMX
     {"MMX",             0, ff_fdct_mmx,        ff_ref_fdct, NO_PERM, AV_CPU_FLAG_MMX},
-#if HAVE_MMX2
     {"MMX2",            0, ff_fdct_mmx2,       ff_ref_fdct, NO_PERM, AV_CPU_FLAG_MMX2},
     {"SSE2",            0, ff_fdct_sse2,       ff_ref_fdct, NO_PERM, AV_CPU_FLAG_SSE2},
 #endif
 
+#if HAVE_ALTIVEC
+    {"altivecfdct",     0, fdct_altivec,       ff_ref_fdct, NO_PERM, AV_CPU_FLAG_ALTIVEC},
+#endif
+
+#if ARCH_BFIN
+    {"BFINfdct",        0, ff_bfin_fdct,       ff_ref_fdct, NO_PERM},
+#endif
+
+    { 0 }
+};
+
+static const struct algo idct_tab[] = {
+    {"FAANI",           1, ff_faanidct,        ff_ref_idct, NO_PERM},
+    {"REF-DBL",         1, ff_ref_idct,        ff_ref_idct, NO_PERM},
+    {"INT",             1, j_rev_dct,          ff_ref_idct, MMX_PERM},
+    {"SIMPLE-C",        1, ff_simple_idct,     ff_ref_idct, NO_PERM},
+
+#if HAVE_MMX
 #if CONFIG_GPL
     {"LIBMPEG2-MMX",    1, ff_mmx_idct,        ff_ref_idct, MMX_PERM, AV_CPU_FLAG_MMX},
     {"LIBMPEG2-MMX2",   1, ff_mmxext_idct,     ff_ref_idct, MMX_PERM, AV_CPU_FLAG_MMX2},
@@ -112,18 +125,14 @@ struct algo algos[] = {
     {"XVID-SSE2",       1, ff_idct_xvid_sse2,  ff_ref_idct, SSE2_PERM, AV_CPU_FLAG_SSE2},
 #endif
 
-#if HAVE_ALTIVEC
-    {"altivecfdct",     0, fdct_altivec,       ff_ref_fdct, NO_PERM, AV_CPU_FLAG_ALTIVEC},
-#endif
-
 #if ARCH_BFIN
-    {"BFINfdct",        0, ff_bfin_fdct,       ff_ref_fdct, NO_PERM},
     {"BFINidct",        1, ff_bfin_idct,       ff_ref_idct, NO_PERM},
 #endif
 
 #if ARCH_ARM
     {"SIMPLE-ARM",      1, ff_simple_idct_arm, ff_ref_idct, NO_PERM },
     {"INT-ARM",         1, ff_j_rev_dct_arm,   ff_ref_idct, MMX_PERM },
+#endif
 #if HAVE_ARMV5TE
     {"SIMPLE-ARMV5TE",  1, ff_simple_idct_armv5te, ff_ref_idct, NO_PERM },
 #endif
@@ -133,7 +142,6 @@ struct algo algos[] = {
 #if HAVE_NEON
     {"SIMPLE-NEON",     1, ff_simple_idct_neon, ff_ref_idct, PARTTRANS_PERM },
 #endif
-#endif /* ARCH_ARM */
 
 #if ARCH_ALPHA
     {"SIMPLE-ALPHA",    1, ff_simple_idct_axp,  ff_ref_idct, NO_PERM },
@@ -537,9 +545,9 @@ int main(int argc, char **argv)
     if (test_248_dct) {
         idct248_error("SIMPLE-C", ff_simple_idct248_put);
     } else {
+        const struct algo *algos = test_idct ? idct_tab : fdct_tab;
         for (i = 0; algos[i].name; i++)
-            if (algos[i].is_idct == test_idct &&
-                !(~cpu_flags & algos[i].mm_support)) {
+            if (!(~cpu_flags & algos[i].mm_support)) {
                 dct_error(&algos[i], test);
             }
     }



More information about the ffmpeg-cvslog mailing list