hdr: optimize hdr2sdr config [1/1]
authorMingLiang Dong <mingliang.dong@amlogic.com>
Fri, 9 Aug 2019 10:32:44 +0000 (06:32 -0400)
committerTao Zeng <tao.zeng@amlogic.com>
Fri, 16 Aug 2019 12:59:20 +0000 (05:59 -0700)
PD#SWPL-12515

Problem:
hdr video is dark compared with sdr video

Solution:
1. optimize hdr2sdr oo gain
2. fix hdr2sdr shift

Verify:
verify on TL1

Change-Id: I42cbe7bf2c05c610f25ec34fe00cb4a2b1f7b8a6
Signed-off-by: MingLiang Dong <mingliang.dong@amlogic.com>
drivers/amlogic/media/enhancement/amvecm/set_hdr2_v0.c

index fc02574..a4d74e0 100644 (file)
@@ -272,19 +272,21 @@ int oo_y_lut_hdr_hlg[149] = {
 
 static int num_hdr_sdr_lut = 149;
 int oo_y_lut_hdr_sdr[149] = {
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844,
-       2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2810,
-       2635, 2481, 2225, 2020, 1852, 1712, 1593, 1491, 1403, 1325, 1196,
-       1092, 1006, 935, 874, 822, 776, 736, 668, 614, 568, 530, 497, 468,
-       442, 419, 381, 349, 322, 299, 279, 261, 246, 233, 221, 210, 201,
-       192, 184, 177, 170, 164, 158, 153, 148, 143, 139, 135, 131, 128
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+       3200, 3200, 3200, 3200, 3200, 3200, 3200, 3034, 2830, 2653,
+       2498, 2240, 2033, 1864, 1722, 1603, 1500, 1411, 1332, 1202,
+       1097, 1011, 939, 878, 825, 779, 739, 671, 616, 570,
+       531, 498, 469, 443, 420, 381, 349, 322, 299, 279,
+       262, 246, 233, 221, 210, 201, 192, 184, 177, 170,
+       164, 158, 153, 148, 143, 139, 135, 131, 128
 };
 module_param_array(oo_y_lut_hdr_sdr, int, &num_hdr_sdr_lut, 0664);
 MODULE_PARM_DESC(oo_y_lut_hdr_sdr, "\n num_hdr_sdr_lut\n");
@@ -1557,6 +1559,9 @@ void set_hdr_matrix(
                                hdr_mtx_param->p_sel == HLG_IPT)
                                adpscl_alpha[i] = 1000 *
                                        (1 << adp_scal_y_shift) / 10000;
+                       else if (hdr_mtx_param->p_sel == HDR_SDR)
+                               adpscl_alpha[i] =
+                                       (1 << adp_scal_y_shift);
                        else
                                adpscl_alpha[i] =
                                        (1 << adp_scal_y_shift);
@@ -1576,9 +1581,10 @@ void set_hdr_matrix(
                /*shift0 is for x coordinate*/
                /*shift1 is for scale multiple*/
                if (hdr_mtx_param->p_sel == HDR_SDR) {
-                       adpscl_shift[0] = adp_scal_x_shift;
+                       /*because input 1/2, shift0/shift1 need change*/
+                       adpscl_shift[0] = adp_scal_x_shift - 1;
                        adpscl_shift[1] = OO_NOR -
-                       _log2((1 << OO_NOR) / oo_y_lut_hdr_sdr[148]);
+                       _log2((1 << OO_NOR) / oo_y_lut_hdr_sdr[148]) - 1;
                } else if (hdr_mtx_param->p_sel == HDR_HLG) {
                        adpscl_shift[0] = adp_scal_x_shift;
                        adpscl_shift[1] = OO_NOR -