Re: [FFmpeg-devel] [PATCH 7/9] dct-test: add infrastructure for 10 bits
On Sat, Oct 10, 2015 at 06:22:38PM +0200, Christophe Gisquet wrote: > 2015-10-10 13:12 GMT+02:00 Michael Niedermayer : > > this breaks testing the (i)dcts with other bits than 8 bits > > > > example: > > libavcodec/dct-test 0 9 > > libavcodec/dct-test -i 0 9 > > OK, I misunderstood the intent of how to test with the bitdepth. > > > also it seems some of the "8bit" (i)dcts work fine with 10 and 12bit > > As for 8bits idcts passing 10 bits, which are they? REF_DBL, INT, PR-C, FAANI, PR-SSE2 seem to produce reasonable values in libavcodec/dct-test -i 0 10 > Out of the ones > currently tested, all fail here, except FAANI and REF-DBL, which is > not a very interesting information. > > -- > Christophe > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The bravest are surely those who have the clearest vision of what is before them, glory and danger alike, and yet notwithstanding go out to meet it. -- Thucydides signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 7/9] dct-test: add infrastructure for 10 bits
2015-10-10 13:12 GMT+02:00 Michael Niedermayer : > this breaks testing the (i)dcts with other bits than 8 bits > > example: > libavcodec/dct-test 0 9 > libavcodec/dct-test -i 0 9 OK, I misunderstood the intent of how to test with the bitdepth. > also it seems some of the "8bit" (i)dcts work fine with 10 and 12bit As for 8bits idcts passing 10 bits, which are they? Out of the ones currently tested, all fail here, except FAANI and REF-DBL, which is not a very interesting information. -- Christophe ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 7/9] dct-test: add infrastructure for 10 bits
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] [PATCH 7/9] dct-test: add infrastructure for 10 bits
--- 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