Merge "msm: vidc: Add control to set csc coefficients to firmware"
This commit is contained in:
commit
dcb32ab988
|
@ -636,6 +636,19 @@ static int get_hfi_extradata_index(enum hal_extradata_id index)
|
|||
case HAL_EXTRADATA_METADATA_MBI:
|
||||
ret = HFI_PROPERTY_PARAM_VENC_MBI_DUMPING;
|
||||
break;
|
||||
case HAL_EXTRADATA_MASTERING_DISPLAY_COLOUR_SEI:
|
||||
ret =
|
||||
HFI_PROPERTY_PARAM_VDEC_MASTERING_DISPLAY_COLOUR_SEI_EXTRADATA;
|
||||
break;
|
||||
case HAL_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI:
|
||||
ret = HFI_PROPERTY_PARAM_VDEC_CONTENT_LIGHT_LEVEL_SEI_EXTRADATA;
|
||||
break;
|
||||
case HAL_EXTRADATA_VUI_DISPLAY_INFO:
|
||||
ret = HFI_PROPERTY_PARAM_VUI_DISPLAY_INFO_EXTRADATA;
|
||||
break;
|
||||
case HAL_EXTRADATA_VPX_COLORSPACE:
|
||||
ret = HFI_PROPERTY_PARAM_VDEC_VPX_COLORSPACE_EXTRADATA;
|
||||
break;
|
||||
default:
|
||||
dprintk(VIDC_WARN, "Extradata index not found: %d\n", index);
|
||||
break;
|
||||
|
@ -2025,7 +2038,26 @@ int create_pkt_cmd_session_set_property(
|
|||
pkt->size += sizeof(u32) + sizeof(struct hfi_enable);
|
||||
break;
|
||||
}
|
||||
case HAL_PARAM_VENC_VIDEO_SIGNAL_INFO:
|
||||
{
|
||||
struct hal_video_signal_info *hal = pdata;
|
||||
struct hfi_video_signal_metadata *signal_info =
|
||||
(struct hfi_video_signal_metadata *)
|
||||
&pkt->rg_property_data[1];
|
||||
|
||||
signal_info->enable = true;
|
||||
signal_info->video_format = MSM_VIDC_NTSC;
|
||||
signal_info->video_full_range = hal->full_range;
|
||||
signal_info->color_description = MSM_VIDC_COLOR_DESC_PRESENT;
|
||||
signal_info->color_primaries = hal->color_space;
|
||||
signal_info->transfer_characteristics = hal->transfer_chars;
|
||||
signal_info->matrix_coeffs = hal->matrix_coeffs;
|
||||
|
||||
pkt->rg_property_data[0] =
|
||||
HFI_PROPERTY_PARAM_VENC_VIDEO_SIGNAL_INFO;
|
||||
pkt->size += sizeof(u32) + sizeof(*signal_info);
|
||||
break;
|
||||
}
|
||||
/* FOLLOWING PROPERTIES ARE NOT IMPLEMENTED IN CORE YET */
|
||||
case HAL_CONFIG_BUFFER_REQUIREMENTS:
|
||||
case HAL_CONFIG_PRIORITY:
|
||||
|
|
|
@ -51,27 +51,6 @@ static const char *const mpeg_video_output_order[] = {
|
|||
"Decode Order",
|
||||
NULL
|
||||
};
|
||||
static const char *const mpeg_video_vidc_extradata[] = {
|
||||
"Extradata none",
|
||||
"Extradata MB Quantization",
|
||||
"Extradata Interlace Video",
|
||||
"Extradata VC1 Framedisp",
|
||||
"Extradata VC1 Seqdisp",
|
||||
"Extradata timestamp",
|
||||
"Extradata S3D Frame Packing",
|
||||
"Extradata Frame Rate",
|
||||
"Extradata Panscan Window",
|
||||
"Extradata Recovery point SEI",
|
||||
"Extradata Closed Caption UD",
|
||||
"Extradata AFD UD",
|
||||
"Extradata Multislice info",
|
||||
"Extradata number of concealed MB",
|
||||
"Extradata metadata filler",
|
||||
"Extradata input crop",
|
||||
"Extradata digital zoom",
|
||||
"Extradata aspect ratio",
|
||||
"Extradata mpeg2 seqdisp",
|
||||
};
|
||||
static const char *const mpeg_vidc_video_alloc_mode_type[] = {
|
||||
"Buffer Allocation Static",
|
||||
"Buffer Allocation Ring Buffer",
|
||||
|
@ -263,7 +242,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_FRAME_BITS_INFO,
|
||||
.maximum = V4L2_MPEG_VIDC_EXTRADATA_VPX_COLORSPACE,
|
||||
.default_value = V4L2_MPEG_VIDC_EXTRADATA_NONE,
|
||||
.menu_skip_mask = ~(
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_NONE) |
|
||||
|
@ -285,7 +264,12 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = {
|
|||
(1 << V4L2_MPEG_VIDC_EXTRADATA_MPEG2_SEQDISP) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_QP) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_BITS_INFO)
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_BITS_INFO) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_DISPLAY_COLOUR_SEI) |
|
||||
(1 <<
|
||||
V4L2_MPEG_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_VPX_COLORSPACE)
|
||||
),
|
||||
.qmenu = mpeg_video_vidc_extradata,
|
||||
.step = 0,
|
||||
|
|
|
@ -154,29 +154,6 @@ static const char *const vp8_profile_level[] = {
|
|||
"2.0",
|
||||
"3.0",
|
||||
};
|
||||
|
||||
static const char *const mpeg_video_vidc_extradata[] = {
|
||||
"Extradata none",
|
||||
"Extradata MB Quantization",
|
||||
"Extradata Interlace Video",
|
||||
"Extradata VC1 Framedisp",
|
||||
"Extradata VC1 Seqdisp",
|
||||
"Extradata timestamp",
|
||||
"Extradata S3D Frame Packing",
|
||||
"Extradata Frame Rate",
|
||||
"Extradata Panscan Window",
|
||||
"Extradata Recovery point SEI",
|
||||
"Extradata Closed Caption UD",
|
||||
"Extradata AFD UD",
|
||||
"Extradata Multislice info",
|
||||
"Extradata number of concealed MB",
|
||||
"Extradata metadata filler",
|
||||
"Extradata input crop",
|
||||
"Extradata digital zoom",
|
||||
"Extradata aspect ratio",
|
||||
"Extradata macroblock metadata",
|
||||
};
|
||||
|
||||
static const char *const perf_level[] = {
|
||||
"Nominal",
|
||||
"Performance",
|
||||
|
@ -1144,6 +1121,55 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
|
|||
.default_value = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE,
|
||||
.step = 1,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDC_VIDEO_COLOR_SPACE,
|
||||
.name = "Set Color space",
|
||||
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||
.minimum = MSM_VIDC_BT709_5,
|
||||
.maximum = MSM_VIDC_BT2020,
|
||||
.default_value = MSM_VIDC_BT601_6_625,
|
||||
.step = 1,
|
||||
.qmenu = NULL,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE,
|
||||
.name = "Set Color space range",
|
||||
.type = V4L2_CTRL_TYPE_BOOLEAN,
|
||||
.minimum = V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE_DISABLE,
|
||||
.maximum = V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE_ENABLE,
|
||||
.default_value = V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE_DISABLE,
|
||||
.step = 1,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDC_VIDEO_TRANSFER_CHARS,
|
||||
.name = "Set Color space transfer characterstics",
|
||||
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||
.minimum = MSM_VIDC_TRANSFER_BT709_5,
|
||||
.maximum = MSM_VIDC_TRANSFER_BT_2020_12,
|
||||
.default_value = MSM_VIDC_TRANSFER_601_6_625,
|
||||
.step = 1,
|
||||
.qmenu = NULL,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDC_VIDEO_MATRIX_COEFFS,
|
||||
.name = "Set Color space matrix coefficients",
|
||||
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||
.minimum = MSM_VIDC_MATRIX_BT_709_5,
|
||||
.maximum = MSM_VIDC_MATRIX_BT_2020_CONST,
|
||||
.default_value = MSM_VIDC_MATRIX_601_6_625,
|
||||
.step = 1,
|
||||
.qmenu = NULL,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC,
|
||||
.name = "Set VPE Color space conversion coefficients",
|
||||
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||
.minimum = V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_DISABLE,
|
||||
.maximum = V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_ENABLE,
|
||||
.default_value = V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_DISABLE,
|
||||
.step = 1,
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
#define NUM_CTRLS ARRAY_SIZE(msm_venc_ctrls)
|
||||
|
@ -1232,6 +1258,8 @@ static struct msm_vidc_format venc_formats[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int msm_venc_set_csc(struct msm_vidc_inst *inst);
|
||||
|
||||
static int msm_venc_queue_setup(struct vb2_queue *q,
|
||||
const struct v4l2_format *fmt,
|
||||
unsigned int *num_buffers,
|
||||
|
@ -1946,6 +1974,7 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
|||
u32 hier_p_layers = 0, hier_b_layers = 0, mbi_statistics_mode = 0;
|
||||
struct hal_venc_perf_mode venc_mode;
|
||||
int max_hierp_layers;
|
||||
struct hal_video_signal_info signal_info = {0};
|
||||
|
||||
if (!inst || !inst->core || !inst->core->device) {
|
||||
dprintk(VIDC_ERR, "%s invalid parameters\n", __func__);
|
||||
|
@ -2870,6 +2899,71 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
|||
pdata = &enable;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_COLOR_SPACE:
|
||||
{
|
||||
signal_info.color_space = ctrl->val;
|
||||
temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE);
|
||||
signal_info.full_range = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl =
|
||||
TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_TRANSFER_CHARS);
|
||||
signal_info.transfer_chars = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl =
|
||||
TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_MATRIX_COEFFS);
|
||||
signal_info.matrix_coeffs = temp_ctrl ? temp_ctrl->val : 0;
|
||||
property_id = HAL_PARAM_VENC_VIDEO_SIGNAL_INFO;
|
||||
pdata = &signal_info;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE:
|
||||
{
|
||||
signal_info.full_range = ctrl->val;
|
||||
temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_COLOR_SPACE);
|
||||
signal_info.color_space = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl =
|
||||
TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_TRANSFER_CHARS);
|
||||
signal_info.transfer_chars = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl =
|
||||
TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_MATRIX_COEFFS);
|
||||
signal_info.matrix_coeffs = temp_ctrl ? temp_ctrl->val : 0;
|
||||
property_id = HAL_PARAM_VENC_VIDEO_SIGNAL_INFO;
|
||||
pdata = &signal_info;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_TRANSFER_CHARS:
|
||||
{
|
||||
signal_info.transfer_chars = ctrl->val;
|
||||
temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE);
|
||||
signal_info.full_range = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_COLOR_SPACE);
|
||||
signal_info.color_space = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl =
|
||||
TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_MATRIX_COEFFS);
|
||||
signal_info.matrix_coeffs = temp_ctrl ? temp_ctrl->val : 0;
|
||||
property_id = HAL_PARAM_VENC_VIDEO_SIGNAL_INFO;
|
||||
pdata = &signal_info;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_MATRIX_COEFFS:
|
||||
{
|
||||
signal_info.matrix_coeffs = ctrl->val;
|
||||
temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE);
|
||||
signal_info.full_range = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl =
|
||||
TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_TRANSFER_CHARS);
|
||||
signal_info.transfer_chars = temp_ctrl ? temp_ctrl->val : 0;
|
||||
temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_COLOR_SPACE);
|
||||
signal_info.color_space = temp_ctrl ? temp_ctrl->val : 0;
|
||||
property_id = HAL_PARAM_VENC_VIDEO_SIGNAL_INFO;
|
||||
pdata = &signal_info;
|
||||
break;
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC:
|
||||
if (ctrl->val == V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_ENABLE) {
|
||||
rc = msm_venc_set_csc(inst);
|
||||
if (rc)
|
||||
dprintk(VIDC_ERR, "fail to set csc: %d\n", rc);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
dprintk(VIDC_ERR, "Unsupported index: %x\n", ctrl->id);
|
||||
rc = -ENOTSUPP;
|
||||
|
@ -3295,7 +3389,7 @@ exit:
|
|||
return rc;
|
||||
}
|
||||
|
||||
int msm_venc_set_csc(struct msm_vidc_inst *inst)
|
||||
static int msm_venc_set_csc(struct msm_vidc_inst *inst)
|
||||
{
|
||||
int rc = 0;
|
||||
int count = 0;
|
||||
|
@ -3339,10 +3433,6 @@ int msm_venc_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
|
|||
}
|
||||
hdev = inst->core->device;
|
||||
|
||||
if (msm_vidc_vpe_csc_601_to_709) {
|
||||
msm_venc_set_csc(inst);
|
||||
}
|
||||
|
||||
if (f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
|
||||
fmt = msm_comm_get_pixel_fmt_fourcc(venc_formats,
|
||||
ARRAY_SIZE(venc_formats), f->fmt.pix_mp.pixelformat,
|
||||
|
|
|
@ -52,6 +52,39 @@
|
|||
#define IS_SYS_CMD_VALID(cmd) (((cmd) >= SYS_MSG_START) && \
|
||||
((cmd) <= SYS_MSG_END))
|
||||
|
||||
const char *const mpeg_video_vidc_extradata[] = {
|
||||
"Extradata none",
|
||||
"Extradata MB Quantization",
|
||||
"Extradata Interlace Video",
|
||||
"Extradata VC1 Framedisp",
|
||||
"Extradata VC1 Seqdisp",
|
||||
"Extradata timestamp",
|
||||
"Extradata S3D Frame Packing",
|
||||
"Extradata Frame Rate",
|
||||
"Extradata Panscan Window",
|
||||
"Extradata Recovery point SEI",
|
||||
"Extradata Multislice info",
|
||||
"Extradata number of concealed MB",
|
||||
"Extradata metadata filler",
|
||||
"Extradata input crop",
|
||||
"Extradata digital zoom",
|
||||
"Extradata aspect ratio",
|
||||
"Extradata mpeg2 seqdisp",
|
||||
"Extradata stream userdata",
|
||||
"Extradata frame QP",
|
||||
"Extradata frame bits info",
|
||||
"Extradata LTR",
|
||||
"Extradata macroblock metadata",
|
||||
"Extradata VQZip SEI",
|
||||
"Extradata YUV Stats",
|
||||
"Extradata ROI QP",
|
||||
"Extradata output crop",
|
||||
"Extradata display colour SEI",
|
||||
"Extradata light level SEI",
|
||||
"Extradata display VUI",
|
||||
"Extradata vpx color space",
|
||||
};
|
||||
|
||||
struct getprop_buf {
|
||||
struct list_head list;
|
||||
void *data;
|
||||
|
@ -96,7 +129,6 @@ int msm_comm_g_ctrl(struct msm_vidc_inst *inst, int id)
|
|||
rc = v4l2_g_ctrl(&inst->ctrl_handler, &ctrl);
|
||||
return rc ?: ctrl.value;
|
||||
}
|
||||
|
||||
enum multi_stream msm_comm_get_stream_output_mode(struct msm_vidc_inst *inst)
|
||||
{
|
||||
if (inst->session_type == MSM_VIDC_DECODER) {
|
||||
|
@ -4088,6 +4120,18 @@ 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_DISPLAY_COLOUR_SEI:
|
||||
ret = HAL_EXTRADATA_MASTERING_DISPLAY_COLOUR_SEI;
|
||||
break;
|
||||
case V4L2_MPEG_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI:
|
||||
ret = HAL_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI;
|
||||
break;
|
||||
case V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY:
|
||||
ret = HAL_EXTRADATA_VUI_DISPLAY_INFO;
|
||||
break;
|
||||
case V4L2_MPEG_VIDC_EXTRADATA_VPX_COLORSPACE:
|
||||
ret = HAL_EXTRADATA_VPX_COLORSPACE;
|
||||
break;
|
||||
default:
|
||||
dprintk(VIDC_WARN, "Extradata not found: %d\n", index);
|
||||
break;
|
||||
|
|
|
@ -19,6 +19,8 @@ struct vb2_buf_entry {
|
|||
struct vb2_buffer *vb;
|
||||
};
|
||||
|
||||
extern const char *const mpeg_video_vidc_extradata[];
|
||||
|
||||
enum load_calc_quirks {
|
||||
LOAD_CALC_NO_QUIRKS = 0,
|
||||
LOAD_CALC_IGNORE_TURBO_LOAD = 1 << 0,
|
||||
|
|
|
@ -25,7 +25,6 @@ int msm_vidc_hw_rsp_timeout = 1000;
|
|||
u32 msm_fw_coverage = 0x0;
|
||||
int msm_vidc_reset_clock_control = 0x0;
|
||||
int msm_vidc_regulator_scaling = 0x0;
|
||||
int msm_vidc_vpe_csc_601_to_709 = 0x0;
|
||||
int msm_vidc_dec_dcvs_mode = 0x1;
|
||||
int msm_vidc_enc_dcvs_mode = 0x1;
|
||||
int msm_vidc_sys_idle_indicator = 0x0;
|
||||
|
@ -204,11 +203,6 @@ struct dentry *msm_vidc_debugfs_init_drv(void)
|
|||
"debugfs_create_file: regulator_scaling fail\n");
|
||||
goto failed_create_dir;
|
||||
}
|
||||
if (!debugfs_create_bool("enable_vpe_csc_601_709", S_IRUGO | S_IWUSR,
|
||||
dir, &msm_vidc_vpe_csc_601_to_709)) {
|
||||
dprintk(VIDC_ERR, "debugfs_create_file: fail\n");
|
||||
goto failed_create_dir;
|
||||
}
|
||||
if (!debugfs_create_bool("sys_idle_indicator", S_IRUGO | S_IWUSR,
|
||||
dir, &msm_vidc_sys_idle_indicator)) {
|
||||
dprintk(VIDC_ERR,
|
||||
|
|
|
@ -85,6 +85,7 @@
|
|||
#define HFI_EXTRADATA_STREAM_USERDATA 0x0000000E
|
||||
#define HFI_EXTRADATA_FRAME_QP 0x0000000F
|
||||
#define HFI_EXTRADATA_FRAME_BITS_INFO 0x00000010
|
||||
#define HFI_EXTRADATA_VPX_COLORSPACE 0x00000014
|
||||
#define HFI_EXTRADATA_MULTISLICE_INFO 0x7F100000
|
||||
#define HFI_EXTRADATA_NUM_CONCEALED_MB 0x7F100001
|
||||
#define HFI_EXTRADATA_INDEX 0x7F100002
|
||||
|
@ -212,6 +213,14 @@ struct hfi_extradata_header {
|
|||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x019)
|
||||
#define HFI_PROPERTY_PARAM_VDEC_SCS_THRESHOLD \
|
||||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x01A)
|
||||
#define HFI_PROPERTY_PARAM_VUI_DISPLAY_INFO_EXTRADATA \
|
||||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x01B)
|
||||
#define HFI_PROPERTY_PARAM_VDEC_VPX_COLORSPACE_EXTRADATA \
|
||||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001D)
|
||||
#define HFI_PROPERTY_PARAM_VDEC_MASTERING_DISPLAY_COLOUR_SEI_EXTRADATA \
|
||||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001E)
|
||||
#define HFI_PROPERTY_PARAM_VDEC_CONTENT_LIGHT_LEVEL_SEI_EXTRADATA \
|
||||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001F)
|
||||
|
||||
#define HFI_PROPERTY_CONFIG_VDEC_OX_START \
|
||||
(HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x0000)
|
||||
|
|
|
@ -117,6 +117,10 @@ enum hal_extradata_id {
|
|||
HAL_EXTRADATA_DIGITAL_ZOOM,
|
||||
HAL_EXTRADATA_LTR_INFO,
|
||||
HAL_EXTRADATA_METADATA_MBI,
|
||||
HAL_EXTRADATA_MASTERING_DISPLAY_COLOUR_SEI,
|
||||
HAL_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI,
|
||||
HAL_EXTRADATA_VUI_DISPLAY_INFO,
|
||||
HAL_EXTRADATA_VPX_COLORSPACE,
|
||||
};
|
||||
|
||||
enum hal_property {
|
||||
|
@ -220,6 +224,7 @@ enum hal_property {
|
|||
HAL_PARAM_VENC_HIER_P_HYBRID_MODE,
|
||||
HAL_PARAM_VENC_MBI_STATISTICS_MODE,
|
||||
HAL_PARAM_VENC_BITRATE_TYPE,
|
||||
HAL_PARAM_VENC_VIDEO_SIGNAL_INFO,
|
||||
};
|
||||
|
||||
enum hal_domain {
|
||||
|
@ -959,6 +964,13 @@ struct hal_vpe_color_space_conversion {
|
|||
u32 csc_limit[HAL_MAX_LIMIT_COEFFS];
|
||||
};
|
||||
|
||||
struct hal_video_signal_info {
|
||||
u32 color_space;
|
||||
u32 transfer_chars;
|
||||
u32 matrix_coeffs;
|
||||
bool full_range;
|
||||
};
|
||||
|
||||
enum vidc_resource_id {
|
||||
VIDC_RESOURCE_OCMEM = 0x00000001,
|
||||
VIDC_UNUSED_RESORUCE = 0x10000000,
|
||||
|
|
|
@ -339,7 +339,7 @@ struct hfi_buffer_info {
|
|||
(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x01B)
|
||||
#define HFI_PROPERTY_PARAM_VENC_LTRMODE \
|
||||
(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x01C)
|
||||
#define HFI_PROPERTY_PARAM_VENC_VIDEO_FULL_RANGE \
|
||||
#define HFI_PROPERTY_PARAM_VENC_VIDEO_SIGNAL_INFO \
|
||||
(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x01D)
|
||||
#define HFI_PROPERTY_PARAM_VENC_H264_VUI_TIMING_INFO \
|
||||
(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x01E)
|
||||
|
@ -644,6 +644,16 @@ struct hfi_frame_size {
|
|||
u32 height;
|
||||
};
|
||||
|
||||
struct hfi_video_signal_metadata {
|
||||
u32 enable;
|
||||
u32 video_format;
|
||||
u32 video_full_range;
|
||||
u32 color_description;
|
||||
u32 color_primaries;
|
||||
u32 transfer_characteristics;
|
||||
u32 matrix_coeffs;
|
||||
};
|
||||
|
||||
struct hfi_h264_vui_timing_info {
|
||||
u32 enable;
|
||||
u32 fixed_frame_rate;
|
||||
|
|
|
@ -739,6 +739,18 @@ enum v4l2_mpeg_vidc_extradata {
|
|||
V4L2_MPEG_VIDC_EXTRADATA_FRAME_BITS_INFO = 19,
|
||||
V4L2_MPEG_VIDC_EXTRADATA_LTR = 20,
|
||||
V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI = 21,
|
||||
#define V4L2_MPEG_VIDC_EXTRADATA_DISPLAY_COLOUR_SEI \
|
||||
V4L2_MPEG_VIDC_EXTRADATA_DISPLAY_COLOUR_SEI
|
||||
V4L2_MPEG_VIDC_EXTRADATA_DISPLAY_COLOUR_SEI = 26,
|
||||
#define V4L2_MPEG_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI \
|
||||
V4L2_MPEG_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI
|
||||
V4L2_MPEG_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI = 27,
|
||||
#define V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY \
|
||||
V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY
|
||||
V4L2_MPEG_VIDC_EXTRADATA_VUI_DISPLAY = 28,
|
||||
#define V4L2_MPEG_VIDC_EXTRADATA_VPX_COLORSPACE \
|
||||
V4L2_MPEG_VIDC_EXTRADATA_VPX_COLORSPACE
|
||||
V4L2_MPEG_VIDC_EXTRADATA_VPX_COLORSPACE = 29,
|
||||
};
|
||||
|
||||
#define V4L2_CID_MPEG_VIDC_SET_PERF_LEVEL (V4L2_CID_MPEG_MSM_VIDC_BASE + 26)
|
||||
|
@ -1034,6 +1046,31 @@ enum v4l2_mpeg_vidc_video_venc_bitrate_type_enable {
|
|||
V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE = 1
|
||||
};
|
||||
|
||||
#define V4L2_CID_MPEG_VIDC_VIDEO_COLOR_SPACE \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 80)
|
||||
|
||||
#define V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 81)
|
||||
|
||||
enum v4l2_cid_mpeg_vidc_video_full_range {
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE_DISABLE = 0,
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_FULL_RANGE_ENABLE = 1,
|
||||
};
|
||||
|
||||
#define V4L2_CID_MPEG_VIDC_VIDEO_TRANSFER_CHARS \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 82)
|
||||
|
||||
#define V4L2_CID_MPEG_VIDC_VIDEO_MATRIX_COEFFS \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 83)
|
||||
|
||||
#define V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE + 87)
|
||||
|
||||
enum v4l2_cid_mpeg_vidc_video_vpe_csc_type_enable {
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_DISABLE = 0,
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_ENABLE = 1
|
||||
};
|
||||
|
||||
/* Camera class control IDs */
|
||||
|
||||
#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
|
||||
|
|
|
@ -43,6 +43,19 @@ struct msm_vidc_mpeg2_seqdisp_payload {
|
|||
unsigned int disp_width;
|
||||
unsigned int disp_height;
|
||||
};
|
||||
|
||||
struct msm_vidc_vc1_seqdisp_payload {
|
||||
unsigned int prog_seg_format;
|
||||
unsigned int uv_sampl_fmt;
|
||||
unsigned int color_format;
|
||||
unsigned int color_primaries;
|
||||
unsigned int transfer_char;
|
||||
unsigned int matrix_coeffs;
|
||||
unsigned int aspect_ratio;
|
||||
unsigned int aspect_horiz;
|
||||
unsigned int aspect_vert;
|
||||
};
|
||||
|
||||
struct msm_vidc_input_crop_payload {
|
||||
unsigned int size;
|
||||
unsigned int version;
|
||||
|
@ -109,6 +122,44 @@ struct msm_vidc_s3d_frame_packing_payload {
|
|||
unsigned int fpa_extension_flag;
|
||||
};
|
||||
|
||||
struct msm_vidc_vpx_colorspace_payload {
|
||||
unsigned int color_space;
|
||||
unsigned int yuv_range_flag;
|
||||
unsigned int sumsampling_x;
|
||||
unsigned int sumsampling_y;
|
||||
};
|
||||
|
||||
struct msm_vidc_mastering_display_colour_sei_payload {
|
||||
unsigned int nDisplayPrimariesX[3];
|
||||
unsigned int nDisplayPrimariesY[3];
|
||||
unsigned int nWhitePointX;
|
||||
unsigned int nWhitePointY;
|
||||
unsigned int nMaxDisplayMasteringLuminance;
|
||||
unsigned int nMinDisplayMasteringLuminance;
|
||||
};
|
||||
|
||||
struct msm_vidc_content_light_level_sei_payload {
|
||||
unsigned int nMaxContentLight;
|
||||
unsigned int nMaxPicAverageLight;
|
||||
};
|
||||
|
||||
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 {
|
||||
MSM_VIDC_EXTRADATA_NONE = 0x00000000,
|
||||
MSM_VIDC_EXTRADATA_MB_QUANTIZATION = 0x00000001,
|
||||
|
@ -124,8 +175,17 @@ enum msm_vidc_extradata_type {
|
|||
MSM_VIDC_EXTRADATA_STREAM_USERDATA = 0x0000000E,
|
||||
MSM_VIDC_EXTRADATA_FRAME_QP = 0x0000000F,
|
||||
MSM_VIDC_EXTRADATA_FRAME_BITS_INFO = 0x00000010,
|
||||
#define MSM_VIDC_EXTRADATA_MASTERING_DISPLAY_COLOUR_SEI \
|
||||
MSM_VIDC_EXTRADATA_MASTERING_DISPLAY_COLOUR_SEI
|
||||
MSM_VIDC_EXTRADATA_MASTERING_DISPLAY_COLOUR_SEI = 0x00000015,
|
||||
#define MSM_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI \
|
||||
MSM_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI
|
||||
MSM_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI = 0x00000016,
|
||||
MSM_VIDC_EXTRADATA_INPUT_CROP = 0x0700000E,
|
||||
MSM_VIDC_EXTRADATA_DIGITAL_ZOOM = 0x07000010,
|
||||
#define MSM_VIDC_EXTRADATA_VPX_COLORSPACE_INFO \
|
||||
MSM_VIDC_EXTRADATA_VPX_COLORSPACE_INFO
|
||||
MSM_VIDC_EXTRADATA_VPX_COLORSPACE_INFO = 0x070000011,
|
||||
MSM_VIDC_EXTRADATA_MULTISLICE_INFO = 0x7F100000,
|
||||
MSM_VIDC_EXTRADATA_NUM_CONCEALED_MB = 0x7F100001,
|
||||
MSM_VIDC_EXTRADATA_INDEX = 0x7F100002,
|
||||
|
@ -133,6 +193,9 @@ enum msm_vidc_extradata_type {
|
|||
MSM_VIDC_EXTRADATA_METADATA_LTR = 0x7F100004,
|
||||
MSM_VIDC_EXTRADATA_METADATA_FILLER = 0x7FE00002,
|
||||
MSM_VIDC_EXTRADATA_METADATA_MBI = 0x7F100005,
|
||||
#define MSM_VIDC_EXTRADATA_VUI_DISPLAY_INFO \
|
||||
MSM_VIDC_EXTRADATA_VUI_DISPLAY_INFO
|
||||
MSM_VIDC_EXTRADATA_VUI_DISPLAY_INFO = 0x7F100006,
|
||||
};
|
||||
enum msm_vidc_interlace_type {
|
||||
MSM_VIDC_INTERLACE_FRAME_PROGRESSIVE = 0x01,
|
||||
|
@ -159,4 +222,79 @@ enum msm_vidc_userdata_type {
|
|||
MSM_VIDC_USERDATA_TYPE_TOP_FIELD = 0x2,
|
||||
MSM_VIDC_USERDATA_TYPE_BOTTOM_FIELD = 0x3,
|
||||
};
|
||||
/* See colour_primaries of ISO/IEC 14496 for significance */
|
||||
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,
|
||||
};
|
||||
enum msm_vidc_video_format {
|
||||
MSM_VIDC_COMPONENT,
|
||||
MSM_VIDC_PAL,
|
||||
MSM_VIDC_NTSC,
|
||||
MSM_VIDC_SECAM,
|
||||
MSM_VIDC_MAC,
|
||||
MSM_VIDC_UNSPECIFIED_FORMAT,
|
||||
MSM_VIDC_RESERVED_1_FORMAT,
|
||||
MSM_VIDC_RESERVED_2_FORMAT,
|
||||
};
|
||||
enum msm_vidc_color_desc_flag {
|
||||
MSM_VIDC_COLOR_DESC_NOT_PRESENT,
|
||||
MSM_VIDC_COLOR_DESC_PRESENT,
|
||||
};
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue