Re: [FFmpeg-devel] [PATCH 7/9] dct-test: add infrastructure for 10 bits

2015-10-10 Thread Michael Niedermayer
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 Thread Christophe Gisquet
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

2015-10-10 Thread Michael Niedermayer
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

2015-10-09 Thread Christophe Gisquet
---
 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