--- libavcodec/arm/dct-test.c | 10 ++++++++-- libavcodec/dct-test.c | 41 +++++++++++++++++++++++++++++++++++------ libavcodec/ppc/dct-test.c | 10 ++++++++-- libavcodec/x86/dct-test.c | 9 +++++++-- 4 files changed, 58 insertions(+), 12 deletions(-)
diff --git a/libavcodec/arm/dct-test.c b/libavcodec/arm/dct-test.c index f9076b3..fd86b9d 100644 --- a/libavcodec/arm/dct-test.c +++ b/libavcodec/arm/dct-test.c @@ -20,11 +20,11 @@ #include "idct.h" -static const struct algo fdct_tab_arch[] = { +static const struct algo fdct_tab_arch8[] = { { 0 } }; -static const struct algo idct_tab_arch[] = { +static const struct algo idct_tab_arch8[] = { { "SIMPLE-ARM", ff_simple_idct_arm, FF_IDCT_PERM_NONE }, { "INT-ARM", ff_j_rev_dct_arm, FF_IDCT_PERM_LIBMPEG2 }, #if HAVE_ARMV5TE @@ -38,3 +38,9 @@ static const struct algo idct_tab_arch[] = { #endif { 0 } }; + +static const struct algo fdct_tab_arch10[] = { { 0 } }; +static const struct algo idct_tab_arch10[] = { { 0 } }; +static const struct algo fdct_tab_arch12[] = { { 0 } }; +static const struct algo idct_tab_arch12[] = { { 0 } }; + diff --git a/libavcodec/dct-test.c b/libavcodec/dct-test.c index 56e1a62..9a195ab 100644 --- a/libavcodec/dct-test.c +++ b/libavcodec/dct-test.c @@ -56,13 +56,19 @@ struct algo { int nonspec; }; -static const struct algo fdct_tab[] = { +static const struct algo fdct_tab8[] = { { "REF-DBL", ff_ref_fdct, FF_IDCT_PERM_NONE }, { "IJG-AAN-INT", ff_fdct_ifast, FF_IDCT_PERM_NONE }, { "IJG-LLM-INT", ff_jpeg_fdct_islow_8, FF_IDCT_PERM_NONE }, #if CONFIG_FAANDCT { "FAAN", ff_faandct, FF_IDCT_PERM_NONE }, #endif /* CONFIG_FAANDCT */ + { 0 } +}; + +static const struct algo fdct_tab10[] = { + { "IJG-LLM-INT10", ff_jpeg_fdct_islow_10, FF_IDCT_PERM_NONE }, + { 0 } }; static void ff_prores_idct_wrap(int16_t *dst){ @@ -78,7 +84,7 @@ static void ff_prores_idct_wrap(int16_t *dst){ } } -static const struct algo idct_tab[] = { +static const struct algo idct_tab8[] = { { "REF-DBL", ff_ref_idct, FF_IDCT_PERM_NONE }, { "INT", ff_j_rev_dct, FF_IDCT_PERM_LIBMPEG2 }, { "SIMPLE-C", ff_simple_idct_8, FF_IDCT_PERM_NONE }, @@ -89,6 +95,12 @@ static const struct algo idct_tab[] = { #if CONFIG_MPEG4_DECODER { "XVID", ff_xvid_idct, FF_IDCT_PERM_NONE, 0, 1 }, #endif /* CONFIG_MPEG4_DECODER */ + { 0 } +}; + +static const struct algo idct_tab10[] = { + { "SIMPLE10-C", ff_simple_idct_10, FF_IDCT_PERM_NONE }, + { 0 } }; #if ARCH_ARM @@ -98,8 +110,10 @@ static const struct algo idct_tab[] = { #elif ARCH_X86 #include "x86/dct-test.c" #else -static const struct algo fdct_tab_arch[] = { { 0 } }; -static const struct algo idct_tab_arch[] = { { 0 } }; +static const struct algo fdct_tab_arch8[] = { { 0 } }; +static const struct algo idct_tab_arch8[] = { { 0 } }; +static const struct algo fdct_tab_arch10[] = { { 0 } }; +static const struct algo idct_tab_arch10[] = { { 0 } }; #endif #define AANSCALE_BITS 12 @@ -451,6 +465,10 @@ static void help(void) int main(int argc, char **argv) { + const struct algo* idct_tab = NULL; + const struct algo* fdct_tab = NULL; + const struct algo* fdct_tab_arch = NULL; + const struct algo* idct_tab_arch = NULL; int test_idct = 0, test_248_dct = 0; int c, i; int test = 1; @@ -491,8 +509,19 @@ int main(int argc, char **argv) idct248_error("SIMPLE-C", ff_simple_idct248_put, speed); } else { const int cpu_flags = av_get_cpu_flags(); + switch(bits) { + case 8: + idct_tab = idct_tab8; fdct_tab = fdct_tab8; + idct_tab_arch = idct_tab_arch8; fdct_tab_arch = fdct_tab_arch8; + break; + case 10: + idct_tab = idct_tab10; fdct_tab = fdct_tab10; + idct_tab_arch = idct_tab_arch10; fdct_tab_arch = fdct_tab_arch10; + break; + default: fprintf(stderr, "No tests for %i bits\n", bits); return 1; + } if (test_idct) { - for (i = 0; i < FF_ARRAY_ELEMS(idct_tab); i++) + for (i = 0; idct_tab[i].name; i++) err |= dct_error(&idct_tab[i], test, test_idct, speed, bits); for (i = 0; idct_tab_arch[i].name; i++) @@ -501,7 +530,7 @@ int main(int argc, char **argv) } #if CONFIG_FDCTDSP else { - for (i = 0; i < FF_ARRAY_ELEMS(fdct_tab); i++) + for (i = 0; fdct_tab[i].name; i++) err |= dct_error(&fdct_tab[i], test, test_idct, speed, bits); for (i = 0; fdct_tab_arch[i].name; i++) diff --git a/libavcodec/ppc/dct-test.c b/libavcodec/ppc/dct-test.c index 2328516..a646c2e 100644 --- a/libavcodec/ppc/dct-test.c +++ b/libavcodec/ppc/dct-test.c @@ -20,13 +20,19 @@ #include "fdct.h" -static const struct algo fdct_tab_arch[] = { +static const struct algo fdct_tab_arch8[] = { #if HAVE_ALTIVEC { "altivecfdct", ff_fdct_altivec, FF_IDCT_PERM_NONE, AV_CPU_FLAG_ALTIVEC }, #endif { 0 } }; -static const struct algo idct_tab_arch[] = { +static const struct algo idct_tab_arch8[] = { { 0 } }; + +static const struct algo fdct_tab_arch10[] = { { 0 } }; +static const struct algo idct_tab_arch10[] = { { 0 } }; +static const struct algo fdct_tab_arch12[] = { { 0 } }; +static const struct algo idct_tab_arch12[] = { { 0 } }; + diff --git a/libavcodec/x86/dct-test.c b/libavcodec/x86/dct-test.c index 0414381..692c23b 100644 --- a/libavcodec/x86/dct-test.c +++ b/libavcodec/x86/dct-test.c @@ -53,7 +53,7 @@ PR_WRAP(avx) #endif -static const struct algo fdct_tab_arch[] = { +static const struct algo fdct_tab_arch8[] = { #if HAVE_MMX_INLINE { "MMX", ff_fdct_mmx, FF_IDCT_PERM_NONE, AV_CPU_FLAG_MMX }, #endif @@ -66,7 +66,7 @@ static const struct algo fdct_tab_arch[] = { { 0 } }; -static const struct algo idct_tab_arch[] = { +static const struct algo idct_tab_arch8[] = { #if HAVE_MMX_INLINE { "SIMPLE-MMX", ff_simple_idct_mmx, FF_IDCT_PERM_SIMPLE, AV_CPU_FLAG_MMX }, #endif @@ -88,6 +88,11 @@ static const struct algo idct_tab_arch[] = { { 0 } }; +static const struct algo fdct_tab_arch10[] = { { 0 } }; +static const struct algo idct_tab_arch10[] = { { 0 } }; +static const struct algo fdct_tab_arch12[] = { { 0 } }; +static const struct algo idct_tab_arch12[] = { { 0 } }; + static const uint8_t idct_simple_mmx_perm[64] = { 0x00, 0x08, 0x04, 0x09, 0x01, 0x0C, 0x05, 0x0D, 0x10, 0x18, 0x14, 0x19, 0x11, 0x1C, 0x15, 0x1D, -- 2.6.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel