Browse code

dct-test: remove 'ref' function pointer from tables

The reference function can be inferred from the direction of the
transform, no need for storing it with each entry.

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

Mans Rullgard authored on 2011/07/04 19:54:22
Showing 1 changed files
... ...
@@ -70,7 +70,6 @@ void ff_simple_idct_axp(DCTELEM *data);
70 70
 struct algo {
71 71
     const char *name;
72 72
     void (*func)(DCTELEM *block);
73
-    void (*ref) (DCTELEM *block);
74 73
     enum formattag { NO_PERM, MMX_PERM, MMX_SIMPLE_PERM, SCALE_PERM,
75 74
                      SSE2_PERM, PARTTRANS_PERM } format;
76 75
     int mm_support;
... ...
@@ -86,65 +85,65 @@ struct algo {
86 86
 static int cpu_flags;
87 87
 
88 88
 static const struct algo fdct_tab[] = {
89
-    {"REF-DBL",         ff_ref_fdct,        ff_ref_fdct, NO_PERM},
90
-    {"FAAN",            ff_faandct,         ff_ref_fdct, FAAN_SCALE},
91
-    {"IJG-AAN-INT",     fdct_ifast,         ff_ref_fdct, SCALE_PERM},
92
-    {"IJG-LLM-INT",     ff_jpeg_fdct_islow, ff_ref_fdct, NO_PERM},
89
+    { "REF-DBL",        ff_ref_fdct,           NO_PERM    },
90
+    { "FAAN",           ff_faandct,            FAAN_SCALE },
91
+    { "IJG-AAN-INT",    fdct_ifast,            SCALE_PERM },
92
+    { "IJG-LLM-INT",    ff_jpeg_fdct_islow,    NO_PERM    },
93 93
 
94 94
 #if HAVE_MMX
95
-    {"MMX",             ff_fdct_mmx,        ff_ref_fdct, NO_PERM, AV_CPU_FLAG_MMX},
96
-    {"MMX2",            ff_fdct_mmx2,       ff_ref_fdct, NO_PERM, AV_CPU_FLAG_MMX2},
97
-    {"SSE2",            ff_fdct_sse2,       ff_ref_fdct, NO_PERM, AV_CPU_FLAG_SSE2},
95
+    { "MMX",            ff_fdct_mmx,           NO_PERM,   AV_CPU_FLAG_MMX     },
96
+    { "MMX2",           ff_fdct_mmx2,          NO_PERM,   AV_CPU_FLAG_MMX2    },
97
+    { "SSE2",           ff_fdct_sse2,          NO_PERM,   AV_CPU_FLAG_SSE2    },
98 98
 #endif
99 99
 
100 100
 #if HAVE_ALTIVEC
101
-    {"altivecfdct",     fdct_altivec,       ff_ref_fdct, NO_PERM, AV_CPU_FLAG_ALTIVEC},
101
+    { "altivecfdct",    fdct_altivec,          NO_PERM,   AV_CPU_FLAG_ALTIVEC },
102 102
 #endif
103 103
 
104 104
 #if ARCH_BFIN
105
-    {"BFINfdct",        ff_bfin_fdct,       ff_ref_fdct, NO_PERM},
105
+    { "BFINfdct",       ff_bfin_fdct,          NO_PERM  },
106 106
 #endif
107 107
 
108 108
     { 0 }
109 109
 };
110 110
 
111 111
 static const struct algo idct_tab[] = {
112
-    {"FAANI",           ff_faanidct,        ff_ref_idct, NO_PERM},
113
-    {"REF-DBL",         ff_ref_idct,        ff_ref_idct, NO_PERM},
114
-    {"INT",             j_rev_dct,          ff_ref_idct, MMX_PERM},
115
-    {"SIMPLE-C",        ff_simple_idct,     ff_ref_idct, NO_PERM},
112
+    { "FAANI",          ff_faanidct,           NO_PERM  },
113
+    { "REF-DBL",        ff_ref_idct,           NO_PERM  },
114
+    { "INT",            j_rev_dct,             MMX_PERM },
115
+    { "SIMPLE-C",       ff_simple_idct,        NO_PERM  },
116 116
 
117 117
 #if HAVE_MMX
118 118
 #if CONFIG_GPL
119
-    {"LIBMPEG2-MMX",    ff_mmx_idct,        ff_ref_idct, MMX_PERM, AV_CPU_FLAG_MMX, 1},
120
-    {"LIBMPEG2-MMX2",   ff_mmxext_idct,     ff_ref_idct, MMX_PERM, AV_CPU_FLAG_MMX2, 1},
119
+    { "LIBMPEG2-MMX",   ff_mmx_idct,           MMX_PERM,  AV_CPU_FLAG_MMX,  1 },
120
+    { "LIBMPEG2-MMX2",  ff_mmxext_idct,        MMX_PERM,  AV_CPU_FLAG_MMX2, 1 },
121 121
 #endif
122
-    {"SIMPLE-MMX",      ff_simple_idct_mmx, ff_ref_idct, MMX_SIMPLE_PERM, AV_CPU_FLAG_MMX},
123
-    {"XVID-MMX",        ff_idct_xvid_mmx,   ff_ref_idct, NO_PERM, AV_CPU_FLAG_MMX, 1},
124
-    {"XVID-MMX2",       ff_idct_xvid_mmx2,  ff_ref_idct, NO_PERM, AV_CPU_FLAG_MMX2, 1},
125
-    {"XVID-SSE2",       ff_idct_xvid_sse2,  ff_ref_idct, SSE2_PERM, AV_CPU_FLAG_SSE2, 1},
122
+    { "SIMPLE-MMX",     ff_simple_idct_mmx,  MMX_SIMPLE_PERM, AV_CPU_FLAG_MMX },
123
+    { "XVID-MMX",       ff_idct_xvid_mmx,      NO_PERM,   AV_CPU_FLAG_MMX,  1 },
124
+    { "XVID-MMX2",      ff_idct_xvid_mmx2,     NO_PERM,   AV_CPU_FLAG_MMX2, 1 },
125
+    { "XVID-SSE2",      ff_idct_xvid_sse2,     SSE2_PERM, AV_CPU_FLAG_SSE2, 1 },
126 126
 #endif
127 127
 
128 128
 #if ARCH_BFIN
129
-    {"BFINidct",        ff_bfin_idct,       ff_ref_idct, NO_PERM},
129
+    { "BFINidct",       ff_bfin_idct,          NO_PERM  },
130 130
 #endif
131 131
 
132 132
 #if ARCH_ARM
133
-    {"SIMPLE-ARM",      ff_simple_idct_arm, ff_ref_idct, NO_PERM },
134
-    {"INT-ARM",         ff_j_rev_dct_arm,   ff_ref_idct, MMX_PERM },
133
+    { "SIMPLE-ARM",     ff_simple_idct_arm,    NO_PERM  },
134
+    { "INT-ARM",        ff_j_rev_dct_arm,      MMX_PERM },
135 135
 #endif
136 136
 #if HAVE_ARMV5TE
137
-    {"SIMPLE-ARMV5TE",  ff_simple_idct_armv5te, ff_ref_idct, NO_PERM },
137
+    { "SIMPLE-ARMV5TE", ff_simple_idct_armv5te,NO_PERM  },
138 138
 #endif
139 139
 #if HAVE_ARMV6
140
-    {"SIMPLE-ARMV6",    ff_simple_idct_armv6, ff_ref_idct, MMX_PERM },
140
+    { "SIMPLE-ARMV6",   ff_simple_idct_armv6,  MMX_PERM },
141 141
 #endif
142 142
 #if HAVE_NEON
143
-    {"SIMPLE-NEON",     ff_simple_idct_neon, ff_ref_idct, PARTTRANS_PERM },
143
+    { "SIMPLE-NEON",    ff_simple_idct_neon,   PARTTRANS_PERM },
144 144
 #endif
145 145
 
146 146
 #if ARCH_ALPHA
147
-    {"SIMPLE-ALPHA",    ff_simple_idct_axp,  ff_ref_idct, NO_PERM },
147
+    { "SIMPLE-ALPHA",   ff_simple_idct_axp,    NO_PERM },
148 148
 #endif
149 149
 
150 150
     { 0 }
... ...
@@ -203,6 +202,7 @@ static inline void mmx_emms(void)
203 203
 
204 204
 static int dct_error(const struct algo *dct, int test, int is_idct, int speed)
205 205
 {
206
+    void (*ref)(DCTELEM *block) = is_idct ? ff_ref_idct : ff_ref_fdct;
206 207
     int it, i, scale;
207 208
     int err_inf, v;
208 209
     int64_t err2, ti, ti1, it1, err_sum = 0;
... ...
@@ -275,7 +275,7 @@ static int dct_error(const struct algo *dct, int test, int is_idct, int speed)
275 275
             }
276 276
         }
277 277
 
278
-        dct->ref(block1);
278
+        ref(block1);
279 279
 
280 280
         blockSumErr = 0;
281 281
         for (i = 0; i < 64; i++) {