msm: vidc: Add support for setting packed QP range
Add support for setting packed QP range for clients to set different QP Range for I, P, B frames. CRs-Fixed: 1043369 Change-Id: I3765506f1d703f47e481719296ab890b1f3dc106 Signed-off-by: Deepak Kushwah <dkushwah@codeaurora.org>
This commit is contained in:
parent
816c3cbc37
commit
12d028e02f
4 changed files with 87 additions and 0 deletions
|
@ -1565,6 +1565,25 @@ int create_pkt_cmd_session_set_property(
|
|||
sizeof(struct hfi_quantization_range);
|
||||
break;
|
||||
}
|
||||
case HAL_PARAM_VENC_SESSION_QP_RANGE_PACKED:
|
||||
{
|
||||
struct hfi_quantization_range *hfi;
|
||||
struct hfi_quantization_range *hal_range =
|
||||
(struct hfi_quantization_range *) pdata;
|
||||
|
||||
pkt->rg_property_data[0] =
|
||||
HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE;
|
||||
hfi = (struct hfi_quantization_range *)
|
||||
&pkt->rg_property_data[1];
|
||||
|
||||
hfi->min_qp = hal_range->min_qp;
|
||||
hfi->max_qp = hal_range->max_qp;
|
||||
hfi->layer_id = hal_range->layer_id;
|
||||
|
||||
pkt->size += sizeof(u32) +
|
||||
sizeof(struct hfi_quantization_range);
|
||||
break;
|
||||
}
|
||||
case HAL_PARAM_VENC_SEARCH_RANGE:
|
||||
{
|
||||
struct hfi_vc1e_perf_cfg_type *hfi;
|
||||
|
|
|
@ -532,6 +532,28 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
|
|||
.default_value = 128,
|
||||
.step = 1,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDEO_MIN_QP_PACKED,
|
||||
.name = "H264 Minimum QP PACKED",
|
||||
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||
.minimum = 0x00010101,
|
||||
.maximum = 0x00333333,
|
||||
.default_value = 0x00010101,
|
||||
.step = 1,
|
||||
.menu_skip_mask = 0,
|
||||
.qmenu = NULL,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDEO_MAX_QP_PACKED,
|
||||
.name = "H264 Maximum QP PACKED",
|
||||
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||
.minimum = 0x00010101,
|
||||
.maximum = 0x00333333,
|
||||
.default_value = 0x00333333,
|
||||
.step = 1,
|
||||
.menu_skip_mask = 0,
|
||||
.qmenu = NULL,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE,
|
||||
.name = "Slice Mode",
|
||||
|
@ -2516,6 +2538,46 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
|||
pdata = &qp_range;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDEO_MIN_QP_PACKED: {
|
||||
struct v4l2_ctrl *qp_max;
|
||||
|
||||
qp_max = TRY_GET_CTRL(V4L2_CID_MPEG_VIDEO_MAX_QP_PACKED);
|
||||
if (ctrl->val >= qp_max->val) {
|
||||
dprintk(VIDC_ERR,
|
||||
"Bad range: Min QP PACKED (0x%x) > Max QP PACKED (0x%x)\n",
|
||||
ctrl->val, qp_max->val);
|
||||
rc = -ERANGE;
|
||||
break;
|
||||
}
|
||||
|
||||
property_id = HAL_PARAM_VENC_SESSION_QP_RANGE_PACKED;
|
||||
qp_range.layer_id = 0;
|
||||
qp_range.max_qp = qp_max->val;
|
||||
qp_range.min_qp = ctrl->val;
|
||||
|
||||
pdata = &qp_range;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDEO_MAX_QP_PACKED: {
|
||||
struct v4l2_ctrl *qp_min;
|
||||
|
||||
qp_min = TRY_GET_CTRL(V4L2_CID_MPEG_VIDEO_MIN_QP_PACKED);
|
||||
if (ctrl->val <= qp_min->val) {
|
||||
dprintk(VIDC_ERR,
|
||||
"Bad range: Max QP PACKED (%d) < Min QP PACKED (%d)\n",
|
||||
ctrl->val, qp_min->val);
|
||||
rc = -ERANGE;
|
||||
break;
|
||||
}
|
||||
|
||||
property_id = HAL_PARAM_VENC_SESSION_QP_RANGE_PACKED;
|
||||
qp_range.layer_id = 0;
|
||||
qp_range.max_qp = ctrl->val;
|
||||
qp_range.min_qp = qp_min->val;
|
||||
|
||||
pdata = &qp_range;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE: {
|
||||
int temp = 0;
|
||||
|
||||
|
|
|
@ -236,6 +236,7 @@ enum hal_property {
|
|||
HAL_PARAM_VENC_LOW_LATENCY,
|
||||
HAL_PARAM_VENC_CONSTRAINED_INTRA_PRED,
|
||||
HAL_CONFIG_VENC_BLUR_RESOLUTION,
|
||||
HAL_PARAM_VENC_SESSION_QP_RANGE_PACKED,
|
||||
};
|
||||
|
||||
enum hal_domain {
|
||||
|
|
|
@ -1161,6 +1161,11 @@ enum v4l2_mpeg_vidc_video_lowlatency_mode {
|
|||
#define V4L2_CID_MPEG_VIDC_VIDEO_BLUR_HEIGHT \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 90)
|
||||
|
||||
#define V4L2_CID_MPEG_VIDEO_MIN_QP_PACKED \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 91)
|
||||
#define V4L2_CID_MPEG_VIDEO_MAX_QP_PACKED \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 92)
|
||||
|
||||
/* Camera class control IDs */
|
||||
|
||||
#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
|
||||
|
|
Loading…
Add table
Reference in a new issue