Dolby: HDR-001-TC5: VID and GFX doesn't match [1/1]
authoryao liu <yao.liu@amlogic.com>
Fri, 21 Jun 2019 07:46:18 +0000 (15:46 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Mon, 24 Jun 2019 07:08:57 +0000 (00:08 -0700)
PD#SWPL-8159

Problem:
HDR-001-TC5 source is dv, need graphic max 300
HDR-001-TC3 source is hdr, need graphic max 210

Solution:
Set 300 for DV source and 210 for HDR source in LL mode

Verify:
Verified on U212

Change-Id: I93c71ee51fc128d9d01113d4e24d4df1786901e2
Signed-off-by: yao liu <yao.liu@amlogic.com>
drivers/amlogic/media/enhancement/amdolby_vision/amdolby_vision.c

index 000c5e0..b4fc537 100644 (file)
@@ -303,7 +303,11 @@ MODULE_PARM_DESC(dolby_vision_graphic_max, "\n dolby_vision_graphic_max\n");
 static unsigned int dolby_vision_target_graphics_max[3] = {
        300, 300, 100
 }; /* DOVI/HDR/SDR */
-static unsigned int dolby_vision_target_graphics_LL = 210;
+static unsigned int dv_target_graphics_LL_max[3][3] = {
+       { 300, 300, 100 }, /* DOVI => DOVI/HDR/SDR */
+       { 210, 300, 100 }, /* HDR =>  DOVI/HDR/SDR */
+       { 300, 300, 100 }, /* SDR =>  DOVI/HDR/SDR */
+};
 
 /*these two parameters form OSD*/
 static unsigned int osd_graphic_width = 1920;
@@ -5576,16 +5580,15 @@ int dolby_vision_parse_metadata(
        graphic_min = dolby_vision_graphic_min;
        if (dolby_vision_graphic_max != 0)
                graphic_max = dolby_vision_graphic_max;
-       else
+       else {
                graphic_max =
                        dolby_vision_target_graphics_max[dst_format];
 
-       if (dst_format == FORMAT_DOVI) {
-               if ((dolby_vision_flags
-                       & FLAG_FORCE_DOVI_LL) ||
-                       (dolby_vision_ll_policy
-                       >= DOLBY_VISION_LL_YUV422))
-                       graphic_max = dolby_vision_target_graphics_LL;
+               if ((dolby_vision_flags & FLAG_FORCE_DOVI_LL) ||
+                       (dolby_vision_ll_policy >= DOLBY_VISION_LL_YUV422)) {
+                       graphic_max =
+                       dv_target_graphics_LL_max[src_format][dst_format];
+               }
        }
 
        if (is_graphics_output_off()) {