Procházet zdrojové kódy

video: driver: add input metadata fd control

Added an extension to allow client to send
input metadata buffer fd via request api.

Change-Id: I8e05e53512b3f5dd31fa16ea64ee5d97ef2de7b4
Signed-off-by: Darshana Patil <[email protected]>
Darshana Patil před 3 roky
rodič
revize
dce0ce7996

+ 8 - 0
driver/platform/kalama/src/msm_vidc_kalama.c

@@ -1506,6 +1506,14 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
 		{LTR_COUNT, IR_RANDOM, SLICE_MODE},
 		msm_vidc_adjust_all_intra, NULL},
 
+	{INPUT_METADATA_FD, ENC|DEC, CODECS_ALL,
+		-1, INT_MAX, 1, -1,
+		V4L2_CID_MPEG_VIDC_INPUT_METADATA_FD,
+		0,
+		CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
+		{0}, {0},
+		NULL, NULL},
+
 	{META_LTR_MARK_USE, ENC, H264|HEVC,
 		V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
 		1, V4L2_MPEG_MSM_VIDC_DISABLE,

+ 1 - 0
driver/vidc/inc/msm_vidc_internal.h

@@ -459,6 +459,7 @@ enum msm_vidc_inst_capability_type {
 	FILM_GRAIN,
 	SUPER_BLOCK,
 	ALL_INTRA,
+	INPUT_METADATA_FD,
 	META_BITSTREAM_RESOLUTION,
 	META_CROP_OFFSETS,
 	META_LTR_MARK_USE,

+ 2 - 0
driver/vidc/src/msm_vidc_driver.c

@@ -176,6 +176,7 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
 	{FILM_GRAIN,                     "FILM_GRAIN"                 },
 	{SUPER_BLOCK,                    "SUPER_BLOCK"                },
 	{ALL_INTRA,                      "ALL_INTRA"                  },
+	{INPUT_METADATA_FD,              "INPUT_METADATA_FD"          },
 	{META_BITSTREAM_RESOLUTION,      "META_BITSTREAM_RESOLUTION"  },
 	{META_CROP_OFFSETS,              "META_CROP_OFFSETS"          },
 	{META_LTR_MARK_USE,              "META_LTR_MARK_USE"          },
@@ -1337,6 +1338,7 @@ bool msm_vidc_allow_s_ctrl(struct msm_vidc_inst *inst, u32 id)
 			case V4L2_CID_MPEG_VIDC_ENC_INPUT_COMPRESSION_RATIO:
 			case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:
 			case V4L2_CID_MPEG_VIDC_PRIORITY:
+			case V4L2_CID_MPEG_VIDC_INPUT_METADATA_FD:
 				allow = true;
 				break;
 			default:

+ 4 - 0
include/uapi/vidc/media/v4l2_vidc_extensions.h

@@ -194,7 +194,11 @@ enum v4l2_mpeg_video_av1_tier {
 /* AV1 Decoder Film Grain */
 #define V4L2_CID_MPEG_VIDC_AV1D_FILM_GRAIN_PRESENT                           \
 	(V4L2_CID_MPEG_VIDC_BASE + 0x35)
+/* Control to set input metadata buffer fd */
+#define V4L2_CID_MPEG_VIDC_INPUT_METADATA_FD                                 \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x36)
 
+/* add new controls above this line */
 /* Deprecate below controls once availble in gki and gsi bionic header */
 #ifndef V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID
 #define V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID                            \