On Fri, Oct 09, 2015 at 11:53:44PM +0200, Christophe Gisquet wrote: > --- > 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;
this breaks testing the (i)dcts with other bits than 8 bits example: libavcodec/dct-test 0 9 libavcodec/dct-test -i 0 9 also it seems some of the "8bit" (i)dcts work fine with 10 and 12bit [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Awnsering whenever a program halts or runs forever is On a turing machine, in general impossible (turings halting problem). On any real computer, always possible as a real computer has a finite number of states N, and will either halt in less than N cycles or never halt.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel