msm: vidc: do not update operating rate during INT_MAX
INT_MAX is an interface provided to client to configure video session in TURBO mode. When client configures the operating rate as INT_MAX, the rate at which the frames arrive at video driver does not change, so there is no need to update the operating rate. If the operating rate is updated, macroblocks/s for the session goes high. As a result, the session gets rejected as the clock is not sufficient for high mbs/s. Change-Id: Iaa48073a486ce6435664a6afb8a4c6ddd7b7f87d Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org> Signed-off-by: Rakshitha Shakamuri <rshakamu@codeaurora.org>
This commit is contained in:
parent
c638b9401e
commit
307e961aa9
@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "msm_vdec.h"
|
||||
@ -914,10 +914,11 @@ int msm_vdec_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_PRIORITY:
|
||||
break;
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE:
|
||||
inst->clk_data.operating_rate = ctrl->val;
|
||||
inst->flags &= ~VIDC_TURBO;
|
||||
if (ctrl->val == INT_MAX)
|
||||
inst->flags |= VIDC_TURBO;
|
||||
else
|
||||
inst->clk_data.operating_rate = ctrl->val;
|
||||
break;
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE:
|
||||
inst->clk_data.low_latency_mode = !!ctrl->val;
|
||||
|
@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
#include "msm_venc.h"
|
||||
#include "msm_vidc_internal.h"
|
||||
@ -1670,16 +1670,17 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
||||
}
|
||||
break;
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE:
|
||||
inst->clk_data.operating_rate = ctrl->val;
|
||||
inst->flags &= ~VIDC_TURBO;
|
||||
if (ctrl->val == INT_MAX)
|
||||
inst->flags |= VIDC_TURBO;
|
||||
else
|
||||
inst->clk_data.operating_rate = ctrl->val;
|
||||
/* For HEIC image encode, set operating rate to 1 */
|
||||
if (is_grid_session(inst)) {
|
||||
s_vpr_h(sid, "%s: set operating rate to 1 for HEIC\n",
|
||||
__func__);
|
||||
inst->clk_data.operating_rate = 1 << 16;
|
||||
}
|
||||
inst->flags &= ~VIDC_TURBO;
|
||||
if (ctrl->val == INT_MAX)
|
||||
inst->flags |= VIDC_TURBO;
|
||||
if (inst->state < MSM_VIDC_LOAD_RESOURCES)
|
||||
msm_vidc_calculate_buffer_counts(inst);
|
||||
if (inst->state == MSM_VIDC_START_DONE) {
|
||||
|
Loading…
Reference in New Issue
Block a user