Mercurial > libavcodec.hg
comparison dct-test.c @ 9293:dc9005dec909 libavcodec
Give better names to reference DCT functions.
patch by Dylan Yudaken, dyudaken gmail com
author | diego |
---|---|
date | Tue, 31 Mar 2009 08:55:22 +0000 |
parents | ea0e5e9a520f |
children | b225f51903af |
comparison
equal
deleted
inserted
replaced
9292:f0732d44f655 | 9293:dc9005dec909 |
---|---|
44 #undef printf | 44 #undef printf |
45 | 45 |
46 void *fast_memcpy(void *a, const void *b, size_t c){return memcpy(a,b,c);}; | 46 void *fast_memcpy(void *a, const void *b, size_t c){return memcpy(a,b,c);}; |
47 | 47 |
48 /* reference fdct/idct */ | 48 /* reference fdct/idct */ |
49 void fdct(DCTELEM *block); | 49 void ff_ref_fdct(DCTELEM *block); |
50 void idct(DCTELEM *block); | 50 void ff_ref_idct(DCTELEM *block); |
51 void init_fdct(void); | 51 void ff_ref_dct_init(void); |
52 | 52 |
53 void ff_mmx_idct(DCTELEM *data); | 53 void ff_mmx_idct(DCTELEM *data); |
54 void ff_mmxext_idct(DCTELEM *data); | 54 void ff_mmxext_idct(DCTELEM *data); |
55 | 55 |
56 void odivx_idct_c(short *block); | 56 void odivx_idct_c(short *block); |
88 #endif | 88 #endif |
89 | 89 |
90 static int cpu_flags; | 90 static int cpu_flags; |
91 | 91 |
92 struct algo algos[] = { | 92 struct algo algos[] = { |
93 {"REF-DBL", 0, fdct, fdct, NO_PERM}, | 93 {"REF-DBL", 0, ff_ref_fdct, ff_ref_fdct, NO_PERM}, |
94 {"FAAN", 0, ff_faandct, fdct, FAAN_SCALE}, | 94 {"FAAN", 0, ff_faandct, ff_ref_fdct, FAAN_SCALE}, |
95 {"FAANI", 1, ff_faanidct, idct, NO_PERM}, | 95 {"FAANI", 1, ff_faanidct, ff_ref_idct, NO_PERM}, |
96 {"IJG-AAN-INT", 0, fdct_ifast, fdct, SCALE_PERM}, | 96 {"IJG-AAN-INT", 0, fdct_ifast, ff_ref_fdct, SCALE_PERM}, |
97 {"IJG-LLM-INT", 0, ff_jpeg_fdct_islow, fdct, NO_PERM}, | 97 {"IJG-LLM-INT", 0, ff_jpeg_fdct_islow, ff_ref_fdct, NO_PERM}, |
98 {"REF-DBL", 1, idct, idct, NO_PERM}, | 98 {"REF-DBL", 1, ff_ref_idct, ff_ref_idct, NO_PERM}, |
99 {"INT", 1, j_rev_dct, idct, MMX_PERM}, | 99 {"INT", 1, j_rev_dct, ff_ref_idct, MMX_PERM}, |
100 {"SIMPLE-C", 1, ff_simple_idct, idct, NO_PERM}, | 100 {"SIMPLE-C", 1, ff_simple_idct, ff_ref_idct, NO_PERM}, |
101 | 101 |
102 #if HAVE_MMX | 102 #if HAVE_MMX |
103 {"MMX", 0, ff_fdct_mmx, fdct, NO_PERM, FF_MM_MMX}, | 103 {"MMX", 0, ff_fdct_mmx, ff_ref_fdct, NO_PERM, FF_MM_MMX}, |
104 #if HAVE_MMX2 | 104 #if HAVE_MMX2 |
105 {"MMX2", 0, ff_fdct_mmx2, fdct, NO_PERM, FF_MM_MMXEXT}, | 105 {"MMX2", 0, ff_fdct_mmx2, ff_ref_fdct, NO_PERM, FF_MM_MMXEXT}, |
106 {"SSE2", 0, ff_fdct_sse2, fdct, NO_PERM, FF_MM_SSE2}, | 106 {"SSE2", 0, ff_fdct_sse2, ff_ref_fdct, NO_PERM, FF_MM_SSE2}, |
107 #endif | 107 #endif |
108 | 108 |
109 #if CONFIG_GPL | 109 #if CONFIG_GPL |
110 {"LIBMPEG2-MMX", 1, ff_mmx_idct, idct, MMX_PERM, FF_MM_MMX}, | 110 {"LIBMPEG2-MMX", 1, ff_mmx_idct, ff_ref_idct, MMX_PERM, FF_MM_MMX}, |
111 {"LIBMPEG2-MMXEXT", 1, ff_mmxext_idct, idct, MMX_PERM, FF_MM_MMXEXT}, | 111 {"LIBMPEG2-MMXEXT", 1, ff_mmxext_idct, ff_ref_idct, MMX_PERM, FF_MM_MMXEXT}, |
112 #endif | 112 #endif |
113 {"SIMPLE-MMX", 1, ff_simple_idct_mmx, idct, MMX_SIMPLE_PERM, FF_MM_MMX}, | 113 {"SIMPLE-MMX", 1, ff_simple_idct_mmx, ff_ref_idct, MMX_SIMPLE_PERM, FF_MM_MMX}, |
114 {"XVID-MMX", 1, ff_idct_xvid_mmx, idct, NO_PERM, FF_MM_MMX}, | 114 {"XVID-MMX", 1, ff_idct_xvid_mmx, ff_ref_idct, NO_PERM, FF_MM_MMX}, |
115 {"XVID-MMX2", 1, ff_idct_xvid_mmx2, idct, NO_PERM, FF_MM_MMXEXT}, | 115 {"XVID-MMX2", 1, ff_idct_xvid_mmx2, ff_ref_idct, NO_PERM, FF_MM_MMXEXT}, |
116 {"XVID-SSE2", 1, ff_idct_xvid_sse2, idct, SSE2_PERM, FF_MM_SSE2}, | 116 {"XVID-SSE2", 1, ff_idct_xvid_sse2, ff_ref_idct, SSE2_PERM, FF_MM_SSE2}, |
117 #endif | 117 #endif |
118 | 118 |
119 #if HAVE_ALTIVEC | 119 #if HAVE_ALTIVEC |
120 {"altivecfdct", 0, fdct_altivec, fdct, NO_PERM, FF_MM_ALTIVEC}, | 120 {"altivecfdct", 0, fdct_altivec, ff_ref_fdct, NO_PERM, FF_MM_ALTIVEC}, |
121 #endif | 121 #endif |
122 | 122 |
123 #if ARCH_BFIN | 123 #if ARCH_BFIN |
124 {"BFINfdct", 0, ff_bfin_fdct, fdct, NO_PERM}, | 124 {"BFINfdct", 0, ff_bfin_fdct, ff_ref_fdct, NO_PERM}, |
125 {"BFINidct", 1, ff_bfin_idct, idct, NO_PERM}, | 125 {"BFINidct", 1, ff_bfin_idct, ff_ref_idct, NO_PERM}, |
126 #endif | 126 #endif |
127 | 127 |
128 #if ARCH_ARM | 128 #if ARCH_ARM |
129 {"SIMPLE-ARM", 1, simple_idct_ARM, idct, NO_PERM }, | 129 {"SIMPLE-ARM", 1, simple_idct_ARM, ff_ref_idct, NO_PERM }, |
130 {"INT-ARM", 1, j_rev_dct_ARM, idct, MMX_PERM }, | 130 {"INT-ARM", 1, j_rev_dct_ARM, ff_ref_idct, MMX_PERM }, |
131 #if HAVE_ARMV5TE | 131 #if HAVE_ARMV5TE |
132 {"SIMPLE-ARMV5TE", 1, simple_idct_armv5te, idct, NO_PERM }, | 132 {"SIMPLE-ARMV5TE", 1, simple_idct_armv5te, ff_ref_idct, NO_PERM }, |
133 #endif | 133 #endif |
134 #if HAVE_ARMV6 | 134 #if HAVE_ARMV6 |
135 {"SIMPLE-ARMV6", 1, ff_simple_idct_armv6, idct, MMX_PERM }, | 135 {"SIMPLE-ARMV6", 1, ff_simple_idct_armv6, ff_ref_idct, MMX_PERM }, |
136 #endif | 136 #endif |
137 #if HAVE_NEON | 137 #if HAVE_NEON |
138 {"SIMPLE-NEON", 1, ff_simple_idct_neon, idct, PARTTRANS_PERM }, | 138 {"SIMPLE-NEON", 1, ff_simple_idct_neon, ff_ref_idct, PARTTRANS_PERM }, |
139 #endif | 139 #endif |
140 #endif /* ARCH_ARM */ | 140 #endif /* ARCH_ARM */ |
141 | 141 |
142 #if ARCH_ALPHA | 142 #if ARCH_ALPHA |
143 {"SIMPLE-ALPHA", 1, ff_simple_idct_axp, idct, NO_PERM }, | 143 {"SIMPLE-ALPHA", 1, ff_simple_idct_axp, ff_ref_idct, NO_PERM }, |
144 #endif | 144 #endif |
145 | 145 |
146 { 0 } | 146 { 0 } |
147 }; | 147 }; |
148 | 148 |
221 switch(test){ | 221 switch(test){ |
222 case 0: | 222 case 0: |
223 for(i=0;i<64;i++) | 223 for(i=0;i<64;i++) |
224 block1[i] = (av_lfg_get(&prn) % 512) -256; | 224 block1[i] = (av_lfg_get(&prn) % 512) -256; |
225 if (is_idct){ | 225 if (is_idct){ |
226 fdct(block1); | 226 ff_ref_fdct(block1); |
227 | 227 |
228 for(i=0;i<64;i++) | 228 for(i=0;i<64;i++) |
229 block1[i]>>=3; | 229 block1[i]>>=3; |
230 } | 230 } |
231 break; | 231 break; |
335 switch(test){ | 335 switch(test){ |
336 case 0: | 336 case 0: |
337 for(i=0;i<64;i++) | 337 for(i=0;i<64;i++) |
338 block1[i] = av_lfg_get(&prn) % 512 -256; | 338 block1[i] = av_lfg_get(&prn) % 512 -256; |
339 if (is_idct){ | 339 if (is_idct){ |
340 fdct(block1); | 340 ff_ref_fdct(block1); |
341 | 341 |
342 for(i=0;i<64;i++) | 342 for(i=0;i<64;i++) |
343 block1[i]>>=3; | 343 block1[i]>>=3; |
344 } | 344 } |
345 break; | 345 break; |
560 int test_idct = 0, test_248_dct = 0; | 560 int test_idct = 0, test_248_dct = 0; |
561 int c,i; | 561 int c,i; |
562 int test=1; | 562 int test=1; |
563 cpu_flags = mm_support(); | 563 cpu_flags = mm_support(); |
564 | 564 |
565 init_fdct(); | 565 ff_ref_dct_init(); |
566 idct_mmx_init(); | 566 idct_mmx_init(); |
567 | 567 |
568 for(i=0;i<256;i++) cropTbl[i + MAX_NEG_CROP] = i; | 568 for(i=0;i<256;i++) cropTbl[i + MAX_NEG_CROP] = i; |
569 for(i=0;i<MAX_NEG_CROP;i++) { | 569 for(i=0;i<MAX_NEG_CROP;i++) { |
570 cropTbl[i] = 0; | 570 cropTbl[i] = 0; |