summaryrefslogtreecommitdiff
authorGan Zhang <gan.zhang@amlogic.com>2020-07-23 07:49:37 (GMT)
committer Hui Zhang <hui.zhang@amlogic.com>2020-07-31 08:38:02 (GMT)
commiteea58306634512f602a0d039e8cd87bd520d93b9 (patch)
treee4e4baa890c881e9ff1fba9acbd79a65001d1f2c
parentc019706ca490ead79a74d03f93ccd1e375fdd289 (diff)
downloadmedia_modules-eea58306634512f602a0d039e8cd87bd520d93b9.zip
media_modules-eea58306634512f602a0d039e8cd87bd520d93b9.tar.gz
media_modules-eea58306634512f602a0d039e8cd87bd520d93b9.tar.bz2
h265: Pass the dv_enhance_exist flag to the DV module [1/2]
PD#SWPL-29487 Problem: In frame mode, the decoder does not parse EL Layer data. We need to pass the dv_enhance_exist flag to the DV module. Solution: In frame mode, pass the dv_enhance_exist flag to the DV module. Verify: AH212 Change-Id: I338917c80ebba8bfcf283f856872bb355fd1d00b Signed-off-by: Gan Zhang <gan.zhang@amlogic.com>
Diffstat
-rw-r--r--drivers/frame_provider/decoder/h265/vh265.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/frame_provider/decoder/h265/vh265.c b/drivers/frame_provider/decoder/h265/vh265.c
index e9970ff..b420997 100644
--- a/drivers/frame_provider/decoder/h265/vh265.c
+++ b/drivers/frame_provider/decoder/h265/vh265.c
@@ -1776,6 +1776,7 @@ struct hevc_state_s {
u64 again_timeout_jiffies;
u32 pre_parser_video_rp;
u32 pre_parser_video_wp;
+ bool dv_duallayer;
} /*hevc_stru_t */;
#ifdef AGAIN_HAS_THRESHOLD
@@ -8522,6 +8523,8 @@ static int vh265_event_cb(int type, void *data, void *op_arg)
else
req->dv_enhance_exist =
hevc->m_PIC[index]->dv_enhance_exist;
+ if (vdec_frame_based(vdec) && (hevc->dv_duallayer == true))
+ req->dv_enhance_exist = 1;
hevc_print(hevc, H265_DEBUG_DV,
"query dv_enhance_exist for pic (vf 0x%p, poc %d index %d) flag => %d, aux sizd 0x%x\n",
req->vf,
@@ -13545,6 +13548,12 @@ static int ammvdec_h265_probe(struct platform_device *pdev)
"parm_v4l_canvas_mem_mode",
&config_val) == 0)
hevc->mem_map_mode = config_val;
+
+ if (get_config_int(pdata->config, "dv_duallayer",
+ &config_val) == 0)
+ hevc->dv_duallayer = config_val;
+ else
+ hevc->dv_duallayer = false;
#endif
} else {
if (pdata->sys_info)