Эх сурвалжийг харах

video: driver: add vui timing info control

Add vui timing info control with default
value as disabled in driver.

Change-Id: Ibaa45303fe389a0120d487fe3b6ff336e721f359
Signed-off-by: Manikanta Kanamarlapudi <[email protected]>
Manikanta Kanamarlapudi 3 жил өмнө
parent
commit
2e52eecb78

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

@@ -400,6 +400,14 @@ static struct msm_platform_inst_capability instance_cap_data_kalama[] = {
 		1, V4L2_MPEG_MSM_VIDC_DISABLE,
 		1, V4L2_MPEG_MSM_VIDC_DISABLE,
 		V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR},
 		V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR},
 
 
+	{VUI_TIMING_INFO, ENC, CODECS_ALL,
+		V4L2_MPEG_MSM_VIDC_DISABLE,
+		V4L2_MPEG_MSM_VIDC_ENABLE,
+		1, V4L2_MPEG_MSM_VIDC_DISABLE,
+		V4L2_CID_MPEG_VIDC_VUI_TIMING_INFO,
+		HFI_PROP_DISABLE_VUI_TIMING_INFO,
+		CAP_FLAG_OUTPUT_PORT},
+
 	{WITHOUT_STARTCODE, ENC, CODECS_ALL,
 	{WITHOUT_STARTCODE, ENC, CODECS_ALL,
 		V4L2_MPEG_MSM_VIDC_DISABLE,
 		V4L2_MPEG_MSM_VIDC_DISABLE,
 		V4L2_MPEG_MSM_VIDC_ENABLE,
 		V4L2_MPEG_MSM_VIDC_ENABLE,
@@ -2415,6 +2423,12 @@ static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_kala
 		{SLICE_MODE}, {LOWLATENCY_MODE, OUTPUT_BUF_HOST_MAX_COUNT},
 		{SLICE_MODE}, {LOWLATENCY_MODE, OUTPUT_BUF_HOST_MAX_COUNT},
 		msm_vidc_adjust_delivery_mode,
 		msm_vidc_adjust_delivery_mode,
 		msm_vidc_set_u32},
 		msm_vidc_set_u32},
+
+	{VUI_TIMING_INFO, ENC, CODECS_ALL,
+		{0},
+		{0},
+		NULL,
+		msm_vidc_set_vui_timing_info},
 };
 };
 
 
 /* Default UBWC config for LPDDR5 */
 /* Default UBWC config for LPDDR5 */

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

@@ -567,6 +567,8 @@ enum hfi_saliency_type {
 
 
 #define HFI_PROP_COMV_BUFFER_COUNT                              0x03000193
 #define HFI_PROP_COMV_BUFFER_COUNT                              0x03000193
 
 
+#define HFI_PROP_DISABLE_VUI_TIMING_INFO                        0x03000194
+
 #define HFI_PROP_END                                            0x03FFFFFF
 #define HFI_PROP_END                                            0x03FFFFFF
 
 
 #define HFI_SESSION_ERROR_BEGIN                                 0x04000000
 #define HFI_SESSION_ERROR_BEGIN                                 0x04000000

+ 2 - 0
driver/vidc/inc/msm_vidc_control.h

@@ -137,5 +137,7 @@ int msm_vidc_get_parent_value(struct msm_vidc_inst* inst, u32 cap, u32 parent,
 	s32 *value, const char *func);
 	s32 *value, const char *func);
 u32 msm_vidc_get_port_info(struct msm_vidc_inst *inst,
 u32 msm_vidc_get_port_info(struct msm_vidc_inst *inst,
 	enum msm_vidc_inst_capability_type cap_id);
 	enum msm_vidc_inst_capability_type cap_id);
+int msm_vidc_set_vui_timing_info(void *instance,
+	enum msm_vidc_inst_capability_type cap_id);
 
 
 #endif
 #endif

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

@@ -538,6 +538,7 @@ enum msm_vidc_inst_capability_type {
 	INPUT_BUF_HOST_MAX_COUNT,
 	INPUT_BUF_HOST_MAX_COUNT,
 	OUTPUT_BUF_HOST_MAX_COUNT,
 	OUTPUT_BUF_HOST_MAX_COUNT,
 	DELIVERY_MODE,
 	DELIVERY_MODE,
+	VUI_TIMING_INFO,
 	/* place all leaf(no child) enums before this line */
 	/* place all leaf(no child) enums before this line */
 	INST_CAP_MAX,
 	INST_CAP_MAX,
 };
 };

+ 30 - 0
driver/vidc/src/msm_vidc_control.c

@@ -4511,3 +4511,33 @@ int msm_vidc_set_pipe(void *instance,
 
 
 	return rc;
 	return rc;
 }
 }
+
+int msm_vidc_set_vui_timing_info(void *instance,
+	enum msm_vidc_inst_capability_type cap_id)
+{
+	int rc = 0;
+	struct msm_vidc_inst *inst = (struct msm_vidc_inst *)instance;
+	u32 hfi_value;
+
+	if (!inst || !inst->capabilities) {
+		d_vpr_e("%s: invalid params\n", __func__);
+		return -EINVAL;
+	}
+
+	/*
+	 * hfi is HFI_PROP_DISABLE_VUI_TIMING_INFO and v4l2 cap is
+	 * V4L2_CID_MPEG_VIDC_VUI_TIMING_INFO and hence reverse
+	 * the hfi_value from cap_id value.
+	 */
+	if (inst->capabilities->cap[cap_id].value == V4L2_MPEG_MSM_VIDC_ENABLE)
+		hfi_value = 0;
+	else
+		hfi_value = 1;
+
+	rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
+		&hfi_value, sizeof(u32), __func__);
+	if (rc)
+		return rc;
+
+	return rc;
+}

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

@@ -228,6 +228,7 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
 	{INPUT_BUF_HOST_MAX_COUNT,       "INPUT_BUF_HOST_MAX_COUNT"   },
 	{INPUT_BUF_HOST_MAX_COUNT,       "INPUT_BUF_HOST_MAX_COUNT"   },
 	{OUTPUT_BUF_HOST_MAX_COUNT,      "OUTPUT_BUF_HOST_MAX_COUNT"  },
 	{OUTPUT_BUF_HOST_MAX_COUNT,      "OUTPUT_BUF_HOST_MAX_COUNT"  },
 	{DELIVERY_MODE,                  "DELIVERY_MODE"              },
 	{DELIVERY_MODE,                  "DELIVERY_MODE"              },
+	{VUI_TIMING_INFO,                "VUI_TIMING_INFO"            },
 	{INST_CAP_MAX,                   "INST_CAP_MAX"               },
 	{INST_CAP_MAX,                   "INST_CAP_MAX"               },
 };
 };
 
 

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

@@ -271,6 +271,9 @@ enum v4l2_h264_encode_delivery_mode {
 #define V4L2_CID_MPEG_VIDC_LAST_FLAG_EVENT_ENABLE                             \
 #define V4L2_CID_MPEG_VIDC_LAST_FLAG_EVENT_ENABLE                             \
 	(V4L2_CID_MPEG_VIDC_BASE + 0x42)
 	(V4L2_CID_MPEG_VIDC_BASE + 0x42)
 
 
+#define V4L2_CID_MPEG_VIDC_VUI_TIMING_INFO                                    \
+	(V4L2_CID_MPEG_VIDC_BASE + 0x43)
+
 /* add new controls above this line */
 /* add new controls above this line */
 /* Deprecate below controls once availble in gki and gsi bionic header */
 /* Deprecate below controls once availble in gki and gsi bionic header */
 #ifndef V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID
 #ifndef V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID