Browse Source

video: driver: add private control definitions

Add private control macros and update old private
control macro usage with newly added macros.

Change-Id: Ie07fa28d74860bbd4de45fdcf746c1990c811aec
Signed-off-by: Akshata Sahukar <[email protected]>
Akshata Sahukar 4 năm trước cách đây
mục cha
commit
7fe61f51d3

+ 6 - 5
driver/platform/waipio/src/msm_vidc_waipio.c

@@ -113,20 +113,21 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 	{MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4,
 		V4L2_CID_MIN_BUFFERS_FOR_CAPTURE},
 	{DECODE_ORDER, DEC, CODECS_ALL, 0, 1, 1, 0,
-		V4L2_CID_MPEG_VIDC_VIDEO_DECODE_ORDER,
+		V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE,
 		HFI_PROP_DECODE_ORDER_OUTPUT},
 	{THUMBNAIL_MODE, DEC, CODECS_ALL, 0, 1, 1, 0,
-		V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE,
+		V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE,
 		HFI_PROP_THUMBNAIL_MODE},
 	{SECURE_MODE, ENC|DEC, CODECS_ALL, 0, 1, 1, 0,
-		V4L2_CID_MPEG_VIDC_VIDEO_SECURE,
+		V4L2_CID_MPEG_VIDC_SECURE,
 		HFI_PROP_SECURE},
 	{LOWLATENCY_MODE, ENC|DEC, CODECS_ALL, 0, 1, 1, 0,
-		V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE},
-	{LOWLATENCY_HINT, DEC, CODECS_ALL, 0, 1, 1, 0,
+		V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST},
+	/* {LOWLATENCY_HINT, DEC, CODECS_ALL, 0, 1, 1, 0,
 		V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT},
 	{BUF_SIZE_LIMIT, ENC|DEC, CODECS_ALL, 0, 0x0fffffff, 1, 0,
 		V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT},
+	*/
 
 	/* (8192 * 4320) / 256 */
 	{MBPF, ENC|DEC, CODECS_ALL, 64, 138240, 1, 138240},

+ 10 - 10
driver/vidc/src/msm_vdec.c

@@ -141,8 +141,8 @@ static int msm_vdec_set_bit_depth(struct msm_vidc_inst *inst,
 	}
 
 	colorformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat;
-	if (colorformat == V4L2_PIX_FMT_NV12_P010 ||
-	    colorformat == V4L2_PIX_FMT_NV12_TP10_UBWC)
+	if (colorformat == V4L2_PIX_FMT_VIDC_P010 ||
+	    colorformat == V4L2_PIX_FMT_VIDC_TP10C)
 		bitdepth = 10 << 16 | 10;
 	rc = venus_hfi_session_property(inst,
 			HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
@@ -289,8 +289,8 @@ static int msm_vdec_set_colorformat(struct msm_vidc_inst *inst,
 	}
 
 	pixelformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat;
-	if (pixelformat != V4L2_PIX_FMT_NV12_UBWC &&
-	    pixelformat != V4L2_PIX_FMT_NV12_TP10_UBWC) {
+	if (pixelformat != V4L2_PIX_FMT_VIDC_NV12C &&
+	    pixelformat != V4L2_PIX_FMT_VIDC_TP10C) {
 		s_vpr_e(inst->sid, "%s: invalid pixelformat %#x\n",
 			__func__, pixelformat);
 		return -EINVAL;
@@ -990,7 +990,7 @@ int msm_vdec_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
 		}
 		fmt = &inst->fmts[INPUT_META_PORT];
 		fmt->type = INPUT_META_PLANE;
-		fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+		fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 		fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
 				inst, MSM_VIDC_BUF_INPUT_META);
 		inst->buffers.input_meta.min_count =
@@ -1057,7 +1057,7 @@ int msm_vdec_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
 		}
 		fmt = &inst->fmts[OUTPUT_META_PORT];
 		fmt->type = OUTPUT_META_PLANE;
-		fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+		fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 		fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
 				inst, MSM_VIDC_BUF_OUTPUT_META);
 		inst->buffers.output_meta.min_count =
@@ -1154,7 +1154,7 @@ int msm_vdec_enum_fmt(struct msm_vidc_inst *inst, struct v4l2_fmtdesc *f)
 		strlcpy(f->description, "colorformat", sizeof(f->description));
 	} else if (f->type == INPUT_META_PLANE || f->type == OUTPUT_META_PLANE) {
 		if (!f->index) {
-			f->pixelformat = V4L2_PIX_FMT_VIDC_META;
+			f->pixelformat = V4L2_META_FMT_VIDC;
 			strlcpy(f->description, "metadata", sizeof(f->description));
 		} else {
 			return -EINVAL;
@@ -1206,7 +1206,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
 
 	f = &inst->fmts[INPUT_META_PORT];
 	f->type = INPUT_META_PLANE;
-	f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+	f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 	f->fmt.meta.buffersize = call_session_op(core, buffer_size,
 			inst, MSM_VIDC_BUF_INPUT_META);
 	inst->buffers.input_meta.min_count = inst->buffers.input.min_count;
@@ -1216,7 +1216,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
 
 	f = &inst->fmts[OUTPUT_PORT];
 	f->type = OUTPUT_MPLANE;
-	f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_NV12_UBWC;
+	f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_VIDC_NV12C;
 	f->fmt.pix_mp.width = VENUS_Y_STRIDE(
 		v4l2_colorformat_to_media(f->fmt.pix_mp.pixelformat, __func__),
 		DEFAULT_WIDTH);
@@ -1238,7 +1238,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
 
 	f = &inst->fmts[OUTPUT_META_PORT];
 	f->type = OUTPUT_META_PLANE;
-	f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+	f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 	f->fmt.meta.buffersize = call_session_op(core, buffer_size,
 			inst, MSM_VIDC_BUF_OUTPUT_META);
 	inst->buffers.output_meta.min_count = inst->buffers.output.min_count;

+ 8 - 8
driver/vidc/src/msm_venc.c

@@ -80,8 +80,8 @@ static int msm_venc_set_colorformat(struct msm_vidc_inst *inst,
 	}
 
 	pixelformat = inst->fmts[INPUT_PORT].fmt.pix_mp.pixelformat;
-	if (pixelformat != V4L2_PIX_FMT_NV12_UBWC &&
-	    pixelformat != V4L2_PIX_FMT_NV12_TP10_UBWC) {
+	if (pixelformat != V4L2_PIX_FMT_VIDC_NV12C &&
+	    pixelformat != V4L2_PIX_FMT_VIDC_TP10C) {
 		s_vpr_e(inst->sid, "%s: invalid pixelformat %#x\n",
 			__func__, pixelformat);
 		return -EINVAL;
@@ -753,7 +753,7 @@ int msm_venc_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
 		}
 		fmt = &inst->fmts[INPUT_META_PORT];
 		fmt->type = INPUT_META_PLANE;
-		fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+		fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 		fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
 				inst, MSM_VIDC_BUF_INPUT_META);
 		inst->buffers.input_meta.min_count =
@@ -830,7 +830,7 @@ int msm_venc_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
 		}
 		fmt = &inst->fmts[OUTPUT_META_PORT];
 		fmt->type = OUTPUT_META_PLANE;
-		fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+		fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 		fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
 				inst, MSM_VIDC_BUF_OUTPUT_META);
 		inst->buffers.output_meta.min_count =
