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

Commit 890f907f authored by Praneeth Paladugu's avatar Praneeth Paladugu Committed by Matt Wagantall
Browse files

msm: vidc: Add support for MBI statistics mode



Clients can select the MBI extradata they are interested in
by setting MBI statistics mode. Based on this setting, FW
will decide the type extradata to return to the host.

Change-Id: I20768da25828bf2901f490f0624aa2f9f857cf29
Signed-off-by: default avatarPraneeth Paladugu <ppaladug@codeaurora.org>
parent b7af7b9e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1916,6 +1916,15 @@ int create_pkt_cmd_session_set_property(
			sizeof(struct hfi_hybrid_hierp);
		break;
	}
	case HAL_PARAM_VENC_MBI_STATISTICS_MODE:
	{
		pkt->rg_property_data[0] =
			HFI_PROPERTY_PARAM_VENC_MBI_DUMPING;
		pkt->rg_property_data[1] = *(u32 *)pdata;
		pkt->size += sizeof(u32) * 2;
		break;
	}

	/* FOLLOWING PROPERTIES ARE NOT IMPLEMENTED IN CORE YET */
	case HAL_CONFIG_BUFFER_REQUIREMENTS:
	case HAL_CONFIG_PRIORITY:
+26 −1
Original line number Diff line number Diff line
@@ -182,6 +182,12 @@ static const char *const perf_level[] = {
	"Turbo"
};

static const char *const mbi_statistics[] = {
	"Camcorder Default",
	"Mode 1",
	"Mode 2"
};

static const char *const intra_refresh_modes[] = {
	"None",
	"Cyclic",
@@ -1064,6 +1070,20 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		.step = 1,
		.qmenu = NULL,
	},
	{
		.id = V4L2_CID_MPEG_VIDC_VIDEO_MBI_STATISTICS_MODE,
		.name = "MBI Statistics Mode",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT,
		.maximum = V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2,
		.default_value = V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT,
		.menu_skip_mask = ~(
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT) |
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_1) |
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2)),
		.qmenu = mbi_statistics,
		.step = 1,
	},
};

#define NUM_CTRLS ARRAY_SIZE(msm_venc_ctrls)
@@ -1862,7 +1882,7 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
	struct hal_ltr_use use_ltr;
	struct hal_ltr_mark mark_ltr;
	struct hal_hybrid_hierp hyb_hierp;
	u32 hier_p_layers = 0, hier_b_layers = 0;
	u32 hier_p_layers = 0, hier_b_layers = 0, mbi_statistics_mode = 0;
	struct hal_venc_perf_mode venc_mode;

	if (!inst || !inst->core || !inst->core->device) {
@@ -2724,6 +2744,11 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
		hyb_hierp.layers = ctrl->val;
		pdata = &hyb_hierp;
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_MBI_STATISTICS_MODE:
		property_id = HAL_PARAM_VENC_MBI_STATISTICS_MODE;
		mbi_statistics_mode = ctrl->val;
		pdata = &mbi_statistics_mode;
		break;
	default:
		dprintk(VIDC_ERR, "Unsupported index: %x\n", ctrl->id);
		rc = -ENOTSUPP;
+1 −0
Original line number Diff line number Diff line
@@ -215,6 +215,7 @@ enum hal_property {
	HAL_PARAM_VENC_HIER_B_MAX_ENH_LAYERS,
	HAL_PARAM_VDEC_NON_SECURE_OUTPUT2,
	HAL_PARAM_VENC_HIER_P_HYBRID_MODE,
	HAL_PARAM_VENC_MBI_STATISTICS_MODE,
};

enum hal_domain {
+9 −0
Original line number Diff line number Diff line
@@ -1046,6 +1046,15 @@ enum v4l2_mpeg_vidc_video_dpb_color_format {
	V4L2_MPEG_VIDC_VIDEO_DPB_COLOR_FMT_TP10_UBWC = 2
};

#define V4L2_CID_MPEG_VIDC_VIDEO_MBI_STATISTICS_MODE	\
		(V4L2_CID_MPEG_MSM_VIDC_BASE + 74)

enum v4l2_mpeg_vidc_video_mbi_statistics_mode {
	V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT	= 0,
	V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_1		= 1,
	V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2		= 2,
};

/*  Camera class control IDs */

#define V4L2_CID_CAMERA_CLASS_BASE 	(V4L2_CTRL_CLASS_CAMERA | 0x900)