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>
... | ... |
@@ -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++) { |