msm: vidc: Update QP control values
Update QP Control value and sanitise QP values for Initial QP properly. Change-Id: I870a4f33a0dfbfd3a95970bb9cf319855fba746f CRs-Fixed: 2027340 Signed-off-by: Deepak Kushwah <dkushwah@codeaurora.org>
This commit is contained in:
parent
4901c7fce4
commit
aee6a2cd41
1 changed files with 62 additions and 13 deletions
|
@ -3511,6 +3511,48 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
|||
frameqp = ctrl->val;
|
||||
pdata = &frameqp;
|
||||
break;
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_I_FRAME_QP:
|
||||
{
|
||||
rc = msm_venc_validate_qp_value(inst, ctrl);
|
||||
if (rc) {
|
||||
dprintk(VIDC_ERR, "Invalid Initial I QP\n");
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* Defer sending property from here, set_ext_ctrl
|
||||
* will send it based on the rc value.
|
||||
*/
|
||||
property_id = 0;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_B_FRAME_QP:
|
||||
{
|
||||
rc = msm_venc_validate_qp_value(inst, ctrl);
|
||||
if (rc) {
|
||||
dprintk(VIDC_ERR, "Invalid Initial B QP\n");
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* Defer sending property from here, set_ext_ctrl
|
||||
* will send it based on the rc value.
|
||||
*/
|
||||
property_id = 0;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_P_FRAME_QP:
|
||||
{
|
||||
rc = msm_venc_validate_qp_value(inst, ctrl);
|
||||
if (rc) {
|
||||
dprintk(VIDC_ERR, "Invalid Initial P QP\n");
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* Defer sending property from here, set_ext_ctrl
|
||||
* will send it based on the rc value.
|
||||
*/
|
||||
property_id = 0;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_VQZIP_SEI:
|
||||
property_id = HAL_PARAM_VENC_VQZIP_SEI;
|
||||
enable.enable = ctrl->val;
|
||||
|
@ -3745,7 +3787,7 @@ static int try_set_ext_ctrl(struct msm_vidc_inst *inst,
|
|||
struct hal_aspect_ratio sar;
|
||||
struct hal_bitrate bitrate;
|
||||
struct hal_frame_size blur_res;
|
||||
struct v4l2_ctrl *temp_ctrl;
|
||||
struct v4l2_control temp_ctrl;
|
||||
|
||||
if (!inst || !inst->core || !inst->core->device || !ctrl) {
|
||||
dprintk(VIDC_ERR, "%s invalid parameters\n", __func__);
|
||||
|
@ -3812,12 +3854,15 @@ static int try_set_ext_ctrl(struct msm_vidc_inst *inst,
|
|||
/* Sanity check for the QP boundaries as we are using
|
||||
* same control to set Initial QP for all the codecs
|
||||
*/
|
||||
temp_ctrl->id =
|
||||
temp_ctrl.id =
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_I_FRAME_QP;
|
||||
temp_ctrl->val = control[i].value;
|
||||
rc = msm_venc_validate_qp_value(inst, temp_ctrl);
|
||||
temp_ctrl.value = control[i].value;
|
||||
|
||||
rc = msm_comm_s_ctrl(inst, &temp_ctrl);
|
||||
if (rc) {
|
||||
dprintk(VIDC_ERR, "Invalid Initial I QP\n");
|
||||
dprintk(VIDC_ERR,
|
||||
"%s Failed setting Initial I Frame QP : %d\n",
|
||||
__func__, rc);
|
||||
break;
|
||||
}
|
||||
quant.qpi = control[i].value;
|
||||
|
@ -3825,12 +3870,14 @@ static int try_set_ext_ctrl(struct msm_vidc_inst *inst,
|
|||
pdata = &quant;
|
||||
break;
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_P_FRAME_QP:
|
||||
temp_ctrl->id =
|
||||
temp_ctrl.id =
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_P_FRAME_QP;
|
||||
temp_ctrl->val = control[i].value;
|
||||
rc = msm_venc_validate_qp_value(inst, temp_ctrl);
|
||||
temp_ctrl.value = control[i].value;
|
||||
rc = msm_comm_s_ctrl(inst, &temp_ctrl);
|
||||
if (rc) {
|
||||
dprintk(VIDC_ERR, "Invalid Initial P QP\n");
|
||||
dprintk(VIDC_ERR,
|
||||
"%s Failed setting Initial P Frame QP : %d\n",
|
||||
__func__, rc);
|
||||
break;
|
||||
}
|
||||
quant.qpp = control[i].value;
|
||||
|
@ -3838,12 +3885,14 @@ static int try_set_ext_ctrl(struct msm_vidc_inst *inst,
|
|||
pdata = &quant;
|
||||
break;
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_B_FRAME_QP:
|
||||
temp_ctrl->id =
|
||||
temp_ctrl.id =
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_B_FRAME_QP;
|
||||
temp_ctrl->val = control[i].value;
|
||||
rc = msm_venc_validate_qp_value(inst, temp_ctrl);
|
||||
temp_ctrl.value = control[i].value;
|
||||
rc = msm_comm_s_ctrl(inst, &temp_ctrl);
|
||||
if (rc) {
|
||||
dprintk(VIDC_ERR, "Invalid Initial B QP\n");
|
||||
dprintk(VIDC_ERR,
|
||||
"%s Failed setting Initial B Frame QP : %d\n",
|
||||
__func__, rc);
|
||||
break;
|
||||
}
|
||||
quant.qpb = control[i].value;
|
||||
|
|
Loading…
Add table
Reference in a new issue