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

Commit 78715da3 authored by Praneeth Paladugu's avatar Praneeth Paladugu
Browse files

msm: vidc: Add support for YUV Stats extradata for encoders



This change adds support for YUV Stats extradata on input port
which Venus can use while encoding.

Change-Id: I053784b15b6a62825089e89819e80818f51a8ab8
Signed-off-by: default avatarPraneeth Paladugu <ppaladug@codeaurora.org>
parent cbd32df3
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -554,6 +554,9 @@ static int get_hfi_extradata_index(enum hal_extradata_id index)
	case HAL_EXTRADATA_VQZIP_SEI:
		ret = HFI_PROPERTY_PARAM_VDEC_VQZIP_SEI_EXTRADATA;
		break;
	case HAL_EXTRADATA_YUV_STATS:
		ret = HFI_PROPERTY_PARAM_VENC_YUVSTAT_INFO_EXTRADATA;
		break;
	default:
		dprintk(VIDC_WARN, "Extradata index not found: %d\n", index);
		break;
+24 −5
Original line number Diff line number Diff line
@@ -174,6 +174,7 @@ static const char *const mpeg_video_vidc_extradata[] = {
	"Extradata digital zoom",
	"Extradata aspect ratio",
	"Extradata macroblock metadata",
	"Extradata YUV Stats"
};

static const char *const perf_level[] = {
@@ -716,7 +717,7 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		.name = "Extradata Type",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_MPEG_VIDC_EXTRADATA_NONE,
		.maximum = V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI,
		.maximum = V4L2_MPEG_VIDC_EXTRADATA_YUV_STATS,
		.default_value = V4L2_MPEG_VIDC_EXTRADATA_NONE,
		.menu_skip_mask = ~(
			(1 << V4L2_MPEG_VIDC_EXTRADATA_NONE) |
@@ -736,7 +737,8 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
			(1 << V4L2_MPEG_VIDC_EXTRADATA_DIGITAL_ZOOM) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_ASPECT_RATIO) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_LTR) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI)
			(1 << V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_YUV_STATS)
			),
		.qmenu = mpeg_video_vidc_extradata,
	},
@@ -1321,8 +1323,16 @@ static int msm_venc_queue_setup(struct vb2_queue *q,
				V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA);
		if (ctrl)
			extradata = v4l2_ctrl_g_ctrl(ctrl);
		if (extradata != V4L2_MPEG_VIDC_EXTRADATA_NONE)
		switch (extradata) {
		case V4L2_MPEG_VIDC_EXTRADATA_MULTISLICE_INFO:
		case V4L2_MPEG_VIDC_EXTRADATA_NUM_CONCEALED_MB:
		case V4L2_MPEG_VIDC_EXTRADATA_METADATA_FILLER:
		case V4L2_MPEG_VIDC_EXTRADATA_LTR:
		case V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI:
			*num_planes = *num_planes + 1;
		default:
			break;
		}
		inst->fmts[CAPTURE_PORT]->num_planes = *num_planes;

		for (i = 0; i < *num_planes; i++) {
@@ -1378,8 +1388,17 @@ static int msm_venc_queue_setup(struct vb2_queue *q,
			V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA);
		if (ctrl)
			extradata = v4l2_ctrl_g_ctrl(ctrl);
		if (extradata == V4L2_MPEG_VIDC_EXTRADATA_INPUT_CROP)
			switch (extradata) {
			case V4L2_MPEG_VIDC_EXTRADATA_INPUT_CROP:
			case V4L2_MPEG_VIDC_EXTRADATA_DIGITAL_ZOOM:
			case V4L2_MPEG_VIDC_EXTRADATA_ASPECT_RATIO:
			case V4L2_MPEG_VIDC_EXTRADATA_YUV_STATS:
				*num_planes = *num_planes + 1;
				break;
			default:
				break;
			}

		inst->fmts[OUTPUT_PORT]->num_planes = *num_planes;
		rc = call_hfi_op(hdev, session_set_property, inst->session,
					property_id, &new_buf_count);
+3 −0
Original line number Diff line number Diff line
@@ -4313,6 +4313,9 @@ enum hal_extradata_id msm_comm_get_hal_extradata_index(
	case V4L2_MPEG_VIDC_EXTRADATA_VQZIP_SEI:
		ret = HAL_EXTRADATA_VQZIP_SEI;
		break;
	case V4L2_MPEG_VIDC_EXTRADATA_YUV_STATS:
		ret = HAL_EXTRADATA_YUV_STATS;
		break;
	default:
		dprintk(VIDC_WARN, "Extradata not found: %d\n", index);
		break;
+4 −0
Original line number Diff line number Diff line
@@ -240,6 +240,10 @@ struct hfi_extradata_header {
	(HFI_PROPERTY_PARAM_VENC_OX_START + 0x003)
#define  HFI_PROPERTY_PARAM_VENC_MBI_DUMPING				\
	(HFI_PROPERTY_PARAM_VENC_OX_START + 0x005)
#define HFI_PROPERTY_PARAM_VENC_FRAME_QP_EXTRADATA		\
	(HFI_PROPERTY_PARAM_VENC_OX_START + 0x006)
#define  HFI_PROPERTY_PARAM_VENC_YUVSTAT_INFO_EXTRADATA		\
	(HFI_PROPERTY_PARAM_VENC_OX_START + 0x007)

#define HFI_PROPERTY_CONFIG_VENC_OX_START				\
	(HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000)
+1 −0
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ enum hal_extradata_id {
	HAL_EXTRADATA_LTR_INFO,
	HAL_EXTRADATA_METADATA_MBI,
	HAL_EXTRADATA_VQZIP_SEI,
	HAL_EXTRADATA_YUV_STATS,
};

enum hal_property {
Loading