From 1fd9cfcf2e671073f688dbe25409dc4fee1c1081 Mon Sep 17 00:00:00 2001 From: Akshata Sahukar Date: Mon, 20 Jul 2020 10:32:32 -0700 Subject: [PATCH] msm: vidc: Fix to add correct superframe buffer timestamps Avoid adapting driver framerate to camera qbuf rate in superframe enabled case to avoid setting incorrect hfr buffer timestamps. Change-Id: I354e7517b9aeef7f1b01f33089b81bf7122e12e2 Signed-off-by: Akshata Sahukar --- msm/vidc/msm_venc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/msm/vidc/msm_venc.c b/msm/vidc/msm_venc.c index 7e4d638319b6..6030230d3df6 100644 --- a/msm/vidc/msm_venc.c +++ b/msm/vidc/msm_venc.c @@ -2120,6 +2120,7 @@ int msm_venc_store_timestamp(struct msm_vidc_inst *inst, u64 timestamp_us) struct msm_vidc_timestamps *entry, *node, *prev = NULL; int count = 0; int rc = 0; + struct v4l2_ctrl *superframe_ctrl = NULL; if (!inst || !inst->core) { d_vpr_e("%s: invalid parameters\n", __func__); @@ -2172,7 +2173,13 @@ int msm_venc_store_timestamp(struct msm_vidc_inst *inst, u64 timestamp_us) /* if framerate changed and stable for 2 frames, set to firmware */ if (entry->framerate == prev->framerate && entry->framerate != inst->clk_data.frame_rate) { - inst->clk_data.frame_rate = entry->framerate; + superframe_ctrl = get_ctrl(inst, V4L2_CID_MPEG_VIDC_SUPERFRAME); + if (superframe_ctrl->val > 1) + inst->clk_data.frame_rate = entry->framerate * superframe_ctrl->val; + else + inst->clk_data.frame_rate = entry->framerate; + s_vpr_l(inst->sid, "%s: updated fps to %u\n", + __func__, (inst->clk_data.frame_rate >> 16)); msm_venc_set_frame_rate(inst); }