author | Gan 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) |
commit | eea58306634512f602a0d039e8cd87bd520d93b9 (patch) | |
tree | e4e4baa890c881e9ff1fba9acbd79a65001d1f2c | |
parent | c019706ca490ead79a74d03f93ccd1e375fdd289 (diff) | |
download | media_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>
-rw-r--r-- | drivers/frame_provider/decoder/h265/vh265.c | 9 |
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) |