diff --git a/driver/vidc/src/msm_vdec.c b/driver/vidc/src/msm_vdec.c index 5f227d70b6..77ca96c107 100644 --- a/driver/vidc/src/msm_vdec.c +++ b/driver/vidc/src/msm_vdec.c @@ -1329,6 +1329,8 @@ static int msm_vdec_read_input_subcr_params(struct msm_vidc_inst *inst) } inst->buffers.output.min_count = subsc_params.fw_min_count; + inst->buffers.output.extra_count = call_session_op(core, + extra_count, inst, MSM_VIDC_BUF_OUTPUT); if (is_thumbnail_session(inst) && inst->codec != MSM_VIDC_VP9) { if (inst->buffers.output.min_count != 1) { i_vpr_e(inst, "%s: invalid min count %d in thumbnail case\n", diff --git a/driver/vidc/src/msm_vidc_control.c b/driver/vidc/src/msm_vidc_control.c index 8eadf81aee..14b783a9f4 100644 --- a/driver/vidc/src/msm_vidc_control.c +++ b/driver/vidc/src/msm_vidc_control.c @@ -696,6 +696,9 @@ int msm_v4l2_op_s_ctrl(struct v4l2_ctrl *ctrl) rc = msm_vidc_update_buffer_count(inst, INPUT_PORT); if (rc) return rc; + rc = msm_vidc_update_buffer_count(inst, OUTPUT_PORT); + if (rc) + return rc; } if (is_meta_ctrl(ctrl->id)) { if (cap_id == META_DPB_TAG_LIST) { diff --git a/driver/vidc/src/msm_vidc_driver.c b/driver/vidc/src/msm_vidc_driver.c index e5e9beba3f..e9b8d3ba68 100644 --- a/driver/vidc/src/msm_vidc_driver.c +++ b/driver/vidc/src/msm_vidc_driver.c @@ -4461,8 +4461,10 @@ int msm_vidc_update_buffer_count(struct msm_vidc_inst *inst, u32 port) inst->buffers.input_meta.extra_count = 0; inst->buffers.input_meta.actual_count = 0; } - d_vpr_h("update input min buffer to %u\n", - inst->buffers.input.min_count); + i_vpr_h(inst, "%s: type: INPUT, count: min %u, extra %u, actual %u\n", __func__, + inst->buffers.input.min_count, + inst->buffers.input.extra_count, + inst->buffers.input.actual_count); break; case OUTPUT_PORT: if (!inst->vb2q[INPUT_PORT].streaming) @@ -4489,8 +4491,10 @@ int msm_vidc_update_buffer_count(struct msm_vidc_inst *inst, u32 port) inst->buffers.output_meta.extra_count = 0; inst->buffers.output_meta.actual_count = 0; } - d_vpr_h("update output min buffer to %u\n", - inst->buffers.output.min_count); + i_vpr_h(inst, "%s: type: OUTPUT, count: min %u, extra %u, actual %u\n", __func__, + inst->buffers.output.min_count, + inst->buffers.output.extra_count, + inst->buffers.output.actual_count); break; default: d_vpr_e("%s unknown port %d\n", __func__, port);