Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e7c3098 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: vidc: Add CVP metadata mode controls"

parents 30a7a7b0 f63f05e2
Loading
Loading
Loading
Loading
+28 −5
Original line number Diff line number Diff line
@@ -531,7 +531,8 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		.type = V4L2_CTRL_TYPE_BITMASK,
		.minimum = EXTRADATA_NONE,
		.maximum = EXTRADATA_ADVANCED | EXTRADATA_ENC_INPUT_ROI |
			EXTRADATA_ENC_INPUT_HDR10PLUS,
			EXTRADATA_ENC_INPUT_HDR10PLUS |
			EXTRADATA_ENC_INPUT_CVP,
		.default_value = EXTRADATA_NONE,
		.menu_skip_mask = 0,
		.qmenu = NULL,
@@ -938,6 +939,15 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		),
		.qmenu = mpeg_video_stream_format,
	},
	{
		.id = V4L2_CID_MPEG_VIDC_VENC_CVP_DISABLE,
		.name = "CVP Disable",
		.type = V4L2_CTRL_TYPE_BOOLEAN,
		.minimum = V4L2_MPEG_MSM_VIDC_DISABLE,
		.maximum = V4L2_MPEG_MSM_VIDC_ENABLE,
		.default_value = V4L2_MPEG_MSM_VIDC_DISABLE,
		.step = 1,
	},
};

#define NUM_CTRLS ARRAY_SIZE(msm_venc_ctrls)
@@ -1736,6 +1746,7 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
	case V4L2_CID_MPEG_VIDC_VIDEO_PRIORITY:
	case V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_RANDOM:
	case V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB:
	case V4L2_CID_MPEG_VIDC_VENC_CVP_DISABLE:
		dprintk(VIDC_DBG, "Control set: ID : %x Val : %d\n",
			ctrl->id, ctrl->val);
		break;
@@ -3223,6 +3234,7 @@ int msm_venc_set_extradata(struct msm_vidc_inst *inst)
{
	int rc = 0;
	struct v4l2_ctrl *ctrl;
	struct v4l2_ctrl *cvp_ctrl;

	ctrl = get_ctrl(inst, V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA);
	if (ctrl->val == EXTRADATA_NONE) {
@@ -3240,10 +3252,6 @@ int msm_venc_set_extradata(struct msm_vidc_inst *inst)
		}
	}

	/* Always enable default extradata */
	rc = msm_comm_set_extradata(inst,
			HFI_PROPERTY_PARAM_VENC_CVP_METADATA_EXTRADATA, 0x1);

	if (ctrl->val & EXTRADATA_ADVANCED)
		// Enable Advanced Extradata - LTR Info
		msm_comm_set_extradata(inst,
@@ -3263,6 +3271,21 @@ int msm_venc_set_extradata(struct msm_vidc_inst *inst)
		}
	}

	cvp_ctrl = get_ctrl(inst, V4L2_CID_MPEG_VIDC_VENC_CVP_DISABLE);
	if (cvp_ctrl->val == V4L2_MPEG_MSM_VIDC_ENABLE) {
		if (ctrl->val & EXTRADATA_ENC_INPUT_CVP) {
			dprintk(VIDC_ERR,
				"%s: invalid params\n", __func__);
			return -EINVAL;
		}

		rc = msm_comm_set_extradata(inst,
			HFI_PROPERTY_PARAM_VENC_CVP_METADATA_EXTRADATA, 0x0);
	} else {
		rc = msm_comm_set_extradata(inst,
			HFI_PROPERTY_PARAM_VENC_CVP_METADATA_EXTRADATA, 0x1);
	}

	return rc;
}

+4 −0
Original line number Diff line number Diff line
@@ -821,6 +821,7 @@ enum v4l2_mpeg_vidc_extradata {
	EXTRADATA_ADVANCED = 2,
	EXTRADATA_ENC_INPUT_ROI = 4,
	EXTRADATA_ENC_INPUT_HDR10PLUS = 8,
	EXTRADATA_ENC_INPUT_CVP = 16,
};
enum v4l2_mpeg_cvp_extradata {
	V4L2_MPEG_CVP_EXTRADATA_NONE = 0,
@@ -973,6 +974,9 @@ enum v4l2_mpeg_vidc_video_hevc_max_hier_coding_layer {
	V4L2_MPEG_VIDC_VIDEO_HEVC_MAX_HIER_CODING_LAYER_6 = 6,
};

#define V4L2_CID_MPEG_VIDC_VENC_CVP_DISABLE \
	(V4L2_CID_MPEG_MSM_VIDC_BASE + 121)

/*  Camera class control IDs */

#define V4L2_CID_CAMERA_CLASS_BASE	(V4L2_CTRL_CLASS_CAMERA | 0x900)