msm: vidc: Add SEI extradata
The change extend the support in video driver to enable few SEI extradata. Also update the extradata menu V4L2 control with all the available list of extradata. CRs-Fixed: 1007521 Change-Id: I6d060afb48aca34c2bb54221c5babc0ac55aff7c Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
This commit is contained in:
parent
8f0763f7c7
commit
5c0174be77
9 changed files with 84 additions and 51 deletions
|
@ -665,6 +665,13 @@ static int get_hfi_extradata_index(enum hal_extradata_id index)
|
|||
case HAL_EXTRADATA_ROI_QP:
|
||||
ret = HFI_PROPERTY_PARAM_VENC_ROI_QP_EXTRADATA;
|
||||
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;
|
||||
default:
|
||||
dprintk(VIDC_WARN, "Extradata index not found: %d\n", index);
|
||||
break;
|
||||
|
|
|
@ -49,32 +49,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",
|
||||
"Extradata stream userdata",
|
||||
"Extradata frame QP",
|
||||
"Extradata frame bits info",
|
||||
"Extradata VQZip SEI",
|
||||
"Extradata output crop",
|
||||
};
|
||||
static const char *const mpeg_vidc_video_alloc_mode_type[] = {
|
||||
"Buffer Allocation Static",
|
||||
"Buffer Allocation Ring Buffer",
|
||||
|
@ -273,7 +247,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_OUTPUT_CROP,
|
||||
.maximum = V4L2_MPEG_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI,
|
||||
.default_value = V4L2_MPEG_VIDC_EXTRADATA_NONE,
|
||||
.menu_skip_mask = ~(
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_NONE) |
|
||||
|
@ -297,7 +271,9 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = {
|
|||
(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_QP) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_BITS_INFO) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_VQZIP_SEI) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP)
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_DISPLAY_COLOUR_SEI) |
|
||||
(1 << V4L2_MPEG_VIDC_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI)
|
||||
),
|
||||
.qmenu = mpeg_video_vidc_extradata,
|
||||
},
|
||||
|
|
|
@ -157,29 +157,6 @@ static const char *const vp8_profile_level[] = {
|
|||
"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",
|
||||
"Extradata YUV Stats"
|
||||
};
|
||||
|
||||
static const char *const perf_level[] = {
|
||||
"Nominal",
|
||||
"Performance",
|
||||
|
|
|
@ -47,6 +47,37 @@
|
|||
|
||||
#define MAX_SUPPORTED_INSTANCES 16
|
||||
|
||||
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",
|
||||
};
|
||||
|
||||
struct getprop_buf {
|
||||
struct list_head list;
|
||||
void *data;
|
||||
|
@ -4652,6 +4683,12 @@ enum hal_extradata_id msm_comm_get_hal_extradata_index(
|
|||
case V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP:
|
||||
ret = HAL_EXTRADATA_OUTPUT_CROP;
|
||||
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;
|
||||
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,
|
||||
|
|
|
@ -219,6 +219,12 @@ struct hfi_extradata_header {
|
|||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x01B)
|
||||
#define HFI_PROPERTY_PARAM_VDEC_VQZIP_SEI_EXTRADATA \
|
||||
(HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001C)
|
||||
#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 + 0x4000)
|
||||
|
|
|
@ -122,6 +122,8 @@ enum hal_extradata_id {
|
|||
HAL_EXTRADATA_YUV_STATS,
|
||||
HAL_EXTRADATA_ROI_QP,
|
||||
HAL_EXTRADATA_OUTPUT_CROP,
|
||||
HAL_EXTRADATA_MASTERING_DISPLAY_COLOUR_SEI,
|
||||
HAL_EXTRADATA_CONTENT_LIGHT_LEVEL_SEI,
|
||||
};
|
||||
|
||||
enum hal_property {
|
||||
|
|
|
@ -800,6 +800,12 @@ enum v4l2_mpeg_vidc_extradata {
|
|||
#define V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP \
|
||||
V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP
|
||||
V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP = 25,
|
||||
#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_CID_MPEG_VIDC_SET_PERF_LEVEL (V4L2_CID_MPEG_MSM_VIDC_BASE + 26)
|
||||
|
|
|
@ -162,6 +162,20 @@ struct msm_vidc_roi_qp_payload {
|
|||
unsigned int data[1];
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
enum msm_vidc_extradata_type {
|
||||
MSM_VIDC_EXTRADATA_NONE = 0x00000000,
|
||||
MSM_VIDC_EXTRADATA_MB_QUANTIZATION = 0x00000001,
|
||||
|
@ -179,6 +193,12 @@ enum msm_vidc_extradata_type {
|
|||
MSM_VIDC_EXTRADATA_FRAME_BITS_INFO = 0x00000010,
|
||||
MSM_VIDC_EXTRADATA_VQZIP_SEI = 0x00000011,
|
||||
MSM_VIDC_EXTRADATA_ROI_QP = 0x00000013,
|
||||
#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,
|
||||
#define MSM_VIDC_EXTRADATA_OUTPUT_CROP \
|
||||
MSM_VIDC_EXTRADATA_OUTPUT_CROP
|
||||
|
|
Loading…
Add table
Reference in a new issue