@@ -927,7 +927,7 @@ int msm_venc_enum_fmt(struct msm_vidc_inst *inst, struct v4l2_fmtdesc *f)
 		strlcpy(f->description, "colorformat", sizeof(f->description));
 	} else if (f->type == INPUT_META_PLANE || f->type == OUTPUT_META_PLANE) {
 		if (!f->index) {
-			f->pixelformat = V4L2_PIX_FMT_VIDC_META;
+			f->pixelformat = V4L2_META_FMT_VIDC;
 			strlcpy(f->description, "metadata", sizeof(f->description));
 		} else {
 			return -EINVAL;
@@ -977,7 +977,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
 
 	f = &inst->fmts[OUTPUT_META_PORT];
 	f->type = OUTPUT_META_PLANE;
-	f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+	f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 	f->fmt.meta.buffersize = call_session_op(core, buffer_size,
 			inst, MSM_VIDC_BUF_OUTPUT_META);
 	inst->buffers.output_meta.min_count = inst->buffers.output.min_count;
@@ -987,7 +987,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
 
 	f = &inst->fmts[INPUT_PORT];
 	f->type = INPUT_MPLANE;
-	f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_NV12_UBWC;
+	f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_VIDC_NV12C;
 	f->fmt.pix_mp.width = VENUS_Y_STRIDE(
 		v4l2_colorformat_to_media(f->fmt.pix_mp.pixelformat, __func__),
 		DEFAULT_WIDTH);
@@ -1009,7 +1009,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
 
 	f = &inst->fmts[INPUT_META_PORT];
 	f->type = INPUT_META_PLANE;
-	f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META;
+	f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
 	f->fmt.meta.buffersize = call_session_op(core, buffer_size,
 			inst, MSM_VIDC_BUF_INPUT_META);
 	inst->buffers.input_meta.min_count = inst->buffers.input.min_count;

+ 5 - 9
driver/vidc/src/msm_vidc_control.c

@@ -72,22 +72,18 @@ static const char * const * msm_vidc_get_qmenu_type(
 static const char *msm_vidc_get_priv_ctrl_name(u32 sid, u32 control_id)
 {
 	switch (control_id) {
-	case V4L2_CID_MPEG_VIDC_VIDEO_DECODE_ORDER:
-		return "Decode Order";
-	case V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE:
+	case V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE:
 		return "Sync Frame Decode";
-	case V4L2_CID_MPEG_VIDC_VIDEO_SECURE:
+	case V4L2_CID_MPEG_VIDC_SECURE:
 		return "Secure Mode";
-	case V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE:
+	case V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST:
 		return "Low Latency Mode";
+	/* TODO(AS)
 	case V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT:
 		return "Low Latency Hint";
 	case V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT:
 		return "Buffer Size Limit";
-	case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
-		return "Video Bitrate Control";
-	case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD:
-		return "NAL Format";
+	*/
 	default:
 		s_vpr_e(sid, "%s: ctrl name not available for ctrl id %#x\n",
 			__func__, control_id);

+ 12 - 14
driver/vidc/src/msm_vidc_driver.c

@@ -173,16 +173,16 @@ enum msm_vidc_colorformat_type v4l2_colorformat_to_driver(u32 v4l2_colorformat,
 	case V4L2_PIX_FMT_NV21:
 		colorformat = MSM_VIDC_FMT_NV21;
 		break;
-	case V4L2_PIX_FMT_NV12_UBWC:
+	case V4L2_PIX_FMT_VIDC_NV12C:
 		colorformat = MSM_VIDC_FMT_NV12_UBWC;
 		break;
-	case V4L2_PIX_FMT_NV12_TP10_UBWC:
+	case V4L2_PIX_FMT_VIDC_TP10C:
 		colorformat = MSM_VIDC_FMT_NV12_TP10_UBWC;
 		break;
-	case V4L2_PIX_FMT_RGBA8888_UBWC:
+	case V4L2_PIX_FMT_VIDC_ARGB32C:
 		colorformat = MSM_VIDC_FMT_RGBA8888_UBWC;
 		break;
-	case V4L2_PIX_FMT_NV12_P010:
+	case V4L2_PIX_FMT_VIDC_P010:
 		colorformat = MSM_VIDC_FMT_NV12_P010;
 		break;
 	default:
@@ -206,16 +206,16 @@ u32 v4l2_colorformat_from_driver(enum msm_vidc_colorformat_type colorformat,
 		v4l2_colorformat = V4L2_PIX_FMT_NV21;
 		break;
 	case MSM_VIDC_FMT_NV12_UBWC:
-		v4l2_colorformat = V4L2_PIX_FMT_NV12_UBWC;
+		v4l2_colorformat = V4L2_PIX_FMT_VIDC_NV12C;
 		break;
 	case MSM_VIDC_FMT_NV12_TP10_UBWC:
-		v4l2_colorformat = V4L2_PIX_FMT_NV12_TP10_UBWC;
+		v4l2_colorformat = V4L2_PIX_FMT_VIDC_TP10C;
 		break;
 	case MSM_VIDC_FMT_RGBA8888_UBWC:
-		v4l2_colorformat = V4L2_PIX_FMT_RGBA8888_UBWC;
+		v4l2_colorformat = V4L2_PIX_FMT_VIDC_ARGB32C;
 		break;
 	case MSM_VIDC_FMT_NV12_P010:
-		v4l2_colorformat = V4L2_PIX_FMT_NV12_P010;
+		v4l2_colorformat = V4L2_PIX_FMT_VIDC_P010;
 		break;
 	default:
 		d_vpr_e("%s: invalid driver color format %#x\n",
@@ -232,15 +232,13 @@ u32 v4l2_colorformat_to_media(u32 v4l2_fmt, const char *func)
 		return COLOR_FMT_NV12;
 	case V4L2_PIX_FMT_NV21:
 		return COLOR_FMT_NV21;
-	case V4L2_PIX_FMT_NV12_512:
-		return COLOR_FMT_NV12_512;
-	case V4L2_PIX_FMT_NV12_P010:
+	case V4L2_PIX_FMT_VIDC_P010:
 		return COLOR_FMT_P010;
-	case V4L2_PIX_FMT_NV12_UBWC:
+	case V4L2_PIX_FMT_VIDC_NV12C:
 		return COLOR_FMT_NV12_UBWC;
-	case V4L2_PIX_FMT_NV12_TP10_UBWC:
+	case V4L2_PIX_FMT_VIDC_TP10C:
 		return COLOR_FMT_NV12_BPP10_UBWC;
-	case V4L2_PIX_FMT_RGBA8888_UBWC:
+	case V4L2_PIX_FMT_VIDC_ARGB32C:
 		return COLOR_FMT_RGBA8888_UBWC;
 	default:
 		d_vpr_e("%s: invalid v4l2 color fmt: %#x, set default (NV12)",

+ 98 - 27
include/uapi/vidc/media/v4l2_vidc_extensions.h

@@ -9,35 +9,106 @@
 #include <linux/types.h>
 #include <linux/v4l2-controls.h>
 
-/* vendor color format start */
-/* UBWC 8-bit Y/CbCr 4:2:0  */
-#define V4L2_PIX_FMT_NV12_UBWC                  v4l2_fourcc('Q', '1', '2', '8')
-/* NV12_512 8-bit Y/CbCr 4:2:0  */
-#define V4L2_PIX_FMT_NV12_512                   v4l2_fourcc('Q', '5', '1', '2')
-/* NV12 10-bit Y/CbCr 4:2:0 */
-#define V4L2_PIX_FMT_NV12_P010                  v4l2_fourcc('Q', 'P', '1', '0')
-/* UBWC 10-bit Y/CbCr 4:2:0 */
-#define V4L2_PIX_FMT_NV12_TP10_UBWC             v4l2_fourcc('Q', 'T', 'P', '0')
-#define V4L2_PIX_FMT_RGBA8888_UBWC              v4l2_fourcc('Q', 'R', 'G', 'B')
-/* Y/CbCr 4:2:0 P10 Venus */
-#define V4L2_PIX_FMT_VIDC_META                  v4l2_fourcc('Q', 'M', 'E', 'T')
-/* vendor color format end */
+/*
+ * supported standard color formats
+ * V4L2_PIX_FMT_NV12   Y/CbCr 4:2:0
+ * NV21?? // TODO: jdas
+ * V4L2_PIX_FMT_ARGB32  ARGB-8-8-8-8
+ */
+ /* Below are additional color formats */
+/* 12  Y/CbCr 4:2:0  compressed */
+#define V4L2_PIX_FMT_VIDC_NV12C                 v4l2_fourcc('Q', '1', '2', 'C')
+/* Y/CbCr 4:2:0, 10 bits per channel compressed */
+#define V4L2_PIX_FMT_VIDC_TP10C                 v4l2_fourcc('Q', '1', '0', 'C')
+/* Y/CbCr 4:2:0, 10 bits per channel */
+#define V4L2_PIX_FMT_VIDC_P010                  v4l2_fourcc('P', '0', '1', '0')
+/* 32  ARGB-8-8-8-8 compressed */
+#define V4L2_PIX_FMT_VIDC_ARGB32C               v4l2_fourcc('Q', '2', '4', 'C')
+#define V4L2_META_FMT_VIDC                      v4l2_fourcc('Q', 'M', 'E', 'T')
 
 /* vendor controls start */
-#define V4L2_CID_MPEG_MSM_VIDC_BASE             (V4L2_CTRL_CLASS_MPEG | 0x2000)
-
-#define V4L2_CID_MPEG_VIDC_VIDEO_DECODE_ORDER                                 \
-		(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x1)
-#define V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE                            \
-		(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x2)
-#define V4L2_CID_MPEG_VIDC_VIDEO_SECURE                                       \
-		(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x3)
-#define V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE                              \
-		(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x4)
-#define V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT                              \
-		(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x5)
-#define V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT                            \
-		(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x6)
+#define V4L2_CID_MPEG_VIDC_BASE                 (V4L2_CTRL_CLASS_MPEG | 0x2000)
+
+#define V4L2_CID_MPEG_VIDC_SECURE               (V4L2_CID_MPEG_VIDC_BASE + 0x1)
+/* HEIC encoder and decoder */
+#define V4L2_CID_MPEG_VIDC_HEIC                 (V4L2_CID_MPEG_VIDC_BASE + 0x2)
+#define V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST   (V4L2_CID_MPEG_VIDC_BASE + 0x3)
+/* FIXme: */
+#define V4L2_CID_MPEG_VIDC_CODEC_CONFIG         (V4L2_CID_MPEG_VIDC_BASE + 0x4)
+/* thumbnail decoding */
+#define V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE       (V4L2_CID_MPEG_VIDC_BASE + 0x4)
+/* B frame min/max qp */
+#define V4L2_CID_MPEG_VIDC_B_FRAME_MIN_QP       (V4L2_CID_MPEG_VIDC_BASE + 0x5)
+#define V4L2_CID_MPEG_VIDC_B_FRAME_MAX_QP       (V4L2_CID_MPEG_VIDC_BASE + 0x6)
+/* LTR controls */
+#define V4L2_CID_MPEG_VIDC_LTRCOUNT             (V4L2_CID_MPEG_VIDC_BASE + 0x7)
+#define V4L2_CID_MPEG_VIDC_USELTRFRAME          (V4L2_CID_MPEG_VIDC_BASE + 0x8)
+#define V4L2_CID_MPEG_VIDC_MARKLTRFRAME         (V4L2_CID_MPEG_VIDC_BASE + 0x9)
+/* Base layer priority id value */
+#define V4L2_CID_MPEG_VIDC_BASELAYER_PRIORITY   (V4L2_CID_MPEG_VIDC_BASE + 0xA)
+/* Encoder Intra refresh period */
+#define V4L2_CID_MPEG_VIDC_INTRA_REFRESH_PERIOD (V4L2_CID_MPEG_VIDC_BASE + 0xB)
+#define V4L2_CID_MPEG_VIDC_AU_DELIMITER         (V4L2_CID_MPEG_VIDC_BASE + 0xC)
+#define V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC  (V4L2_CID_MPEG_VIDC_BASE + 0xD)
+/* Encoder quality controls */
+#define V4L2_CID_MPEG_VIDC_CONTENT_ADAPTIVE_CODING                            \
+	(V4L2_CID_MPEG_VIDC_BASE + 0xE)
+#define V4L2_CID_MPEG_VIDC_QUALITY_BITRATE_BOOST                              \
+	(V4L2_CID_MPEG_VIDC_BASE + 0xF)
+#define V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES                                   \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x10)
+enum v4l2_mpeg_vidc_blur_types {
+	VIDC_BLUR_NONE               = 0x0,
+	VIDC_BLUR_EXTERNAL           = 0x1,
+	VIDC_BLUR_ADAPTIVE           = 0x2,
+};
+/* (blur width) << 16 | (blur height) */
+#define V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION                              \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x11)
+/* TODO: jdas: compound control for matrix */
+#define V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX                        \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x12)
+
+/* various Metadata - encoder & decoder */
+#define V4L2_CID_MPEG_VIDC_METADATA_ENABLE                                    \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x13)
+#define V4L2_CID_MPEG_VIDC_METADATA_DISABLE                                   \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x14)
+enum v4l2_mpeg_vidc_metapayload_header_flags {
+	METADATA_FLAGS_NONE             = 0,
+	METADATA_FLAGS_TOP_FIELD        = (1 << 0),
+	METADATA_FLAGS_BOTTOM_FIELD     = (1 << 1),
+};
+struct msm_vidc_metabuf_header {
+	__u32 count;
+	__u32 size;
+	__u32 version;
+	__u32 reserved[5];
+};
+struct msm_vidc_metapayload_header {
+	__u32 type;
+	__u32 size;
+	__u32 version;
+	__u32 offset;
+	__u32 flags;
+	__u32 reserved[3];
+};
+enum v4l2_mpeg_vidc_metadata {
+	METADATA_LTR_MARK_USE_DETAILS         = 0x03000137,
+	METADATA_METADATA_SEQ_HEADER_NAL      = 0x0300014a,
+	METADATA_DPB_LUMA_CHROMA_MISR         = 0x03000153,
+	METADATA_OPB_LUMA_CHROMA_MISR         = 0x03000154,
+	METADATA_INTERLACE                    = 0x03000156,
+	METADATA_CONEALED_MB_COUNT            = 0x0300015f,
+	METADATA_HISTOGRAM_INFO               = 0x03000161,
+	METADATA_SEI_MASTERING_DISPLAY_COLOUR = 0x03000163,
+	METADATA_SEI_CONTENT_LIGHT_LEVEL      = 0x03000164,
+	METADATA_HDR10PLUS                    = 0x03000165,
+	METADATA_EVA_STATS                    = 0x03000167,
+	METADATA_BUFFER_TAG                   = 0x0300016b,
+	METADATA_SUBFRAME_OUTPUT              = 0x0300016d,
+	METADATA_ROI_INFO                     = 0x03000173,
+};
 
 /* vendor controls end */