Merge "msm: vidc: Update QP control values"

This commit is contained in:
Linux Build Service Account 2017-04-12 16:10:11 -07:00 committed by Gerrit - the friendly Code Review server
commit a694bbf616

View file

@ -3511,6 +3511,48 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
frameqp = ctrl->val; frameqp = ctrl->val;
pdata = &frameqp; pdata = &frameqp;
break; 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: case V4L2_CID_MPEG_VIDC_VIDEO_VQZIP_SEI:
property_id = HAL_PARAM_VENC_VQZIP_SEI; property_id = HAL_PARAM_VENC_VQZIP_SEI;
enable.enable = ctrl->val; 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_aspect_ratio sar;
struct hal_bitrate bitrate; struct hal_bitrate bitrate;
struct hal_frame_size blur_res; struct hal_frame_size blur_res;
struct v4l2_ctrl *temp_ctrl; struct v4l2_control temp_ctrl;
if (!inst || !inst->core || !inst->core->device || !ctrl) { if (!inst || !inst->core || !inst->core->device || !ctrl) {
dprintk(VIDC_ERR, "%s invalid parameters\n", __func__); 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 /* Sanity check for the QP boundaries as we are using
* same control to set Initial QP for all the codecs * 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; V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_I_FRAME_QP;
temp_ctrl->val = control[i].value; temp_ctrl.value = control[i].value;
rc = msm_venc_validate_qp_value(inst, temp_ctrl);
rc = msm_comm_s_ctrl(inst, &temp_ctrl);
if (rc) { 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; break;
} }
quant.qpi = control[i].value; quant.qpi = control[i].value;
@ -3825,12 +3870,14 @@ static int try_set_ext_ctrl(struct msm_vidc_inst *inst,
pdata = &quant; pdata = &quant;
break; break;
case V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_P_FRAME_QP: 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; V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_P_FRAME_QP;
temp_ctrl->val = control[i].value; temp_ctrl.value = control[i].value;
rc = msm_venc_validate_qp_value(inst, temp_ctrl); rc = msm_comm_s_ctrl(inst, &temp_ctrl);
if (rc) { 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; break;
} }
quant.qpp = control[i].value; quant.qpp = control[i].value;
@ -3838,12 +3885,14 @@ static int try_set_ext_ctrl(struct msm_vidc_inst *inst,
pdata = &quant; pdata = &quant;
break; break;
case V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_B_FRAME_QP: 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; V4L2_CID_MPEG_VIDC_VIDEO_INITIAL_B_FRAME_QP;
temp_ctrl->val = control[i].value; temp_ctrl.value = control[i].value;
rc = msm_venc_validate_qp_value(inst, temp_ctrl); rc = msm_comm_s_ctrl(inst, &temp_ctrl);
if (rc) { 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; break;
} }
quant.qpb = control[i].value; quant.qpb = control[i].value;