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 <quic_kmanikan@quicinc.com>
This commit is contained in:
Manikanta Kanamarlapudi
2022-07-08 12:45:24 +05:30
committed by Darshana Patil
parent 267e11c2a4
commit 2e52eecb78
7 changed files with 53 additions and 0 deletions

View File

@@ -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 */

View File

@@ -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

View File

@@ -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

View File

@@ -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,
}; };

View File

@@ -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;
}

View File

@@ -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" },
}; };

View File

@@ -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