Re: [PATCH] v4l2-tpg: fix the SMPTE-2084 transfer function

2017-08-08 Thread Mauro Carvalho Chehab
Em Wed, 26 Jul 2017 20:45:55 +0200
Hans Verkuil  escreveu:

> The SMPTE-2084 transfer functions maps to the luminance range of 0-1 
> cd/m^2.
> Other transfer functions use the traditional range of 0-100 cd/m^2.
> 
> I didn't take this into account so the luminance was off by a factor of 100.
> 
> Since qv4l2 made the same mistake in reverse I never noticed this until I 
> tested with
> actual SMPTE-2084 video.
> 
> This patch also includes the v4l2-tpg-colors.h relative to this directory when
> building the gen-colors utility, otherwise it would fail. This was needed to 
> regenerate
> the tables.
> 
> Signed-off-by: Hans Verkuil 
> ---
> diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c 
> b/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c
> index 9bcbd318489b..ac86cbe08440 100644
> --- a/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c
> +++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c
> @@ -36,7 +36,11 @@
>*/
> 
>   #include 
> +#ifdef COMPILE_APP
> +#include "../../../../include/media/v4l2-tpg-colors.h"
> +#else
>   #include 
> +#endif
> 
>   /* sRGB colors with range [0-255] */
>   const struct color tpg_colors[TPG_COLOR_MAX] = {

The above sucks. We shouldn't be adding hacks at the Kernel tree due
to userspace.

In particular, this one is evil, as it assumes a particular location
of the header inside libv4l.

Instead of this ugly hack, you could just add an extra line at the
"sync-with-kernel" target at v4l-utils Makefile with:

sed 
's,,"../../../../include/media/v4l2-tpg-colors.h",' -i 
./utils/common/v4l2-tpg-colors.c

Thanks,
Mauro


[PATCH] v4l2-tpg: fix the SMPTE-2084 transfer function

2017-07-26 Thread Hans Verkuil

The SMPTE-2084 transfer functions maps to the luminance range of 0-1 cd/m^2.
Other transfer functions use the traditional range of 0-100 cd/m^2.

I didn't take this into account so the luminance was off by a factor of 100.

Since qv4l2 made the same mistake in reverse I never noticed this until I 
tested with
actual SMPTE-2084 video.

This patch also includes the v4l2-tpg-colors.h relative to this directory when
building the gen-colors utility, otherwise it would fail. This was needed to 
regenerate
the tables.

Signed-off-by: Hans Verkuil 
---
diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c 
b/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c
index 9bcbd318489b..ac86cbe08440 100644
--- a/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c
+++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c
@@ -36,7 +36,11 @@
  */

 #include 
+#ifdef COMPILE_APP
+#include "../../../../include/media/v4l2-tpg-colors.h"
+#else
 #include 
+#endif

 /* sRGB colors with range [0-255] */
 const struct color tpg_colors[TPG_COLOR_MAX] = {
@@ -646,14 +650,14 @@ const struct color16 
tpg_csc_colors[V4L2_COLORSPACE_DCI_P3 + 1][V4L2_XFER_FUNC_S
[V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_DCI_P3][5] = { 3248, 944, 
1094 },
[V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_DCI_P3][6] = { 1017, 967, 
3168 },
[V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_DCI_P3][7] = { 1084, 1084, 
1084 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][0] = { 3798, 
3798, 3798 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][1] = { 3802, 
3805, 2602 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][2] = { 0, 3806, 
3797 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][3] = { 1780, 
3812, 2592 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][4] = { 3820, 
2215, 3796 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][5] = { 3824, 
2409, 2574 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][6] = { 2491, 
2435, 3795 },
-   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][7] = { 2563, 
2563, 2563 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][0] = { 1812, 
1812, 1812 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][1] = { 1815, 
1818, 910 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][2] = { 0, 1819, 
1811 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][3] = { 472, 1825, 
904 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][4] = { 1832, 686, 
1810 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][5] = { 1835, 794, 
893 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][6] = { 843, 809, 
1810 },
+   [V4L2_COLORSPACE_SMPTE170M][V4L2_XFER_FUNC_SMPTE2084][7] = { 886, 886, 
886 },
[V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_709][0] = { 2939, 2939, 2939 
},
[V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_709][1] = { 2953, 2963, 586 
},
[V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_709][2] = { 0, 2967, 2937 },
@@ -702,14 +706,14 @@ const struct color16 
tpg_csc_colors[V4L2_COLORSPACE_DCI_P3 + 1][V4L2_XFER_FUNC_S
[V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_DCI_P3][5] = { 3248, 944, 
1094 },
[V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_DCI_P3][6] = { 1017, 967, 
3168 },
[V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_DCI_P3][7] = { 1084, 1084, 
1084 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][0] = { 3798, 
3798, 3798 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][1] = { 3802, 
3805, 2602 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][2] = { 0, 3806, 
3797 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][3] = { 1780, 
3812, 2592 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][4] = { 3820, 
2215, 3796 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][5] = { 3824, 
2409, 2574 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][6] = { 2491, 
2435, 3795 },
-   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][7] = { 2563, 
2563, 2563 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][0] = { 1812, 
1812, 1812 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][1] = { 1815, 
1818, 910 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][2] = { 0, 1819, 
1811 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][3] = { 472, 1825, 
904 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][4] = { 1832, 686, 
1810 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][5] = { 1835, 794, 
893 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][6] = { 843, 809, 
1810 },
+   [V4L2_COLORSPACE_SMPTE240M][V4L2_XFER_FUNC_SMPTE2084][7] = { 886, 886, 
886 },
[V4L2_COLORSPACE_REC709][V4L2_XFER_FUNC_709][0] = { 2939, 2939, 2939 },