diff --git a/driver/variant/iris3/src/msm_vidc_buffer_iris3.c b/driver/variant/iris3/src/msm_vidc_buffer_iris3.c index be045c692d..14f4589799 100644 --- a/driver/variant/iris3/src/msm_vidc_buffer_iris3.c +++ b/driver/variant/iris3/src/msm_vidc_buffer_iris3.c @@ -82,12 +82,17 @@ static u32 msm_vidc_decoder_comv_size_iris3(struct msm_vidc_inst *inst) } msm_vidc_update_cap_value(inst, NUM_COMV, num_comv, __func__); - if (inst->decode_vpp_delay.enable) - vpp_delay = inst->decode_vpp_delay.size; - else - vpp_delay = DEFAULT_BSE_VPP_DELAY; - num_comv = max(vpp_delay + 1, num_comv); + if (inst->codec == MSM_VIDC_HEIC + && is_thumbnail_session(inst)) { + vpp_delay = 0; + } else { + if (inst->decode_vpp_delay.enable) + vpp_delay = inst->decode_vpp_delay.size; + else + vpp_delay = DEFAULT_BSE_VPP_DELAY; + } + num_comv = max(vpp_delay + 1, num_comv); if (inst->codec == MSM_VIDC_H264) { HFI_BUFFER_COMV_H264D(size, width, height, num_comv); } else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC) { diff --git a/driver/variant/iris33/src/msm_vidc_buffer_iris33.c b/driver/variant/iris33/src/msm_vidc_buffer_iris33.c index 542ff1c092..a5a8e600ba 100644 --- a/driver/variant/iris33/src/msm_vidc_buffer_iris33.c +++ b/driver/variant/iris33/src/msm_vidc_buffer_iris33.c @@ -84,12 +84,17 @@ static u32 msm_vidc_decoder_comv_size_iris33(struct msm_vidc_inst *inst) } msm_vidc_update_cap_value(inst, NUM_COMV, num_comv, __func__); - if (inst->decode_vpp_delay.enable) - vpp_delay = inst->decode_vpp_delay.size; - else - vpp_delay = DEFAULT_BSE_VPP_DELAY; - num_comv = max(vpp_delay + 1, num_comv); + if (inst->codec == MSM_VIDC_HEIC + && is_thumbnail_session(inst)) { + vpp_delay = 0; + } else { + if (inst->decode_vpp_delay.enable) + vpp_delay = inst->decode_vpp_delay.size; + else + vpp_delay = DEFAULT_BSE_VPP_DELAY; + } + num_comv = max(vpp_delay + 1, num_comv); if (inst->codec == MSM_VIDC_H264) { HFI_BUFFER_COMV_H264D(size, width, height, num_comv); } else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC) {