msm: vidc: Add support for VUI_DISPLAY_INFO

This is needed to get color primaries, transfer and matrix values from
avc devoder.

Issue: FP2P-432
Issue: FP2P-435
Change-Id: Id1d375c9f6e1c05fc9b8336162bb11cc12d6dea2
This commit is contained in:
prakash
2021-10-10 23:46:47 +02:00
committed by Francescodario Cuzzocrea
parent 3ebffa120f
commit d5edb9b824
7 changed files with 95 additions and 3 deletions
@@ -369,6 +369,9 @@ static int get_hfi_extradata_index(enum hal_extradata_id index)
case HAL_EXTRADATA_STREAM_USERDATA:
ret = HFI_PROPERTY_PARAM_VDEC_STREAM_USERDATA_EXTRADATA;
break;
case HAL_EXTRADATA_VUI_DISPLAY_INFO:
ret = HFI_PROPERTY_PARAM_VUI_DISPLAY_INFO_EXTRADATA;
break;
default:
dprintk(VIDC_WARN, "Extradata index not found: %d\n", index);
break;
+4 -2
View File
@@ -73,6 +73,7 @@ static const char *const mpeg_video_vidc_extradata[] = {
"Extradata digital zoom",
"Extradata aspect ratio",
"Extradata mpeg2 seqdisp",
"Extradata display VUI",
};
static const char *const mpeg_vidc_video_alloc_mode_type[] = {
"Buffer Allocation Static",
@@ -212,7 +213,7 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = {
.name = "Extradata Type",
.type = V4L2_CTRL_TYPE_MENU,
.minimum = V4L2_MPEG_VIDC_EXTRADATA_NONE,
.maximum = V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA,
.maximum = V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY,
.default_value = V4L2_MPEG_VIDC_EXTRADATA_NONE,
.menu_skip_mask = ~(
(1 << V4L2_MPEG_VIDC_EXTRADATA_NONE) |
@@ -234,7 +235,8 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = {
(1 << V4L2_MPEG_VIDC_EXTRADATA_MPEG2_SEQDISP) |
(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_QP) |
(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_BITS_INFO) |
(1 << V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA)
(1 << V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA) |
(1 << V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY)
),
.qmenu = mpeg_video_vidc_extradata,
.step = 0,
@@ -3292,6 +3292,9 @@ enum hal_extradata_id msm_comm_get_hal_extradata_index(
case V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI:
ret = HAL_EXTRADATA_METADATA_MBI;
break;
case V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY:
ret = HAL_EXTRADATA_VUI_DISPLAY_INFO;
break;
case V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA:
ret = HAL_EXTRADATA_STREAM_USERDATA;
break;
@@ -207,6 +207,8 @@ struct hfi_extradata_header {
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x018)
#define HFI_PROPERTY_PARAM_VDEC_FRAME_BITS_INFO_EXTRADATA \
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x019)
#define HFI_PROPERTY_PARAM_VUI_DISPLAY_INFO_EXTRADATA \
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x01B)
#define HFI_PROPERTY_CONFIG_VDEC_OX_START \
(HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x0000)
@@ -100,11 +100,12 @@ enum hal_extradata_id {
HAL_EXTRADATA_METADATA_FILLER,
HAL_EXTRADATA_ASPECT_RATIO,
HAL_EXTRADATA_MPEG2_SEQDISP,
HAL_EXTRADATA_STREAM_USERDATA,
HAL_EXTRADATA_FRAME_QP,
HAL_EXTRADATA_FRAME_BITS_INFO,
HAL_EXTRADATA_LTR_INFO,
HAL_EXTRADATA_METADATA_MBI,
HAL_EXTRADATA_STREAM_USERDATA,
HAL_EXTRADATA_VUI_DISPLAY_INFO,
};
enum hal_property {
+1
View File
@@ -1849,6 +1849,7 @@ enum v4l2_mpeg_vidc_extradata {
V4L2_MPEG_VIDC_EXTRADATA_LTR = 21,
V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI = 22,
V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA = 23,
V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY = 24,
};
#define V4L2_CID_MPEG_VIDC_SET_PERF_LEVEL (V4L2_CID_MPEG_MSM_VIDC_BASE + 26)
+80
View File
@@ -185,6 +185,24 @@ struct msm_vidc_stream_userdata_payload {
unsigned int data[1];
};
struct msm_vidc_vui_display_info_payload {
unsigned int video_signal_present_flag;
unsigned int video_format;
unsigned int bit_depth_y;
unsigned int bit_depth_c;
unsigned int video_full_range_flag;
unsigned int color_description_present_flag;
unsigned int color_primaries;
unsigned int transfer_characteristics;
unsigned int matrix_coefficients;
unsigned int chroma_location_info_present_flag;
unsigned int chroma_format_idc;
unsigned int separate_color_plane_flag;
unsigned int chroma_sample_loc_type_top_field;
unsigned int chroma_sample_loc_type_bottom_field;
};
enum msm_vidc_extradata_type {
EXTRADATA_NONE = 0x00000000,
EXTRADATA_MB_QUANTIZATION = 0x00000001,
@@ -207,6 +225,7 @@ enum msm_vidc_extradata_type {
EXTRADATA_METADATA_FILLER = 0x7FE00002,
MSM_VIDC_EXTRADATA_METADATA_LTR = 0x7F100004,
EXTRADATA_METADATA_MBI = 0x7F100005,
MSM_VIDC_EXTRADATA_VUI_DISPLAY_INFO = 0x7F100006,
};
enum msm_vidc_interlace_type {
INTERLACE_FRAME_PROGRESSIVE = 0x01,
@@ -226,4 +245,65 @@ enum msm_vidc_userdata_type {
MSM_VIDC_USERDATA_TYPE_TOP_FIELD = 0x2,
MSM_VIDC_USERDATA_TYPE_BOTTOM_FIELD = 0x3,
};
enum msm_vidc_h264_color_primaries_values {
MSM_VIDC_RESERVED_1 = 0,
MSM_VIDC_BT709_5 = 1,
MSM_VIDC_UNSPECIFIED = 2,
MSM_VIDC_RESERVED_2 = 3,
MSM_VIDC_BT470_6_M = 4,
MSM_VIDC_BT601_6_625 = 5,
MSM_VIDC_BT470_6_BG = MSM_VIDC_BT601_6_625,
MSM_VIDC_BT601_6_525 = 6,
MSM_VIDC_SMPTE_240M = 7,
MSM_VIDC_GENERIC_FILM = 8,
MSM_VIDC_BT2020 = 9,
};
enum msm_vidc_vp9_color_primaries_values {
MSM_VIDC_CS_UNKNOWN,
MSM_VIDC_CS_BT_601,
MSM_VIDC_CS_BT_709,
MSM_VIDC_CS_SMPTE_170,
MSM_VIDC_CS_SMPTE_240,
MSM_VIDC_CS_BT_2020,
MSM_VIDC_CS_RESERVED,
MSM_VIDC_CS_RGB,
};
enum msm_vidc_h264_matrix_coeff_values {
MSM_VIDC_MATRIX_RGB = 0,
MSM_VIDC_MATRIX_BT_709_5 = 1,
MSM_VIDC_MATRIX_UNSPECIFIED = 2,
MSM_VIDC_MATRIX_RESERVED = 3,
MSM_VIDC_MATRIX_FCC_47 = 4,
MSM_VIDC_MATRIX_601_6_625 = 5,
MSM_VIDC_MATRIX_BT470_BG = MSM_VIDC_MATRIX_601_6_625,
MSM_VIDC_MATRIX_601_6_525 = 6,
MSM_VIDC_MATRIX_SMPTE_170M = MSM_VIDC_MATRIX_601_6_525,
MSM_VIDC_MATRIX_SMPTE_240M = 7,
MSM_VIDC_MATRIX_Y_CG_CO = 8,
MSM_VIDC_MATRIX_BT_2020 = 9,
MSM_VIDC_MATRIX_BT_2020_CONST = 10,
};
enum msm_vidc_h264_transfer_chars_values {
MSM_VIDC_TRANSFER_RESERVED_1 = 0,
MSM_VIDC_TRANSFER_BT709_5 = 1,
MSM_VIDC_TRANSFER_UNSPECIFIED = 2,
MSM_VIDC_TRANSFER_RESERVED_2 = 3,
MSM_VIDC_TRANSFER_BT_470_6_M = 4,
MSM_VIDC_TRANSFER_BT_470_6_BG = 5,
MSM_VIDC_TRANSFER_601_6_625 = 6,
MSM_VIDC_TRANSFER_601_6_525 = MSM_VIDC_TRANSFER_601_6_625,
MSM_VIDC_TRANSFER_SMPTE_240M = 7,
MSM_VIDC_TRANSFER_LINEAR = 8,
MSM_VIDC_TRANSFER_LOG_100_1 = 9,
MSM_VIDC_TRANSFER_LOG_100_SQRT10_1 = 10,
MSM_VIDC_TRANSFER_IEC_61966 = 11,
MSM_VIDC_TRANSFER_BT_1361 = 12,
MSM_VIDC_TRANSFER_SRGB = 13,
MSM_VIDC_TRANSFER_BT_2020_10 = 14,
MSM_VIDC_TRANSFER_BT_2020_12 = 15,
};
#endif