浏览代码

video-driver: Add support for saliency metadata

Add support for saliency metadata control.

Change-Id: I6bfe54f58494a8189484bfbb3c2d989010fe3a2b
Signed-off-by: Manikanta Kanamarlapudi <[email protected]>
Manikanta Kanamarlapudi 3 年之前
父节点
当前提交
ab51846ea0

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

@@ -1840,6 +1840,17 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
 		{MIN_QUALITY},
 		msm_vidc_adjust_roi_info, NULL},
 
+	{META_SALIENCY_INFO, ENC, H264|HEVC,
+		V4L2_MPEG_VIDC_META_DISABLE,
+		V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
+		0, V4L2_MPEG_VIDC_META_DISABLE,
+		V4L2_CID_MPEG_VIDC_METADATA_SALIENCY_INFO,
+		HFI_PROP_ROI_AS_SALIENCY_INFO,
+		CAP_FLAG_INPUT_PORT | CAP_FLAG_BITMASK,
+		{},
+		{},
+		NULL, NULL},
+
 	{META_DEC_QP_METADATA, DEC, CODECS_ALL,
 		V4L2_MPEG_VIDC_META_DISABLE,
 		V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,

+ 11 - 0
driver/platform/waipio/src/msm_vidc_waipio.c

@@ -1674,6 +1674,17 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 		{MIN_QUALITY},
 		msm_vidc_adjust_roi_info, NULL},
 
+	{META_SALIENCY_INFO, ENC, H264|HEVC,
+		V4L2_MPEG_VIDC_META_DISABLE,
+		V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
+		0, V4L2_MPEG_VIDC_META_DISABLE,
+		V4L2_CID_MPEG_VIDC_METADATA_SALIENCY_INFO,
+		HFI_PROP_ROI_AS_SALIENCY_INFO,
+		CAP_FLAG_INPUT_PORT | CAP_FLAG_BITMASK,
+		{},
+		{},
+		NULL, NULL},
+
 	{META_DEC_QP_METADATA, DEC, CODECS_ALL,
 		V4L2_MPEG_VIDC_META_DISABLE,
 		V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,

+ 6 - 0
driver/vidc/inc/hfi_property.h

@@ -543,6 +543,12 @@ enum hfi_nal_length_field_type {
 
 #define HFI_PROP_AV1_DRAP_CONFIG                                0x03000189
 
+enum hfi_saliency_type {
+     HFI_SALIENCY_NONE,
+     HFI_SALIENCY_TYPE0,
+};
+#define HFI_PROP_ROI_AS_SALIENCY_INFO                           0x0300018A
+
 #define HFI_PROP_FENCE                                          0x0300018B
 
 #define HFI_PROP_END                                            0x03FFFFFF

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

@@ -377,6 +377,7 @@ enum msm_vidc_inst_capability_type {
 	META_MAX_NUM_REORDER_FRAMES,
 	META_EVA_STATS,
 	META_ROI_INFO,
+	META_SALIENCY_INFO,
 	META_CAP_MAX,
 	/* end of metadata caps */
 	FRAME_WIDTH,

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

@@ -79,6 +79,7 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
 	{META_MAX_NUM_REORDER_FRAMES,    "META_MAX_NUM_REORDER_FRAMES"},
 	{META_EVA_STATS,                 "META_EVA_STATS"             },
 	{META_ROI_INFO,                  "META_ROI_INFO"              },
+	{META_SALIENCY_INFO,             "META_SALIENCY_INFO"         },
 	{META_CAP_MAX,                   "META_CAP_MAX"               },
 	{FRAME_WIDTH,                    "FRAME_WIDTH"                },
 	{LOSSLESS_FRAME_WIDTH,           "LOSSLESS_FRAME_WIDTH"       },

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

@@ -137,6 +137,8 @@ enum v4l2_mpeg_vidc_metadata_bits {
 	(V4L2_CID_MPEG_VIDC_BASE + 0x24)
 #define V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS                              \
 	(V4L2_CID_MPEG_VIDC_BASE + 0x25)
+#define V4L2_CID_MPEG_VIDC_METADATA_SALIENCY_INFO                             \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x26)
 
 /* Encoder Super frame control */
 #define V4L2_CID_MPEG_VIDC_SUPERFRAME           (V4L2_CID_MPEG_VIDC_BASE + 0x28)
@@ -319,6 +321,12 @@ enum v4l2_mpeg_vidc_metapayload_header_flags {
 	METADATA_FLAGS_TOP_FIELD        = (1 << 0),
 	METADATA_FLAGS_BOTTOM_FIELD     = (1 << 1),
 };
+
+enum saliency_roi_info {
+	METADATA_SALIENCY_NONE,
+	METADATA_SALIENCY_TYPE0,
+};
+
 struct msm_vidc_metabuf_header {
 	__u32 count;
 	__u32 size;
@@ -355,6 +363,7 @@ enum v4l2_mpeg_vidc_metadata {
 	METADATA_ROI_INFO                     = 0x03000173,
 	METADATA_DPB_TAG_LIST                 = 0x03000179,
 	METADATA_MAX_NUM_REORDER_FRAMES       = 0x03000127,
+	METADATA_SALIENCY_INFO                = 0x0300018A,
 	METADATA_FENCE                        = 0x0300018B,
 };
 enum meta_interlace_info {