video: driver: Enable bitwise operations for metadata controls
Enable bitwise operations for metadata controls with below mentioned bit definitions: - ENABLE (BIT 0): Enable metadata. - TX_INP (BIT 1): Client transfers metadata in input port. - TX_OUT (BIT 2): Client transfers metadata in output port. - RX_INP (BIT 3): Client receives metadata in input port. - RX_OUT (BIT 4): Client receives metadata in output port. Change-Id: Ie3d720528a383632c7766a5ccb09cead0f6b9428 Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
This commit is contained in:
@@ -279,13 +279,13 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
NULL, msm_vidc_set_u32},
|
NULL, msm_vidc_set_u32},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Client will enable V4L2_CID_MPEG_VIDC_INPUT_METADATA_OUTBUF_FENCE
|
* Client will enable V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE
|
||||||
* to get fence_id in input metadata buffer done.
|
* to get fence_id in input metadata buffer done.
|
||||||
*/
|
*/
|
||||||
{INPUT_META_OUTBUF_FENCE, DEC, CODECS_ALL,
|
{META_OUTBUF_FENCE, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_INPUT_METADATA_OUTBUF_FENCE,
|
V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE,
|
||||||
HFI_PROP_FENCE},
|
HFI_PROP_FENCE},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -372,12 +372,6 @@ static struct msm_platform_inst_capability instance_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},
|
||||||
|
|
||||||
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE,
|
|
||||||
V4L2_MPEG_MSM_VIDC_ENABLE,
|
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL},
|
|
||||||
|
|
||||||
{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,
|
||||||
@@ -1594,14 +1588,14 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
NULL, msm_vidc_set_u32},
|
NULL, msm_vidc_set_u32},
|
||||||
|
|
||||||
{META_BITSTREAM_RESOLUTION, DEC, AV1,
|
{META_BITSTREAM_RESOLUTION, DEC, AV1,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION,
|
V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION,
|
||||||
HFI_PROP_BITSTREAM_RESOLUTION},
|
HFI_PROP_BITSTREAM_RESOLUTION},
|
||||||
|
|
||||||
{META_CROP_OFFSETS, DEC, AV1,
|
{META_CROP_OFFSETS, DEC, AV1,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS,
|
V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS,
|
||||||
HFI_PROP_CROP_OFFSETS},
|
HFI_PROP_CROP_OFFSETS},
|
||||||
|
|
||||||
@@ -1633,74 +1627,74 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
NULL, NULL},
|
NULL, NULL},
|
||||||
|
|
||||||
{META_LTR_MARK_USE, ENC, H264|HEVC,
|
{META_LTR_MARK_USE, ENC, H264|HEVC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS,
|
V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS,
|
||||||
HFI_PROP_LTR_MARK_USE_DETAILS},
|
HFI_PROP_LTR_MARK_USE_DETAILS},
|
||||||
|
|
||||||
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL,
|
V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL,
|
||||||
HFI_PROP_METADATA_SEQ_HEADER_NAL},
|
HFI_PROP_METADATA_SEQ_HEADER_NAL},
|
||||||
|
|
||||||
{META_DPB_MISR, DEC, CODECS_ALL,
|
{META_DPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR,
|
V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR,
|
||||||
HFI_PROP_DPB_LUMA_CHROMA_MISR},
|
HFI_PROP_DPB_LUMA_CHROMA_MISR},
|
||||||
|
|
||||||
{META_OPB_MISR, DEC, CODECS_ALL,
|
{META_OPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR,
|
V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR,
|
||||||
HFI_PROP_OPB_LUMA_CHROMA_MISR},
|
HFI_PROP_OPB_LUMA_CHROMA_MISR},
|
||||||
|
|
||||||
{META_INTERLACE, DEC, H264,
|
{META_INTERLACE, DEC, H264,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_INTERLACE,
|
V4L2_CID_MPEG_VIDC_METADATA_INTERLACE,
|
||||||
HFI_PROP_INTERLACE_INFO},
|
HFI_PROP_INTERLACE_INFO},
|
||||||
|
|
||||||
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
||||||
HFI_PROP_TIMESTAMP},
|
HFI_PROP_TIMESTAMP},
|
||||||
|
|
||||||
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT,
|
V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT,
|
||||||
HFI_PROP_CONEALED_MB_COUNT},
|
HFI_PROP_CONEALED_MB_COUNT},
|
||||||
|
|
||||||
{META_HIST_INFO, DEC, CODECS_ALL,
|
{META_HIST_INFO, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO,
|
V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO,
|
||||||
HFI_PROP_HISTOGRAM_INFO},
|
HFI_PROP_HISTOGRAM_INFO},
|
||||||
|
|
||||||
{META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC|AV1,
|
{META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC|AV1,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR,
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR,
|
||||||
HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR},
|
HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR},
|
||||||
|
|
||||||
{META_SEI_CLL, DEC|ENC, HEVC|HEIC|AV1,
|
{META_SEI_CLL, DEC|ENC, HEVC|HEIC|AV1,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL,
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL,
|
||||||
HFI_PROP_SEI_CONTENT_LIGHT_LEVEL},
|
HFI_PROP_SEI_CONTENT_LIGHT_LEVEL},
|
||||||
|
|
||||||
{META_HDR10PLUS, DEC | ENC, HEVC|HEIC|AV1,
|
{META_HDR10PLUS, DEC | ENC, HEVC|HEIC|AV1,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS,
|
V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS,
|
||||||
HFI_PROP_SEI_HDR10PLUS_USERDATA},
|
HFI_PROP_SEI_HDR10PLUS_USERDATA},
|
||||||
|
|
||||||
{META_EVA_STATS, ENC, CODECS_ALL,
|
{META_EVA_STATS, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS,
|
V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS,
|
||||||
HFI_PROP_EVA_STAT_INFO,
|
HFI_PROP_EVA_STAT_INFO,
|
||||||
0,
|
0,
|
||||||
@@ -1708,38 +1702,38 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
{ENH_LAYER_COUNT}},
|
{ENH_LAYER_COUNT}},
|
||||||
|
|
||||||
{META_BUF_TAG, DEC | ENC, CODECS_ALL,
|
{META_BUF_TAG, DEC | ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG,
|
V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG,
|
||||||
HFI_PROP_BUFFER_TAG},
|
HFI_PROP_BUFFER_TAG},
|
||||||
|
|
||||||
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST,
|
V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST,
|
||||||
HFI_PROP_DPB_TAG_LIST},
|
HFI_PROP_DPB_TAG_LIST},
|
||||||
|
|
||||||
{META_OUTPUT_BUF_TAG, DEC, CODECS_ALL,
|
{META_OUTPUT_BUF_TAG, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
0,
|
0,
|
||||||
HFI_PROP_BUFFER_TAG},
|
HFI_PROP_BUFFER_TAG},
|
||||||
|
|
||||||
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
||||||
HFI_PROP_SUBFRAME_OUTPUT},
|
HFI_PROP_SUBFRAME_OUTPUT},
|
||||||
|
|
||||||
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA,
|
V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA,
|
||||||
HFI_PROP_ENC_QP_METADATA},
|
HFI_PROP_ENC_QP_METADATA},
|
||||||
|
|
||||||
{META_ROI_INFO, ENC, CODECS_ALL,
|
{META_ROI_INFO, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
||||||
HFI_PROP_ROI_INFO,
|
HFI_PROP_ROI_INFO,
|
||||||
CAP_FLAG_INPUT_PORT,
|
CAP_FLAG_INPUT_PORT,
|
||||||
@@ -1748,8 +1742,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
msm_vidc_adjust_roi_info, NULL},
|
msm_vidc_adjust_roi_info, NULL},
|
||||||
|
|
||||||
{META_ROI_INFO, ENC, H264|HEVC,
|
{META_ROI_INFO, ENC, H264|HEVC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
||||||
HFI_PROP_ROI_INFO,
|
HFI_PROP_ROI_INFO,
|
||||||
CAP_FLAG_INPUT_PORT,
|
CAP_FLAG_INPUT_PORT,
|
||||||
@@ -1758,8 +1752,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
msm_vidc_adjust_roi_info, NULL},
|
msm_vidc_adjust_roi_info, NULL},
|
||||||
|
|
||||||
{META_DEC_QP_METADATA, DEC, CODECS_ALL,
|
{META_DEC_QP_METADATA, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA,
|
V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA,
|
||||||
HFI_PROP_DEC_QP_METADATA},
|
HFI_PROP_DEC_QP_METADATA},
|
||||||
|
|
||||||
@@ -1852,8 +1846,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
{0}, {0},
|
{0}, {0},
|
||||||
NULL, msm_vidc_set_q16},
|
NULL, msm_vidc_set_q16},
|
||||||
{META_SUBFRAME_OUTPUT, ENC, HEIC,
|
{META_SUBFRAME_OUTPUT, ENC, HEIC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
||||||
HFI_PROP_SUBFRAME_OUTPUT},
|
HFI_PROP_SUBFRAME_OUTPUT},
|
||||||
{COMPLEXITY, ENC, H264 | HEVC,
|
{COMPLEXITY, ENC, H264 | HEVC,
|
||||||
@@ -1861,8 +1855,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
1, 100,
|
1, 100,
|
||||||
V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY},
|
V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY},
|
||||||
{META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264,
|
{META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES,
|
V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES,
|
||||||
HFI_PROP_MAX_NUM_REORDER_FRAMES},
|
HFI_PROP_MAX_NUM_REORDER_FRAMES},
|
||||||
};
|
};
|
||||||
|
@@ -332,12 +332,6 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
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},
|
||||||
|
|
||||||
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE,
|
|
||||||
V4L2_MPEG_MSM_VIDC_ENABLE,
|
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL},
|
|
||||||
|
|
||||||
{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,
|
||||||
@@ -1491,74 +1485,74 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
NULL, NULL},
|
NULL, NULL},
|
||||||
|
|
||||||
{META_LTR_MARK_USE, ENC, H264|HEVC,
|
{META_LTR_MARK_USE, ENC, H264|HEVC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS,
|
V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS,
|
||||||
HFI_PROP_LTR_MARK_USE_DETAILS},
|
HFI_PROP_LTR_MARK_USE_DETAILS},
|
||||||
|
|
||||||
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL,
|
V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL,
|
||||||
HFI_PROP_METADATA_SEQ_HEADER_NAL},
|
HFI_PROP_METADATA_SEQ_HEADER_NAL},
|
||||||
|
|
||||||
{META_DPB_MISR, DEC, CODECS_ALL,
|
{META_DPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR,
|
V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR,
|
||||||
HFI_PROP_DPB_LUMA_CHROMA_MISR},
|
HFI_PROP_DPB_LUMA_CHROMA_MISR},
|
||||||
|
|
||||||
{META_OPB_MISR, DEC, CODECS_ALL,
|
{META_OPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR,
|
V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR,
|
||||||
HFI_PROP_OPB_LUMA_CHROMA_MISR},
|
HFI_PROP_OPB_LUMA_CHROMA_MISR},
|
||||||
|
|
||||||
{META_INTERLACE, DEC, H264,
|
{META_INTERLACE, DEC, H264,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_INTERLACE,
|
V4L2_CID_MPEG_VIDC_METADATA_INTERLACE,
|
||||||
HFI_PROP_INTERLACE_INFO},
|
HFI_PROP_INTERLACE_INFO},
|
||||||
|
|
||||||
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
||||||
HFI_PROP_TIMESTAMP},
|
HFI_PROP_TIMESTAMP},
|
||||||
|
|
||||||
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT,
|
V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT,
|
||||||
HFI_PROP_CONEALED_MB_COUNT},
|
HFI_PROP_CONEALED_MB_COUNT},
|
||||||
|
|
||||||
{META_HIST_INFO, DEC, CODECS_ALL,
|
{META_HIST_INFO, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO,
|
V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO,
|
||||||
HFI_PROP_HISTOGRAM_INFO},
|
HFI_PROP_HISTOGRAM_INFO},
|
||||||
|
|
||||||
{META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC,
|
{META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR,
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR,
|
||||||
HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR},
|
HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR},
|
||||||
|
|
||||||
{META_SEI_CLL, DEC|ENC, HEVC|HEIC,
|
{META_SEI_CLL, DEC|ENC, HEVC|HEIC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL,
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL,
|
||||||
HFI_PROP_SEI_CONTENT_LIGHT_LEVEL},
|
HFI_PROP_SEI_CONTENT_LIGHT_LEVEL},
|
||||||
|
|
||||||
{META_HDR10PLUS, DEC | ENC, HEVC|HEIC,
|
{META_HDR10PLUS, DEC | ENC, HEVC|HEIC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS,
|
V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS,
|
||||||
HFI_PROP_SEI_HDR10PLUS_USERDATA},
|
HFI_PROP_SEI_HDR10PLUS_USERDATA},
|
||||||
|
|
||||||
{META_EVA_STATS, ENC, CODECS_ALL,
|
{META_EVA_STATS, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS,
|
V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS,
|
||||||
HFI_PROP_EVA_STAT_INFO,
|
HFI_PROP_EVA_STAT_INFO,
|
||||||
0,
|
0,
|
||||||
@@ -1566,38 +1560,38 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
{ENH_LAYER_COUNT}},
|
{ENH_LAYER_COUNT}},
|
||||||
|
|
||||||
{META_BUF_TAG, DEC | ENC, CODECS_ALL,
|
{META_BUF_TAG, DEC | ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG,
|
V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG,
|
||||||
HFI_PROP_BUFFER_TAG},
|
HFI_PROP_BUFFER_TAG},
|
||||||
|
|
||||||
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST,
|
V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST,
|
||||||
HFI_PROP_DPB_TAG_LIST},
|
HFI_PROP_DPB_TAG_LIST},
|
||||||
|
|
||||||
{META_OUTPUT_BUF_TAG, DEC, CODECS_ALL,
|
{META_OUTPUT_BUF_TAG, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
0,
|
0,
|
||||||
HFI_PROP_BUFFER_TAG},
|
HFI_PROP_BUFFER_TAG},
|
||||||
|
|
||||||
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
||||||
HFI_PROP_SUBFRAME_OUTPUT},
|
HFI_PROP_SUBFRAME_OUTPUT},
|
||||||
|
|
||||||
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA,
|
V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA,
|
||||||
HFI_PROP_ENC_QP_METADATA},
|
HFI_PROP_ENC_QP_METADATA},
|
||||||
|
|
||||||
{META_ROI_INFO, ENC, CODECS_ALL,
|
{META_ROI_INFO, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
||||||
HFI_PROP_ROI_INFO,
|
HFI_PROP_ROI_INFO,
|
||||||
CAP_FLAG_INPUT_PORT,
|
CAP_FLAG_INPUT_PORT,
|
||||||
@@ -1606,8 +1600,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
msm_vidc_adjust_roi_info, NULL},
|
msm_vidc_adjust_roi_info, NULL},
|
||||||
|
|
||||||
{META_ROI_INFO, ENC, H264|HEVC,
|
{META_ROI_INFO, ENC, H264|HEVC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO,
|
||||||
HFI_PROP_ROI_INFO,
|
HFI_PROP_ROI_INFO,
|
||||||
CAP_FLAG_INPUT_PORT,
|
CAP_FLAG_INPUT_PORT,
|
||||||
@@ -1616,8 +1610,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
msm_vidc_adjust_roi_info, NULL},
|
msm_vidc_adjust_roi_info, NULL},
|
||||||
|
|
||||||
{META_DEC_QP_METADATA, DEC, CODECS_ALL,
|
{META_DEC_QP_METADATA, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA,
|
V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA,
|
||||||
HFI_PROP_DEC_QP_METADATA},
|
HFI_PROP_DEC_QP_METADATA},
|
||||||
|
|
||||||
@@ -1710,8 +1704,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
{0}, {0},
|
{0}, {0},
|
||||||
NULL, msm_vidc_set_q16},
|
NULL, msm_vidc_set_q16},
|
||||||
{META_SUBFRAME_OUTPUT, ENC, HEIC,
|
{META_SUBFRAME_OUTPUT, ENC, HEIC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT,
|
||||||
HFI_PROP_SUBFRAME_OUTPUT},
|
HFI_PROP_SUBFRAME_OUTPUT},
|
||||||
{COMPLEXITY, ENC, H264 | HEVC,
|
{COMPLEXITY, ENC, H264 | HEVC,
|
||||||
@@ -1719,8 +1713,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, 100,
|
1, 100,
|
||||||
V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY},
|
V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY},
|
||||||
{META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264,
|
{META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES,
|
V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES,
|
||||||
HFI_PROP_MAX_NUM_REORDER_FRAMES},
|
HFI_PROP_MAX_NUM_REORDER_FRAMES},
|
||||||
};
|
};
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
#include <linux/iommu.h>
|
#include <linux/iommu.h>
|
||||||
|
#include <media/v4l2_vidc_extensions.h>
|
||||||
#include "msm_vidc_internal.h"
|
#include "msm_vidc_internal.h"
|
||||||
#include "msm_vidc_core.h"
|
#include "msm_vidc_core.h"
|
||||||
#include "msm_vidc_inst.h"
|
#include "msm_vidc_inst.h"
|
||||||
@@ -99,18 +100,68 @@ static inline is_internal_buffer(enum msm_vidc_buffer_type buffer_type)
|
|||||||
buffer_type == MSM_VIDC_BUF_VPSS;
|
buffer_type == MSM_VIDC_BUF_VPSS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_meta_rx_inp_enabled(struct msm_vidc_inst *inst, u32 cap)
|
||||||
|
{
|
||||||
|
bool enabled = false;
|
||||||
|
|
||||||
|
if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE &&
|
||||||
|
inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_RX_INPUT)
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool is_meta_rx_out_enabled(struct msm_vidc_inst *inst, u32 cap)
|
||||||
|
{
|
||||||
|
bool enabled = false;
|
||||||
|
|
||||||
|
if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE &&
|
||||||
|
inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_RX_OUTPUT)
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool is_meta_tx_inp_enabled(struct msm_vidc_inst *inst, u32 cap)
|
||||||
|
{
|
||||||
|
bool enabled = false;
|
||||||
|
|
||||||
|
if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE &&
|
||||||
|
inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_TX_INPUT)
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool is_meta_tx_out_enabled(struct msm_vidc_inst *inst, u32 cap)
|
||||||
|
{
|
||||||
|
bool enabled = false;
|
||||||
|
|
||||||
|
if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE &&
|
||||||
|
inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_TX_OUTPUT)
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool is_input_meta_enabled(struct msm_vidc_inst *inst)
|
static inline bool is_input_meta_enabled(struct msm_vidc_inst *inst)
|
||||||
{
|
{
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
|
|
||||||
if (is_decode_session(inst)) {
|
if (is_decode_session(inst)) {
|
||||||
enabled = inst->capabilities->cap[META_BUF_TAG].value ?
|
enabled = is_meta_tx_inp_enabled(inst, META_BUF_TAG) ||
|
||||||
true : false;
|
is_meta_rx_inp_enabled(inst, META_BUF_TAG) ||
|
||||||
|
is_meta_tx_inp_enabled(inst, META_OUTBUF_FENCE) ||
|
||||||
|
is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE);
|
||||||
} else if (is_encode_session(inst)) {
|
} else if (is_encode_session(inst)) {
|
||||||
enabled = (inst->capabilities->cap[META_SEQ_HDR_NAL].value ||
|
enabled = is_meta_tx_inp_enabled(inst, META_SEQ_HDR_NAL) ||
|
||||||
inst->capabilities->cap[META_EVA_STATS].value ||
|
is_meta_rx_inp_enabled(inst, META_SEQ_HDR_NAL) ||
|
||||||
inst->capabilities->cap[META_BUF_TAG].value ||
|
is_meta_tx_inp_enabled(inst, META_EVA_STATS) ||
|
||||||
inst->capabilities->cap[META_ROI_INFO].value);
|
is_meta_rx_inp_enabled(inst, META_EVA_STATS) ||
|
||||||
|
is_meta_tx_inp_enabled(inst, META_BUF_TAG) ||
|
||||||
|
is_meta_rx_inp_enabled(inst, META_BUF_TAG) ||
|
||||||
|
is_meta_tx_inp_enabled(inst, META_ROI_INFO) ||
|
||||||
|
is_meta_rx_inp_enabled(inst, META_ROI_INFO);
|
||||||
}
|
}
|
||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
@@ -120,23 +171,37 @@ static inline bool is_output_meta_enabled(struct msm_vidc_inst *inst)
|
|||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
|
|
||||||
if (is_decode_session(inst)) {
|
if (is_decode_session(inst)) {
|
||||||
enabled = (inst->capabilities->cap[META_BITSTREAM_RESOLUTION].value ||
|
enabled = is_meta_tx_out_enabled(inst, META_BITSTREAM_RESOLUTION) ||
|
||||||
inst->capabilities->cap[META_CROP_OFFSETS].value ||
|
is_meta_rx_out_enabled(inst, META_BITSTREAM_RESOLUTION) ||
|
||||||
inst->capabilities->cap[META_DPB_MISR].value ||
|
is_meta_tx_out_enabled(inst, META_CROP_OFFSETS) ||
|
||||||
inst->capabilities->cap[META_OPB_MISR].value ||
|
is_meta_rx_out_enabled(inst, META_CROP_OFFSETS) ||
|
||||||
inst->capabilities->cap[META_INTERLACE].value ||
|
is_meta_tx_out_enabled(inst, META_DPB_MISR) ||
|
||||||
inst->capabilities->cap[META_CONCEALED_MB_CNT].value ||
|
is_meta_rx_out_enabled(inst, META_DPB_MISR) ||
|
||||||
inst->capabilities->cap[META_HIST_INFO].value ||
|
is_meta_tx_out_enabled(inst, META_OPB_MISR) ||
|
||||||
inst->capabilities->cap[META_SEI_MASTERING_DISP].value ||
|
is_meta_rx_out_enabled(inst, META_OPB_MISR) ||
|
||||||
inst->capabilities->cap[META_SEI_CLL].value ||
|
is_meta_tx_out_enabled(inst, META_INTERLACE) ||
|
||||||
inst->capabilities->cap[META_BUF_TAG].value ||
|
is_meta_rx_out_enabled(inst, META_INTERLACE) ||
|
||||||
inst->capabilities->cap[META_DPB_TAG_LIST].value ||
|
is_meta_tx_out_enabled(inst, META_CONCEALED_MB_CNT) ||
|
||||||
inst->capabilities->cap[META_SUBFRAME_OUTPUT].value ||
|
is_meta_rx_out_enabled(inst, META_CONCEALED_MB_CNT) ||
|
||||||
inst->capabilities->cap[META_MAX_NUM_REORDER_FRAMES].value);
|
is_meta_tx_out_enabled(inst, META_SEI_MASTERING_DISP) ||
|
||||||
|
is_meta_rx_out_enabled(inst, META_SEI_MASTERING_DISP) ||
|
||||||
|
is_meta_tx_out_enabled(inst, META_SEI_CLL) ||
|
||||||
|
is_meta_rx_out_enabled(inst, META_SEI_CLL) ||
|
||||||
|
is_meta_tx_out_enabled(inst, META_BUF_TAG) ||
|
||||||
|
is_meta_rx_out_enabled(inst, META_BUF_TAG) ||
|
||||||
|
is_meta_tx_out_enabled(inst, META_DPB_TAG_LIST) ||
|
||||||
|
is_meta_rx_out_enabled(inst, META_DPB_TAG_LIST) ||
|
||||||
|
is_meta_tx_out_enabled(inst, META_SUBFRAME_OUTPUT) ||
|
||||||
|
is_meta_rx_out_enabled(inst, META_SUBFRAME_OUTPUT) ||
|
||||||
|
is_meta_tx_out_enabled(inst, META_MAX_NUM_REORDER_FRAMES) ||
|
||||||
|
is_meta_rx_out_enabled(inst, META_MAX_NUM_REORDER_FRAMES);
|
||||||
} else if (is_encode_session(inst)) {
|
} else if (is_encode_session(inst)) {
|
||||||
enabled = (inst->capabilities->cap[META_LTR_MARK_USE].value ||
|
enabled = is_meta_tx_out_enabled(inst, META_LTR_MARK_USE) ||
|
||||||
inst->capabilities->cap[META_BUF_TAG].value);
|
is_meta_rx_out_enabled(inst, META_LTR_MARK_USE) ||
|
||||||
|
is_meta_tx_out_enabled(inst, META_BUF_TAG) ||
|
||||||
|
is_meta_rx_out_enabled(inst, META_BUF_TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -375,7 +375,7 @@ enum msm_vidc_inst_capability_type {
|
|||||||
MB_CYCLES_FW,
|
MB_CYCLES_FW,
|
||||||
MB_CYCLES_FW_VPP,
|
MB_CYCLES_FW_VPP,
|
||||||
SECURE_MODE,
|
SECURE_MODE,
|
||||||
INPUT_META_OUTBUF_FENCE,
|
META_OUTBUF_FENCE,
|
||||||
FENCE_ID,
|
FENCE_ID,
|
||||||
FENCE_FD,
|
FENCE_FD,
|
||||||
TS_REORDER,
|
TS_REORDER,
|
||||||
|
@@ -931,7 +931,7 @@ static int msm_vdec_subscribe_metadata(struct msm_vidc_inst *inst,
|
|||||||
u32 i, count = 0;
|
u32 i, count = 0;
|
||||||
struct msm_vidc_inst_capability *capability;
|
struct msm_vidc_inst_capability *capability;
|
||||||
static const u32 metadata_input_list[] = {
|
static const u32 metadata_input_list[] = {
|
||||||
INPUT_META_OUTBUF_FENCE,
|
META_OUTBUF_FENCE,
|
||||||
/*
|
/*
|
||||||
* when fence enabled, client needs output buffer_tag
|
* when fence enabled, client needs output buffer_tag
|
||||||
* in input metadata buffer done.
|
* in input metadata buffer done.
|
||||||
@@ -970,7 +970,7 @@ static int msm_vdec_subscribe_metadata(struct msm_vidc_inst *inst,
|
|||||||
payload[0] = HFI_MODE_METADATA;
|
payload[0] = HFI_MODE_METADATA;
|
||||||
if (port == INPUT_PORT) {
|
if (port == INPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) {
|
for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) {
|
||||||
if (capability->cap[metadata_input_list[i]].value &&
|
if (is_meta_rx_inp_enabled(inst, metadata_input_list[i]) &&
|
||||||
msm_vidc_allow_metadata(inst, metadata_input_list[i])) {
|
msm_vidc_allow_metadata(inst, metadata_input_list[i])) {
|
||||||
payload[count + 1] =
|
payload[count + 1] =
|
||||||
capability->cap[metadata_input_list[i]].hfi_id;
|
capability->cap[metadata_input_list[i]].hfi_id;
|
||||||
@@ -979,7 +979,7 @@ static int msm_vdec_subscribe_metadata(struct msm_vidc_inst *inst,
|
|||||||
}
|
}
|
||||||
} else if (port == OUTPUT_PORT) {
|
} else if (port == OUTPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
||||||
if (capability->cap[metadata_output_list[i]].value &&
|
if (is_meta_rx_out_enabled(inst, metadata_output_list[i]) &&
|
||||||
msm_vidc_allow_metadata(inst, metadata_output_list[i])) {
|
msm_vidc_allow_metadata(inst, metadata_output_list[i])) {
|
||||||
payload[count + 1] =
|
payload[count + 1] =
|
||||||
capability->cap[metadata_output_list[i]].hfi_id;
|
capability->cap[metadata_output_list[i]].hfi_id;
|
||||||
@@ -1028,7 +1028,7 @@ static int msm_vdec_set_delivery_mode_metadata(struct msm_vidc_inst *inst,
|
|||||||
|
|
||||||
if (port == INPUT_PORT) {
|
if (port == INPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) {
|
for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) {
|
||||||
if (capability->cap[metadata_input_list[i]].value) {
|
if (is_meta_tx_inp_enabled(inst, metadata_input_list[i])) {
|
||||||
payload[count + 1] =
|
payload[count + 1] =
|
||||||
capability->cap[metadata_input_list[i]].hfi_id;
|
capability->cap[metadata_input_list[i]].hfi_id;
|
||||||
count++;
|
count++;
|
||||||
@@ -1036,7 +1036,7 @@ static int msm_vdec_set_delivery_mode_metadata(struct msm_vidc_inst *inst,
|
|||||||
}
|
}
|
||||||
} else if (port == OUTPUT_PORT) {
|
} else if (port == OUTPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
||||||
if (capability->cap[metadata_output_list[i]].value &&
|
if (is_meta_tx_out_enabled(inst, metadata_output_list[i]) &&
|
||||||
msm_vidc_allow_metadata(inst, metadata_output_list[i])) {
|
msm_vidc_allow_metadata(inst, metadata_output_list[i])) {
|
||||||
payload[count + 1] =
|
payload[count + 1] =
|
||||||
capability->cap[metadata_output_list[i]].hfi_id;
|
capability->cap[metadata_output_list[i]].hfi_id;
|
||||||
@@ -1068,7 +1068,7 @@ static int msm_vdec_set_delivery_mode_property(struct msm_vidc_inst *inst,
|
|||||||
u32 i, count = 0;
|
u32 i, count = 0;
|
||||||
struct msm_vidc_inst_capability *capability;
|
struct msm_vidc_inst_capability *capability;
|
||||||
static const u32 property_output_list[] = {
|
static const u32 property_output_list[] = {
|
||||||
INPUT_META_OUTBUF_FENCE,
|
META_OUTBUF_FENCE,
|
||||||
};
|
};
|
||||||
static const u32 property_input_list[] = {};
|
static const u32 property_input_list[] = {};
|
||||||
|
|
||||||
@@ -1091,6 +1091,20 @@ static int msm_vdec_set_delivery_mode_property(struct msm_vidc_inst *inst,
|
|||||||
}
|
}
|
||||||
} else if (port == OUTPUT_PORT) {
|
} else if (port == OUTPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(property_output_list); i++) {
|
for (i = 0; i < ARRAY_SIZE(property_output_list); i++) {
|
||||||
|
if (property_output_list[i] == META_OUTBUF_FENCE &&
|
||||||
|
is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) {
|
||||||
|
/*
|
||||||
|
* if output buffer fence enabled via
|
||||||
|
* META_OUTBUF_FENCE, then driver will send
|
||||||
|
* fence id via HFI_PROP_FENCE to firmware.
|
||||||
|
* So enable HFI_PROP_FENCE property as
|
||||||
|
* delivery mode property.
|
||||||
|
*/
|
||||||
|
payload[count + 1] =
|
||||||
|
capability->cap[property_output_list[i]].hfi_id;
|
||||||
|
count++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (capability->cap[property_output_list[i]].value) {
|
if (capability->cap[property_output_list[i]].value) {
|
||||||
payload[count + 1] =
|
payload[count + 1] =
|
||||||
capability->cap[property_output_list[i]].hfi_id;
|
capability->cap[property_output_list[i]].hfi_id;
|
||||||
@@ -2054,7 +2068,7 @@ int msm_vdec_qbuf(struct msm_vidc_inst *inst, struct vb2_buffer *vb2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vb2->type == OUTPUT_META_PLANE) {
|
if (vb2->type == OUTPUT_META_PLANE) {
|
||||||
if (inst->capabilities->cap[META_DPB_TAG_LIST].value) {
|
if (is_meta_rx_out_enabled(inst, META_DPB_TAG_LIST)) {
|
||||||
/*
|
/*
|
||||||
* vb2 is not allowing client to pass data in output meta plane.
|
* vb2 is not allowing client to pass data in output meta plane.
|
||||||
* adjust the bytesused as client will send buffer tag metadata
|
* adjust the bytesused as client will send buffer tag metadata
|
||||||
|
@@ -681,7 +681,8 @@ static int msm_venc_metadata_delivery(struct msm_vidc_inst *inst,
|
|||||||
u32 payload[32] = {0};
|
u32 payload[32] = {0};
|
||||||
u32 i, count = 0;
|
u32 i, count = 0;
|
||||||
struct msm_vidc_inst_capability *capability;
|
struct msm_vidc_inst_capability *capability;
|
||||||
static const u32 metadata_list[] = {
|
static const u32 metadata_output_list[] = {};
|
||||||
|
static const u32 metadata_input_list[] = {
|
||||||
META_SEI_MASTERING_DISP,
|
META_SEI_MASTERING_DISP,
|
||||||
META_SEI_CLL,
|
META_SEI_CLL,
|
||||||
META_HDR10PLUS,
|
META_HDR10PLUS,
|
||||||
@@ -699,12 +700,26 @@ static int msm_venc_metadata_delivery(struct msm_vidc_inst *inst,
|
|||||||
|
|
||||||
capability = inst->capabilities;
|
capability = inst->capabilities;
|
||||||
payload[0] = HFI_MODE_METADATA;
|
payload[0] = HFI_MODE_METADATA;
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_list); i++) {
|
|
||||||
if (capability->cap[metadata_list[i]].value) {
|
if (port == INPUT_PORT) {
|
||||||
payload[count + 1] =
|
for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) {
|
||||||
capability->cap[metadata_list[i]].hfi_id;
|
if (is_meta_tx_inp_enabled(inst, metadata_input_list[i])) {
|
||||||
count++;
|
payload[count + 1] =
|
||||||
|
capability->cap[metadata_input_list[i]].hfi_id;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (port == OUTPUT_PORT) {
|
||||||
|
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
||||||
|
if (is_meta_tx_out_enabled(inst, metadata_output_list[i])) {
|
||||||
|
payload[count + 1] =
|
||||||
|
capability->cap[metadata_output_list[i]].hfi_id;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
i_vpr_e(inst, "%s: invalid port: %d\n", __func__, port);
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = venus_hfi_session_command(inst,
|
rc = venus_hfi_session_command(inst,
|
||||||
@@ -726,7 +741,8 @@ static int msm_venc_metadata_subscription(struct msm_vidc_inst *inst,
|
|||||||
u32 payload[32] = {0};
|
u32 payload[32] = {0};
|
||||||
u32 i, count = 0;
|
u32 i, count = 0;
|
||||||
struct msm_vidc_inst_capability *capability;
|
struct msm_vidc_inst_capability *capability;
|
||||||
static const u32 metadata_list[] = {
|
static const u32 metadata_input_list[] = {};
|
||||||
|
static const u32 metadata_output_list[] = {
|
||||||
META_LTR_MARK_USE,
|
META_LTR_MARK_USE,
|
||||||
META_SEQ_HDR_NAL,
|
META_SEQ_HDR_NAL,
|
||||||
META_TIMESTAMP,
|
META_TIMESTAMP,
|
||||||
@@ -743,12 +759,26 @@ static int msm_venc_metadata_subscription(struct msm_vidc_inst *inst,
|
|||||||
|
|
||||||
capability = inst->capabilities;
|
capability = inst->capabilities;
|
||||||
payload[0] = HFI_MODE_METADATA;
|
payload[0] = HFI_MODE_METADATA;
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_list); i++) {
|
|
||||||
if (capability->cap[metadata_list[i]].value) {
|
if (port == INPUT_PORT) {
|
||||||
payload[count + 1] =
|
for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) {
|
||||||
capability->cap[metadata_list[i]].hfi_id;
|
if (is_meta_rx_inp_enabled(inst, metadata_input_list[i])) {
|
||||||
count++;
|
payload[count + 1] =
|
||||||
|
capability->cap[metadata_input_list[i]].hfi_id;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (port == OUTPUT_PORT) {
|
||||||
|
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
||||||
|
if (is_meta_rx_out_enabled(inst, metadata_output_list[i])) {
|
||||||
|
payload[count + 1] =
|
||||||
|
capability->cap[metadata_output_list[i]].hfi_id;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
i_vpr_e(inst, "%s: invalid port: %d\n", __func__, port);
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = venus_hfi_session_command(inst,
|
rc = venus_hfi_session_command(inst,
|
||||||
|
@@ -82,8 +82,11 @@ static bool is_meta_ctrl(u32 id)
|
|||||||
id == V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO ||
|
id == V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO ||
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP ||
|
id == V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP ||
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA ||
|
id == V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA ||
|
||||||
|
id == V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA ||
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION ||
|
id == V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION ||
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS);
|
id == V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS ||
|
||||||
|
id == V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES ||
|
||||||
|
id == V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *const mpeg_video_rate_control[] = {
|
static const char *const mpeg_video_rate_control[] = {
|
||||||
@@ -420,18 +423,42 @@ static bool is_parent_available(struct msm_vidc_inst *inst,
|
|||||||
int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap_id,
|
int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap_id,
|
||||||
s32 adjusted_val, const char *func)
|
s32 adjusted_val, const char *func)
|
||||||
{
|
{
|
||||||
|
int prev_value = 0;
|
||||||
|
bool is_updated = false;
|
||||||
|
|
||||||
if (!inst || !inst->capabilities) {
|
if (!inst || !inst->capabilities) {
|
||||||
d_vpr_e("%s: invalid params\n", __func__);
|
d_vpr_e("%s: invalid params\n", __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inst->capabilities->cap[cap_id].value != adjusted_val)
|
prev_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
|
if (is_meta_ctrl(inst->capabilities->cap[cap_id].v4l2_id)) {
|
||||||
|
/*
|
||||||
|
* cumulative control value if client set same metadata
|
||||||
|
* control multiple times.
|
||||||
|
*/
|
||||||
|
if (adjusted_val & V4L2_MPEG_VIDC_META_ENABLE) {
|
||||||
|
/* enable metadata */
|
||||||
|
inst->capabilities->cap[cap_id].value |= adjusted_val;
|
||||||
|
} else {
|
||||||
|
/* disable metadata */
|
||||||
|
inst->capabilities->cap[cap_id].value &= ~adjusted_val;
|
||||||
|
}
|
||||||
|
if (prev_value != (prev_value | adjusted_val))
|
||||||
|
is_updated = true;
|
||||||
|
} else {
|
||||||
|
inst->capabilities->cap[cap_id].value = adjusted_val;
|
||||||
|
if (prev_value != adjusted_val)
|
||||||
|
is_updated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_updated) {
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
"%s: updated database: name: %s, value: %#x -> %#x\n",
|
"%s: updated database: name: %s, value: %#x -> %#x\n",
|
||||||
func, cap_name(cap_id),
|
func, cap_name(cap_id),
|
||||||
inst->capabilities->cap[cap_id].value, adjusted_val);
|
prev_value, adjusted_val);
|
||||||
|
}
|
||||||
inst->capabilities->cap[cap_id].value = adjusted_val;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1047,11 +1074,13 @@ static int msm_vidc_update_static_property(struct msm_vidc_inst *inst,
|
|||||||
* To subscribe HFI_PROP_DPB_TAG_LIST
|
* To subscribe HFI_PROP_DPB_TAG_LIST
|
||||||
* data in FBD, HFI_PROP_BUFFER_TAG data
|
* data in FBD, HFI_PROP_BUFFER_TAG data
|
||||||
* must be delivered via FTB. Hence, update
|
* must be delivered via FTB. Hence, update
|
||||||
* META_OUTPUT_BUF_TAG when META_DPB_TAG_LIST
|
* META_OUTPUT_BUF_TAG to transfer on output port
|
||||||
* is updated.
|
* when META_DPB_TAG_LIST is enbaled.
|
||||||
*/
|
*/
|
||||||
msm_vidc_update_cap_value(inst, META_OUTPUT_BUF_TAG,
|
if (is_meta_rx_out_enabled(inst, META_DPB_TAG_LIST)) {
|
||||||
ctrl->val, __func__);
|
inst->capabilities->cap[META_OUTPUT_BUF_TAG].value |=
|
||||||
|
V4L2_MPEG_VIDC_META_TX_OUTPUT | V4L2_MPEG_VIDC_META_ENABLE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = msm_vidc_update_meta_port_settings(inst);
|
rc = msm_vidc_update_meta_port_settings(inst);
|
||||||
@@ -1754,7 +1783,7 @@ static int msm_vidc_adjust_static_layer_count_and_type(struct msm_vidc_inst *ins
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!inst->capabilities->cap[META_EVA_STATS].value &&
|
if (!is_meta_tx_inp_enabled(inst, META_EVA_STATS) &&
|
||||||
hb_requested && (layer_count > 1)) {
|
hb_requested && (layer_count > 1)) {
|
||||||
layer_count = 1;
|
layer_count = 1;
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
@@ -2577,7 +2606,7 @@ int msm_vidc_adjust_min_quality(void *instance, struct v4l2_ctrl *ctrl)
|
|||||||
goto update_and_exit;
|
goto update_and_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (roi_enable) {
|
if (is_meta_tx_inp_enabled(inst, META_ROI_INFO)) {
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
"%s: min quality not supported with roi metadata\n",
|
"%s: min quality not supported with roi metadata\n",
|
||||||
__func__);
|
__func__);
|
||||||
@@ -2585,7 +2614,7 @@ int msm_vidc_adjust_min_quality(void *instance, struct v4l2_ctrl *ctrl)
|
|||||||
goto update_and_exit;
|
goto update_and_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enh_layer_count && inst->hfi_layer_type != HFI_HIER_B) {
|
if (enh_layer_count > 0 && inst->hfi_layer_type != HFI_HIER_B) {
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
"%s: min quality not supported for HP encoding\n",
|
"%s: min quality not supported for HP encoding\n",
|
||||||
__func__);
|
__func__);
|
||||||
@@ -2927,7 +2956,7 @@ int msm_vidc_set_header_mode(void *instance,
|
|||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
struct msm_vidc_inst *inst = (struct msm_vidc_inst *) instance;
|
struct msm_vidc_inst *inst = (struct msm_vidc_inst *) instance;
|
||||||
int header_mode, prepend_sps_pps, hdr_metadata;
|
int header_mode, prepend_sps_pps;
|
||||||
u32 hfi_value = 0;
|
u32 hfi_value = 0;
|
||||||
struct msm_vidc_inst_capability *capability;
|
struct msm_vidc_inst_capability *capability;
|
||||||
|
|
||||||
@@ -2939,7 +2968,6 @@ int msm_vidc_set_header_mode(void *instance,
|
|||||||
|
|
||||||
header_mode = capability->cap[cap_id].value;
|
header_mode = capability->cap[cap_id].value;
|
||||||
prepend_sps_pps = capability->cap[PREPEND_SPSPPS_TO_IDR].value;
|
prepend_sps_pps = capability->cap[PREPEND_SPSPPS_TO_IDR].value;
|
||||||
hdr_metadata = capability->cap[META_SEQ_HDR_NAL].value;
|
|
||||||
|
|
||||||
/* prioritize PREPEND_SPSPPS_TO_IDR mode over other header modes */
|
/* prioritize PREPEND_SPSPPS_TO_IDR mode over other header modes */
|
||||||
if (prepend_sps_pps)
|
if (prepend_sps_pps)
|
||||||
@@ -2949,7 +2977,7 @@ int msm_vidc_set_header_mode(void *instance,
|
|||||||
else
|
else
|
||||||
hfi_value = HFI_SEQ_HEADER_SEPERATE_FRAME;
|
hfi_value = HFI_SEQ_HEADER_SEPERATE_FRAME;
|
||||||
|
|
||||||
if (hdr_metadata)
|
if (is_meta_rx_inp_enabled(inst, META_SEQ_HDR_NAL))
|
||||||
hfi_value |= HFI_SEQ_HEADER_METADATA;
|
hfi_value |= HFI_SEQ_HEADER_METADATA;
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
||||||
|
@@ -82,7 +82,7 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
|
|||||||
{MB_CYCLES_FW, "MB_CYCLES_FW" },
|
{MB_CYCLES_FW, "MB_CYCLES_FW" },
|
||||||
{MB_CYCLES_FW_VPP, "MB_CYCLES_FW_VPP" },
|
{MB_CYCLES_FW_VPP, "MB_CYCLES_FW_VPP" },
|
||||||
{SECURE_MODE, "SECURE_MODE" },
|
{SECURE_MODE, "SECURE_MODE" },
|
||||||
{INPUT_META_OUTBUF_FENCE, "INPUT_META_OUTBUF_FENCE" },
|
{META_OUTBUF_FENCE, "META_OUTBUF_FENCE" },
|
||||||
{FENCE_ID, "FENCE_ID" },
|
{FENCE_ID, "FENCE_ID" },
|
||||||
{FENCE_FD, "FENCE_FD" },
|
{FENCE_FD, "FENCE_FD" },
|
||||||
{TS_REORDER, "TS_REORDER" },
|
{TS_REORDER, "TS_REORDER" },
|
||||||
@@ -1416,10 +1416,10 @@ bool msm_vidc_allow_property(struct msm_vidc_inst *inst, u32 hfi_id)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case HFI_PROP_FENCE:
|
case HFI_PROP_FENCE:
|
||||||
if (!inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value) {
|
if (!is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) {
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
"%s: cap: %24s not enabled, hence not allowed to subscribe\n",
|
"%s: cap: %24s not enabled, hence not allowed to subscribe\n",
|
||||||
__func__, cap_name(INPUT_META_OUTBUF_FENCE));
|
__func__, cap_name(META_OUTBUF_FENCE));
|
||||||
is_allowed = false;
|
is_allowed = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3305,7 +3305,7 @@ int msm_vidc_queue_buffer_single(struct msm_vidc_inst *inst, struct vb2_buffer *
|
|||||||
if (!buf)
|
if (!buf)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value &&
|
if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE) &&
|
||||||
is_output_buffer(buf->type)) {
|
is_output_buffer(buf->type)) {
|
||||||
fence = msm_vidc_fence_create(inst);
|
fence = msm_vidc_fence_create(inst);
|
||||||
if (!fence)
|
if (!fence)
|
||||||
@@ -3786,7 +3786,7 @@ int msm_vidc_buffer_done(struct msm_vidc_inst *inst,
|
|||||||
|
|
||||||
if (buf->type == MSM_VIDC_BUF_INPUT_META &&
|
if (buf->type == MSM_VIDC_BUF_INPUT_META &&
|
||||||
inst->capabilities->cap[INPUT_META_VIA_REQUEST].value) {
|
inst->capabilities->cap[INPUT_META_VIA_REQUEST].value) {
|
||||||
if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value)
|
if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE))
|
||||||
return msm_vidc_v4l2_buffer_event(inst, buf);
|
return msm_vidc_v4l2_buffer_event(inst, buf);
|
||||||
} else {
|
} else {
|
||||||
return msm_vidc_vb2_buffer_done(inst, buf);
|
return msm_vidc_vb2_buffer_done(inst, buf);
|
||||||
|
@@ -3523,7 +3523,7 @@ int venus_hfi_queue_buffer(struct msm_vidc_inst *inst,
|
|||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value &&
|
if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE) &&
|
||||||
is_output_buffer(buffer->type)) {
|
is_output_buffer(buffer->type)) {
|
||||||
rc = hfi_create_packet(inst->packet,
|
rc = hfi_create_packet(inst->packet,
|
||||||
inst->packet_size,
|
inst->packet_size,
|
||||||
|
@@ -1557,7 +1557,7 @@ static int handle_session_property(struct msm_vidc_inst *inst,
|
|||||||
__func__, payload_ptr[0], inst->capabilities->cap[PIPE].value);
|
__func__, payload_ptr[0], inst->capabilities->cap[PIPE].value);
|
||||||
break;
|
break;
|
||||||
case HFI_PROP_FENCE:
|
case HFI_PROP_FENCE:
|
||||||
if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value) {
|
if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) {
|
||||||
if (payload_ptr) {
|
if (payload_ptr) {
|
||||||
fence_id = payload_ptr[0];
|
fence_id = payload_ptr[0];
|
||||||
rc = msm_vidc_fence_signal(inst, fence_id);
|
rc = msm_vidc_fence_signal(inst, fence_id);
|
||||||
|
@@ -89,6 +89,16 @@ enum v4l2_mpeg_vidc_blur_types {
|
|||||||
(V4L2_CID_MPEG_VIDC_BASE + 0x12)
|
(V4L2_CID_MPEG_VIDC_BASE + 0x12)
|
||||||
|
|
||||||
/* various Metadata - encoder & decoder */
|
/* various Metadata - encoder & decoder */
|
||||||
|
enum v4l2_mpeg_vidc_metadata_bits {
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE = 0x0,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE = 0x1,
|
||||||
|
V4L2_MPEG_VIDC_META_TX_INPUT = 0x2,
|
||||||
|
V4L2_MPEG_VIDC_META_TX_OUTPUT = 0x4,
|
||||||
|
V4L2_MPEG_VIDC_META_RX_INPUT = 0x8,
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT = 0x10,
|
||||||
|
V4L2_MPEG_VIDC_META_MAX = 0x20,
|
||||||
|
};
|
||||||
|
|
||||||
#define V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS \
|
#define V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS \
|
||||||
(V4L2_CID_MPEG_VIDC_BASE + 0x13)
|
(V4L2_CID_MPEG_VIDC_BASE + 0x13)
|
||||||
#define V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL \
|
#define V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL \
|
||||||
@@ -201,7 +211,7 @@ enum v4l2_mpeg_video_av1_tier {
|
|||||||
#define V4L2_CID_MPEG_VIDC_INPUT_METADATA_VIA_REQUEST_ENABLE \
|
#define V4L2_CID_MPEG_VIDC_INPUT_METADATA_VIA_REQUEST_ENABLE \
|
||||||
(V4L2_CID_MPEG_VIDC_BASE + 0x37)
|
(V4L2_CID_MPEG_VIDC_BASE + 0x37)
|
||||||
/* Enables Output buffer fence id via input metadata */
|
/* Enables Output buffer fence id via input metadata */
|
||||||
#define V4L2_CID_MPEG_VIDC_INPUT_METADATA_OUTBUF_FENCE \
|
#define V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE \
|
||||||
(V4L2_CID_MPEG_VIDC_BASE + 0x38)
|
(V4L2_CID_MPEG_VIDC_BASE + 0x38)
|
||||||
/* Control to set fence id to driver in order get corresponding fence fd */
|
/* Control to set fence id to driver in order get corresponding fence fd */
|
||||||
#define V4L2_CID_MPEG_VIDC_SW_FENCE_ID \
|
#define V4L2_CID_MPEG_VIDC_SW_FENCE_ID \
|
||||||
|
Reference in New Issue
Block a user