video: driver: Change v4l2 metadata controls to BITMASK type
Change v4l2 metadata controls to V4L2_CTRL_TYPE_BITMASK type Change-Id: I7f19b5dbf268351d368d9824cb52569e60116ebb Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
This commit is contained in:
@@ -295,10 +295,12 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
|||||||
* to get fence_id in input metadata buffer done.
|
* to get fence_id in input metadata buffer done.
|
||||||
*/
|
*/
|
||||||
{META_OUTBUF_FENCE, DEC, CODECS_ALL,
|
{META_OUTBUF_FENCE, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE,
|
V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE,
|
||||||
HFI_PROP_FENCE},
|
HFI_PROP_FENCE,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Client to do set_ctrl with FENCE_ID to set fence_id
|
* Client to do set_ctrl with FENCE_ID to set fence_id
|
||||||
@@ -1600,16 +1602,22 @@ 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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_CROP_OFFSETS, DEC, AV1,
|
{META_CROP_OFFSETS, DEC, AV1,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{ALL_INTRA, ENC, H264|HEVC,
|
{ALL_INTRA, ENC, H264|HEVC,
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||||
@@ -1639,135 +1647,206 @@ 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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_DPB_MISR, DEC, CODECS_ALL,
|
{META_DPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_OPB_MISR, DEC, CODECS_ALL,
|
{META_OPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_INTERLACE, DEC, H264,
|
{META_INTERLACE, DEC, H264,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
||||||
HFI_PROP_TIMESTAMP},
|
HFI_PROP_TIMESTAMP,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_HIST_INFO, DEC, CODECS_ALL,
|
{META_HIST_INFO, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC|AV1,
|
{META_SEI_MASTERING_DISP, ENC, HEVC|HEIC,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_SEI_CLL, DEC|ENC, HEVC|HEIC|AV1,
|
{META_SEI_MASTERING_DISP, DEC, HEVC|HEIC|AV1,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR,
|
||||||
|
HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
{META_SEI_CLL, ENC, HEVC|HEIC,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_HDR10PLUS, DEC | ENC, HEVC|HEIC|AV1,
|
{META_SEI_CLL, DEC, HEVC|HEIC|AV1,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL,
|
||||||
|
HFI_PROP_SEI_CONTENT_LIGHT_LEVEL,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
{META_HDR10PLUS, ENC, HEVC|HEIC,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
{META_HDR10PLUS, DEC, HEVC|HEIC|AV1,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS,
|
||||||
|
HFI_PROP_SEI_HDR10PLUS_USERDATA,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_EVA_STATS, ENC, CODECS_ALL,
|
{META_EVA_STATS, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
CAP_FLAG_BITMASK,
|
||||||
{0},
|
{0},
|
||||||
{ENH_LAYER_COUNT}},
|
{ENH_LAYER_COUNT}},
|
||||||
|
|
||||||
{META_BUF_TAG, DEC | ENC, CODECS_ALL,
|
{META_BUF_TAG, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
/*
|
||||||
|
* when fence enabled, client needs output buffer_tag
|
||||||
|
* in input metadata buffer done.
|
||||||
|
*/
|
||||||
|
{META_BUF_TAG, DEC, CODECS_ALL,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_TX_OUTPUT | V4L2_MPEG_VIDC_META_RX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG,
|
||||||
|
HFI_PROP_BUFFER_TAG,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
{META_OUTPUT_BUF_TAG, DEC, CODECS_ALL,
|
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
|
||||||
0,
|
|
||||||
HFI_PROP_BUFFER_TAG},
|
|
||||||
|
|
||||||
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_ROI_INFO, ENC, CODECS_ALL,
|
{META_ROI_INFO, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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 | CAP_FLAG_BITMASK,
|
||||||
{BITRATE_MODE, PIX_FMTS},
|
{BITRATE_MODE, PIX_FMTS},
|
||||||
{0},
|
{0},
|
||||||
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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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 | CAP_FLAG_BITMASK,
|
||||||
{BITRATE_MODE, PIX_FMTS},
|
{BITRATE_MODE, PIX_FMTS},
|
||||||
{MIN_QUALITY},
|
{MIN_QUALITY},
|
||||||
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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
/* configure image properties */
|
/* configure image properties */
|
||||||
{FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384},
|
{FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384},
|
||||||
@@ -1858,19 +1937,23 @@ 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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
{COMPLEXITY, ENC, H264 | HEVC,
|
{COMPLEXITY, ENC, H264 | HEVC,
|
||||||
0, 100,
|
0, 100,
|
||||||
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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1489,135 +1489,198 @@ 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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
{META_SEQ_HDR_NAL, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_DPB_MISR, DEC, CODECS_ALL,
|
{META_DPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_OPB_MISR, DEC, CODECS_ALL,
|
{META_OPB_MISR, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_INTERLACE, DEC, H264,
|
{META_INTERLACE, DEC, H264,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
{META_TIMESTAMP, DEC | ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP,
|
||||||
HFI_PROP_TIMESTAMP},
|
HFI_PROP_TIMESTAMP,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
{META_CONCEALED_MB_CNT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_HIST_INFO, DEC, CODECS_ALL,
|
{META_HIST_INFO, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC,
|
{META_SEI_MASTERING_DISP, ENC, HEVC|HEIC,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_SEI_CLL, DEC|ENC, HEVC|HEIC,
|
{META_SEI_MASTERING_DISP, DEC, HEVC|HEIC,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR,
|
||||||
|
HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
{META_SEI_CLL, ENC, HEVC|HEIC,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_HDR10PLUS, DEC | ENC, HEVC|HEIC,
|
{META_SEI_CLL, DEC, HEVC|HEIC,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL,
|
||||||
|
HFI_PROP_SEI_CONTENT_LIGHT_LEVEL,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
{META_HDR10PLUS, ENC, HEVC|HEIC,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
{META_HDR10PLUS, DEC, HEVC|HEIC,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS,
|
||||||
|
HFI_PROP_SEI_HDR10PLUS_USERDATA,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_EVA_STATS, ENC, CODECS_ALL,
|
{META_EVA_STATS, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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,
|
CAP_FLAG_BITMASK,
|
||||||
{0},
|
{0},
|
||||||
{ENH_LAYER_COUNT}},
|
{ENH_LAYER_COUNT}},
|
||||||
|
|
||||||
{META_BUF_TAG, DEC | ENC, CODECS_ALL,
|
{META_BUF_TAG, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
|
{META_BUF_TAG, DEC, CODECS_ALL,
|
||||||
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT |
|
||||||
|
V4L2_MPEG_VIDC_META_TX_OUTPUT | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
|
V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG,
|
||||||
|
HFI_PROP_BUFFER_TAG,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
{META_DPB_TAG_LIST, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
{META_OUTPUT_BUF_TAG, DEC, CODECS_ALL,
|
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
|
||||||
0,
|
|
||||||
HFI_PROP_BUFFER_TAG},
|
|
||||||
|
|
||||||
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
{META_SUBFRAME_OUTPUT, DEC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
{META_ENC_QP_METADATA, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
{META_ROI_INFO, ENC, CODECS_ALL,
|
{META_ROI_INFO, ENC, CODECS_ALL,
|
||||||
V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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 | CAP_FLAG_BITMASK,
|
||||||
{BITRATE_MODE, PIX_FMTS},
|
{BITRATE_MODE, PIX_FMTS},
|
||||||
{0},
|
{0},
|
||||||
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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT,
|
||||||
|
0, 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 | CAP_FLAG_BITMASK,
|
||||||
{BITRATE_MODE, PIX_FMTS},
|
{BITRATE_MODE, PIX_FMTS},
|
||||||
{MIN_QUALITY},
|
{MIN_QUALITY},
|
||||||
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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
|
|
||||||
/* configure image properties */
|
/* configure image properties */
|
||||||
{FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384},
|
{FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384},
|
||||||
@@ -1708,19 +1771,23 @@ 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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
{COMPLEXITY, ENC, H264 | HEVC,
|
{COMPLEXITY, ENC, H264 | HEVC,
|
||||||
0, 100,
|
0, 100,
|
||||||
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_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX,
|
V4L2_MPEG_VIDC_META_DISABLE,
|
||||||
1, V4L2_MPEG_VIDC_META_DISABLE,
|
V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT,
|
||||||
|
0, 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,
|
||||||
|
CAP_FLAG_BITMASK},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -101,6 +101,14 @@ static inline is_internal_buffer(enum msm_vidc_buffer_type buffer_type)
|
|||||||
buffer_type == MSM_VIDC_BUF_PARTIAL_DATA;
|
buffer_type == MSM_VIDC_BUF_PARTIAL_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_meta_cap(u32 cap)
|
||||||
|
{
|
||||||
|
if (cap > INST_CAP_NONE && cap < META_CAP_MAX)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool is_meta_rx_inp_enabled(struct msm_vidc_inst *inst, u32 cap)
|
static inline bool is_meta_rx_inp_enabled(struct msm_vidc_inst *inst, u32 cap)
|
||||||
{
|
{
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
@@ -148,59 +156,30 @@ static inline bool is_meta_tx_out_enabled(struct msm_vidc_inst *inst, u32 cap)
|
|||||||
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;
|
||||||
|
u32 i;
|
||||||
|
|
||||||
if (is_decode_session(inst)) {
|
for (i = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
enabled = is_meta_tx_inp_enabled(inst, META_BUF_TAG) ||
|
if (is_meta_tx_inp_enabled(inst, i) ||
|
||||||
is_meta_rx_inp_enabled(inst, META_BUF_TAG) ||
|
is_meta_rx_inp_enabled(inst, i)) {
|
||||||
is_meta_tx_inp_enabled(inst, META_OUTBUF_FENCE) ||
|
enabled = true;
|
||||||
is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE);
|
break;
|
||||||
} else if (is_encode_session(inst)) {
|
}
|
||||||
enabled = is_meta_tx_inp_enabled(inst, META_SEQ_HDR_NAL) ||
|
|
||||||
is_meta_rx_inp_enabled(inst, META_SEQ_HDR_NAL) ||
|
|
||||||
is_meta_tx_inp_enabled(inst, META_EVA_STATS) ||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool is_output_meta_enabled(struct msm_vidc_inst *inst)
|
static inline bool is_output_meta_enabled(struct msm_vidc_inst *inst)
|
||||||
{
|
{
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
|
u32 i;
|
||||||
|
|
||||||
if (is_decode_session(inst)) {
|
for (i = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
enabled = is_meta_tx_out_enabled(inst, META_BITSTREAM_RESOLUTION) ||
|
if (is_meta_tx_out_enabled(inst, i) ||
|
||||||
is_meta_rx_out_enabled(inst, META_BITSTREAM_RESOLUTION) ||
|
is_meta_rx_out_enabled(inst, i)) {
|
||||||
is_meta_tx_out_enabled(inst, META_CROP_OFFSETS) ||
|
enabled = true;
|
||||||
is_meta_rx_out_enabled(inst, META_CROP_OFFSETS) ||
|
break;
|
||||||
is_meta_tx_out_enabled(inst, META_DPB_MISR) ||
|
}
|
||||||
is_meta_rx_out_enabled(inst, META_DPB_MISR) ||
|
|
||||||
is_meta_tx_out_enabled(inst, META_OPB_MISR) ||
|
|
||||||
is_meta_rx_out_enabled(inst, META_OPB_MISR) ||
|
|
||||||
is_meta_tx_out_enabled(inst, META_INTERLACE) ||
|
|
||||||
is_meta_rx_out_enabled(inst, META_INTERLACE) ||
|
|
||||||
is_meta_tx_out_enabled(inst, META_CONCEALED_MB_CNT) ||
|
|
||||||
is_meta_rx_out_enabled(inst, META_CONCEALED_MB_CNT) ||
|
|
||||||
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)) {
|
|
||||||
enabled = is_meta_tx_out_enabled(inst, META_LTR_MARK_USE) ||
|
|
||||||
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;
|
||||||
@@ -454,7 +433,10 @@ struct msm_vidc_inst *get_inst(struct msm_vidc_core *core,
|
|||||||
void put_inst(struct msm_vidc_inst *inst);
|
void put_inst(struct msm_vidc_inst *inst);
|
||||||
bool msm_vidc_allow_s_fmt(struct msm_vidc_inst *inst, u32 type);
|
bool msm_vidc_allow_s_fmt(struct msm_vidc_inst *inst, u32 type);
|
||||||
bool msm_vidc_allow_s_ctrl(struct msm_vidc_inst *inst, u32 id);
|
bool msm_vidc_allow_s_ctrl(struct msm_vidc_inst *inst, u32 id);
|
||||||
bool msm_vidc_allow_metadata(struct msm_vidc_inst *inst, u32 cap_id);
|
bool msm_vidc_allow_metadata_delivery(struct msm_vidc_inst *inst,
|
||||||
|
u32 cap_id, u32 port);
|
||||||
|
bool msm_vidc_allow_metadata_subscription(struct msm_vidc_inst *inst,
|
||||||
|
u32 cap_id, u32 port);
|
||||||
bool msm_vidc_allow_property(struct msm_vidc_inst *inst, u32 hfi_id);
|
bool msm_vidc_allow_property(struct msm_vidc_inst *inst, u32 hfi_id);
|
||||||
int msm_vidc_update_property_cap(struct msm_vidc_inst *inst, u32 hfi_id,
|
int msm_vidc_update_property_cap(struct msm_vidc_inst *inst, u32 hfi_id,
|
||||||
bool allow);
|
bool allow);
|
||||||
|
@@ -352,6 +352,33 @@ enum msm_vidc_core_capability_type {
|
|||||||
*/
|
*/
|
||||||
enum msm_vidc_inst_capability_type {
|
enum msm_vidc_inst_capability_type {
|
||||||
INST_CAP_NONE = 0,
|
INST_CAP_NONE = 0,
|
||||||
|
/* place all metadata after this line
|
||||||
|
* (Between INST_CAP_NONE and META_CAP_MAX)
|
||||||
|
*/
|
||||||
|
META_SEQ_HDR_NAL,
|
||||||
|
META_BITSTREAM_RESOLUTION,
|
||||||
|
META_CROP_OFFSETS,
|
||||||
|
META_DPB_MISR,
|
||||||
|
META_OPB_MISR,
|
||||||
|
META_INTERLACE,
|
||||||
|
META_OUTBUF_FENCE,
|
||||||
|
META_LTR_MARK_USE,
|
||||||
|
META_TIMESTAMP,
|
||||||
|
META_CONCEALED_MB_CNT,
|
||||||
|
META_HIST_INFO,
|
||||||
|
META_SEI_MASTERING_DISP,
|
||||||
|
META_SEI_CLL,
|
||||||
|
META_HDR10PLUS,
|
||||||
|
META_BUF_TAG,
|
||||||
|
META_DPB_TAG_LIST,
|
||||||
|
META_SUBFRAME_OUTPUT,
|
||||||
|
META_ENC_QP_METADATA,
|
||||||
|
META_DEC_QP_METADATA,
|
||||||
|
META_MAX_NUM_REORDER_FRAMES,
|
||||||
|
META_EVA_STATS,
|
||||||
|
META_ROI_INFO,
|
||||||
|
META_CAP_MAX,
|
||||||
|
/* end of metadata caps */
|
||||||
FRAME_WIDTH,
|
FRAME_WIDTH,
|
||||||
LOSSLESS_FRAME_WIDTH,
|
LOSSLESS_FRAME_WIDTH,
|
||||||
SECURE_FRAME_WIDTH,
|
SECURE_FRAME_WIDTH,
|
||||||
@@ -378,7 +405,6 @@ enum msm_vidc_inst_capability_type {
|
|||||||
MB_CYCLES_FW,
|
MB_CYCLES_FW,
|
||||||
MB_CYCLES_FW_VPP,
|
MB_CYCLES_FW_VPP,
|
||||||
SECURE_MODE,
|
SECURE_MODE,
|
||||||
META_OUTBUF_FENCE,
|
|
||||||
FENCE_ID,
|
FENCE_ID,
|
||||||
FENCE_FD,
|
FENCE_FD,
|
||||||
TS_REORDER,
|
TS_REORDER,
|
||||||
@@ -389,7 +415,6 @@ enum msm_vidc_inst_capability_type {
|
|||||||
SUPER_FRAME,
|
SUPER_FRAME,
|
||||||
HEADER_MODE,
|
HEADER_MODE,
|
||||||
PREPEND_SPSPPS_TO_IDR,
|
PREPEND_SPSPPS_TO_IDR,
|
||||||
META_SEQ_HDR_NAL,
|
|
||||||
WITHOUT_STARTCODE,
|
WITHOUT_STARTCODE,
|
||||||
NAL_LENGTH_FIELD,
|
NAL_LENGTH_FIELD,
|
||||||
REQUEST_I_FRAME,
|
REQUEST_I_FRAME,
|
||||||
@@ -451,32 +476,11 @@ enum msm_vidc_inst_capability_type {
|
|||||||
DRAP,
|
DRAP,
|
||||||
INPUT_METADATA_FD,
|
INPUT_METADATA_FD,
|
||||||
INPUT_META_VIA_REQUEST,
|
INPUT_META_VIA_REQUEST,
|
||||||
META_BITSTREAM_RESOLUTION,
|
|
||||||
META_CROP_OFFSETS,
|
|
||||||
META_DPB_MISR,
|
|
||||||
META_OPB_MISR,
|
|
||||||
META_INTERLACE,
|
|
||||||
ENC_IP_CR,
|
ENC_IP_CR,
|
||||||
META_LTR_MARK_USE,
|
|
||||||
META_TIMESTAMP,
|
|
||||||
META_CONCEALED_MB_CNT,
|
|
||||||
META_HIST_INFO,
|
|
||||||
META_SEI_MASTERING_DISP,
|
|
||||||
META_SEI_CLL,
|
|
||||||
META_HDR10PLUS,
|
|
||||||
META_EVA_STATS,
|
|
||||||
META_BUF_TAG,
|
|
||||||
META_DPB_TAG_LIST,
|
|
||||||
META_OUTPUT_BUF_TAG,
|
|
||||||
META_SUBFRAME_OUTPUT,
|
|
||||||
META_ENC_QP_METADATA,
|
|
||||||
META_DEC_QP_METADATA,
|
|
||||||
COMPLEXITY,
|
COMPLEXITY,
|
||||||
META_MAX_NUM_REORDER_FRAMES,
|
|
||||||
/* place all root(no parent) enums before this line */
|
/* place all root(no parent) enums before this line */
|
||||||
|
|
||||||
PROFILE,
|
PROFILE,
|
||||||
META_ROI_INFO,
|
|
||||||
ENH_LAYER_COUNT,
|
ENH_LAYER_COUNT,
|
||||||
BIT_RATE,
|
BIT_RATE,
|
||||||
LOWLATENCY_MODE,
|
LOWLATENCY_MODE,
|
||||||
@@ -509,7 +513,6 @@ enum msm_vidc_inst_capability_type {
|
|||||||
INPUT_BUF_HOST_MAX_COUNT,
|
INPUT_BUF_HOST_MAX_COUNT,
|
||||||
OUTPUT_BUF_HOST_MAX_COUNT,
|
OUTPUT_BUF_HOST_MAX_COUNT,
|
||||||
/* place all leaf(no child) enums before this line */
|
/* place all leaf(no child) enums before this line */
|
||||||
|
|
||||||
INST_CAP_MAX,
|
INST_CAP_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -520,6 +523,7 @@ enum msm_vidc_inst_capability_flags {
|
|||||||
CAP_FLAG_INPUT_PORT = BIT(2),
|
CAP_FLAG_INPUT_PORT = BIT(2),
|
||||||
CAP_FLAG_OUTPUT_PORT = BIT(3),
|
CAP_FLAG_OUTPUT_PORT = BIT(3),
|
||||||
CAP_FLAG_CLIENT_SET = BIT(4),
|
CAP_FLAG_CLIENT_SET = BIT(4),
|
||||||
|
CAP_FLAG_BITMASK = BIT(5),
|
||||||
};
|
};
|
||||||
|
|
||||||
struct msm_vidc_inst_cap {
|
struct msm_vidc_inst_cap {
|
||||||
|
@@ -931,35 +931,6 @@ static int msm_vdec_subscribe_metadata(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_input_list[] = {
|
|
||||||
META_OUTBUF_FENCE,
|
|
||||||
/*
|
|
||||||
* when fence enabled, client needs output buffer_tag
|
|
||||||
* in input metadata buffer done.
|
|
||||||
*/
|
|
||||||
META_OUTPUT_BUF_TAG,
|
|
||||||
};
|
|
||||||
static const u32 metadata_output_list[] = {
|
|
||||||
META_BITSTREAM_RESOLUTION,
|
|
||||||
META_CROP_OFFSETS,
|
|
||||||
META_DPB_MISR,
|
|
||||||
META_OPB_MISR,
|
|
||||||
META_INTERLACE,
|
|
||||||
META_TIMESTAMP,
|
|
||||||
META_CONCEALED_MB_CNT,
|
|
||||||
META_HIST_INFO,
|
|
||||||
META_SEI_MASTERING_DISP,
|
|
||||||
META_SEI_CLL,
|
|
||||||
META_HDR10PLUS,
|
|
||||||
/*
|
|
||||||
* client needs input buffer tag in output metadata buffer done.
|
|
||||||
*/
|
|
||||||
META_BUF_TAG,
|
|
||||||
META_DPB_TAG_LIST,
|
|
||||||
META_SUBFRAME_OUTPUT,
|
|
||||||
META_DEC_QP_METADATA,
|
|
||||||
META_MAX_NUM_REORDER_FRAMES,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!inst || !inst->capabilities) {
|
if (!inst || !inst->capabilities) {
|
||||||
d_vpr_e("%s: invalid params\n", __func__);
|
d_vpr_e("%s: invalid params\n", __func__);
|
||||||
@@ -970,20 +941,20 @@ static int msm_vdec_subscribe_metadata(struct msm_vidc_inst *inst,
|
|||||||
capability = inst->capabilities;
|
capability = inst->capabilities;
|
||||||
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 = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_rx_inp_enabled(inst, metadata_input_list[i]) &&
|
if (is_meta_rx_inp_enabled(inst, i) &&
|
||||||
msm_vidc_allow_metadata(inst, metadata_input_list[i])) {
|
msm_vidc_allow_metadata_subscription(
|
||||||
payload[count + 1] =
|
inst, i, port)) {
|
||||||
capability->cap[metadata_input_list[i]].hfi_id;
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (port == OUTPUT_PORT) {
|
} else if (port == OUTPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
for (i = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_rx_out_enabled(inst, metadata_output_list[i]) &&
|
if (is_meta_rx_out_enabled(inst, i) &&
|
||||||
msm_vidc_allow_metadata(inst, metadata_output_list[i])) {
|
msm_vidc_allow_metadata_subscription(
|
||||||
payload[count + 1] =
|
inst, i, port)) {
|
||||||
capability->cap[metadata_output_list[i]].hfi_id;
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1011,12 +982,6 @@ static int msm_vdec_set_delivery_mode_metadata(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_input_list[] = {
|
|
||||||
META_BUF_TAG,
|
|
||||||
};
|
|
||||||
static const u32 metadata_output_list[] = {
|
|
||||||
META_OUTPUT_BUF_TAG,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!inst || !inst->capabilities) {
|
if (!inst || !inst->capabilities) {
|
||||||
d_vpr_e("%s: invalid params\n", __func__);
|
d_vpr_e("%s: invalid params\n", __func__);
|
||||||
@@ -1028,19 +993,18 @@ static int msm_vdec_set_delivery_mode_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 = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_tx_inp_enabled(inst, metadata_input_list[i])) {
|
if (is_meta_tx_inp_enabled(inst, i)) {
|
||||||
payload[count + 1] =
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
capability->cap[metadata_input_list[i]].hfi_id;
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (port == OUTPUT_PORT) {
|
} else if (port == OUTPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
for (i = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_tx_out_enabled(inst, metadata_output_list[i]) &&
|
if (is_meta_tx_out_enabled(inst, i) &&
|
||||||
msm_vidc_allow_metadata(inst, metadata_output_list[i])) {
|
msm_vidc_allow_metadata_delivery(
|
||||||
payload[count + 1] =
|
inst, i, port)) {
|
||||||
capability->cap[metadata_output_list[i]].hfi_id;
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -681,15 +681,6 @@ 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_output_list[] = {};
|
|
||||||
static const u32 metadata_input_list[] = {
|
|
||||||
META_SEI_MASTERING_DISP,
|
|
||||||
META_SEI_CLL,
|
|
||||||
META_HDR10PLUS,
|
|
||||||
META_EVA_STATS,
|
|
||||||
META_BUF_TAG,
|
|
||||||
META_ROI_INFO,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!inst || !inst->core) {
|
if (!inst || !inst->core) {
|
||||||
d_vpr_e("%s: invalid params\n", __func__);
|
d_vpr_e("%s: invalid params\n", __func__);
|
||||||
@@ -702,18 +693,16 @@ static int msm_venc_metadata_delivery(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 = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_tx_inp_enabled(inst, metadata_input_list[i])) {
|
if (is_meta_tx_inp_enabled(inst, i)) {
|
||||||
payload[count + 1] =
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
capability->cap[metadata_input_list[i]].hfi_id;
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (port == OUTPUT_PORT) {
|
} else if (port == OUTPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
for (i = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_tx_out_enabled(inst, metadata_output_list[i])) {
|
if (is_meta_tx_out_enabled(inst, i)) {
|
||||||
payload[count + 1] =
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
capability->cap[metadata_output_list[i]].hfi_id;
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -741,15 +730,6 @@ 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_input_list[] = {};
|
|
||||||
static const u32 metadata_output_list[] = {
|
|
||||||
META_LTR_MARK_USE,
|
|
||||||
META_SEQ_HDR_NAL,
|
|
||||||
META_TIMESTAMP,
|
|
||||||
META_BUF_TAG,
|
|
||||||
META_SUBFRAME_OUTPUT,
|
|
||||||
META_ENC_QP_METADATA,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!inst) {
|
if (!inst) {
|
||||||
d_vpr_e("%s: invalid params\n", __func__);
|
d_vpr_e("%s: invalid params\n", __func__);
|
||||||
@@ -761,18 +741,16 @@ static int msm_venc_metadata_subscription(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 = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_rx_inp_enabled(inst, metadata_input_list[i])) {
|
if (is_meta_rx_inp_enabled(inst, i)) {
|
||||||
payload[count + 1] =
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
capability->cap[metadata_input_list[i]].hfi_id;
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (port == OUTPUT_PORT) {
|
} else if (port == OUTPUT_PORT) {
|
||||||
for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) {
|
for (i = INST_CAP_NONE + 1; i < META_CAP_MAX; i++) {
|
||||||
if (is_meta_rx_out_enabled(inst, metadata_output_list[i])) {
|
if (is_meta_rx_out_enabled(inst, i)) {
|
||||||
payload[count + 1] =
|
payload[count + 1] = capability->cap[i].hfi_id;
|
||||||
capability->cap[metadata_output_list[i]].hfi_id;
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -63,32 +63,6 @@ static bool is_priv_ctrl(u32 id)
|
|||||||
return private;
|
return private;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool is_meta_ctrl(u32 id)
|
|
||||||
{
|
|
||||||
return (id == V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_INTERLACE ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO ||
|
|
||||||
id == V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP ||
|
|
||||||
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_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[] = {
|
||||||
"VBR",
|
"VBR",
|
||||||
"CBR",
|
"CBR",
|
||||||
@@ -433,7 +407,7 @@ int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap_id,
|
|||||||
|
|
||||||
prev_value = inst->capabilities->cap[cap_id].value;
|
prev_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
if (is_meta_ctrl(inst->capabilities->cap[cap_id].v4l2_id)) {
|
if (is_meta_cap(cap_id)) {
|
||||||
/*
|
/*
|
||||||
* cumulative control value if client set same metadata
|
* cumulative control value if client set same metadata
|
||||||
* control multiple times.
|
* control multiple times.
|
||||||
@@ -831,10 +805,24 @@ int msm_vidc_ctrl_init(struct msm_vidc_inst *inst)
|
|||||||
ctrl_cfg.max = capability->cap[idx].max;
|
ctrl_cfg.max = capability->cap[idx].max;
|
||||||
ctrl_cfg.min = capability->cap[idx].min;
|
ctrl_cfg.min = capability->cap[idx].min;
|
||||||
ctrl_cfg.ops = core->v4l2_ctrl_ops;
|
ctrl_cfg.ops = core->v4l2_ctrl_ops;
|
||||||
ctrl_cfg.type = (capability->cap[idx].flags &
|
if (capability->cap[idx].flags & CAP_FLAG_MENU)
|
||||||
CAP_FLAG_MENU) ?
|
ctrl_cfg.type = V4L2_CTRL_TYPE_MENU;
|
||||||
V4L2_CTRL_TYPE_MENU :
|
else if (capability->cap[idx].flags & CAP_FLAG_BITMASK)
|
||||||
V4L2_CTRL_TYPE_INTEGER;
|
ctrl_cfg.type = V4L2_CTRL_TYPE_BITMASK;
|
||||||
|
else
|
||||||
|
ctrl_cfg.type = V4L2_CTRL_TYPE_INTEGER;
|
||||||
|
/* allow all metadata modes from v4l2 side */
|
||||||
|
if (is_meta_cap(idx)) {
|
||||||
|
ctrl_cfg.max = V4L2_MPEG_VIDC_META_MAX - 1;
|
||||||
|
/* bitmask is expected to be enabled for meta controls */
|
||||||
|
if (ctrl_cfg.type != V4L2_CTRL_TYPE_BITMASK) {
|
||||||
|
i_vpr_e(inst,
|
||||||
|
"%s: missing bitmask for cap %s\n",
|
||||||
|
__func__, cap_name(idx));
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (ctrl_cfg.type == V4L2_CTRL_TYPE_MENU) {
|
if (ctrl_cfg.type == V4L2_CTRL_TYPE_MENU) {
|
||||||
ctrl_cfg.menu_skip_mask =
|
ctrl_cfg.menu_skip_mask =
|
||||||
~(capability->cap[idx].step_or_mask);
|
~(capability->cap[idx].step_or_mask);
|
||||||
@@ -873,8 +861,8 @@ int msm_vidc_ctrl_init(struct msm_vidc_inst *inst)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ctrl) {
|
if (!ctrl) {
|
||||||
i_vpr_e(inst, "%s: invalid ctrl %#x\n", __func__,
|
i_vpr_e(inst, "%s: invalid ctrl %#x cap %24s\n", __func__,
|
||||||
capability->cap[idx].v4l2_id);
|
capability->cap[idx].v4l2_id, cap_name(idx));
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -1068,25 +1056,22 @@ static int msm_vidc_update_static_property(struct msm_vidc_inst *inst,
|
|||||||
|
|
||||||
msm_vidc_allow_dcvs(inst);
|
msm_vidc_allow_dcvs(inst);
|
||||||
}
|
}
|
||||||
if (is_meta_ctrl(ctrl->id)) {
|
|
||||||
if (cap_id == META_DPB_TAG_LIST) {
|
|
||||||
/*
|
|
||||||
* To subscribe HFI_PROP_DPB_TAG_LIST
|
|
||||||
* data in FBD, HFI_PROP_BUFFER_TAG data
|
|
||||||
* must be delivered via FTB. Hence, update
|
|
||||||
* META_OUTPUT_BUF_TAG to transfer on output port
|
|
||||||
* when META_DPB_TAG_LIST is enbaled.
|
|
||||||
*/
|
|
||||||
if (is_meta_rx_out_enabled(inst, META_DPB_TAG_LIST)) {
|
|
||||||
inst->capabilities->cap[META_OUTPUT_BUF_TAG].value |=
|
|
||||||
V4L2_MPEG_VIDC_META_TX_OUTPUT | V4L2_MPEG_VIDC_META_ENABLE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (is_meta_cap(cap_id)) {
|
||||||
|
/* validate metadata control value against allowed settings */
|
||||||
|
if ((ctrl->val & inst->capabilities->cap[cap_id].max) != ctrl->val) {
|
||||||
|
i_vpr_e(inst,
|
||||||
|
"%s: allowed bits for cap %s is %#x, client set %#x\n",
|
||||||
|
__func__, cap_name(cap_id),
|
||||||
|
inst->capabilities->cap[cap_id].max,
|
||||||
|
ctrl->val);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
rc = msm_vidc_update_meta_port_settings(inst);
|
rc = msm_vidc_update_meta_port_settings(inst);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = msm_vidc_update_buffer_count_if_needed(inst, ctrl);
|
rc = msm_vidc_update_buffer_count_if_needed(inst, ctrl);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
@@ -57,6 +57,29 @@ struct msm_vidc_cap_name {
|
|||||||
|
|
||||||
static const struct msm_vidc_cap_name cap_name_arr[] = {
|
static const struct msm_vidc_cap_name cap_name_arr[] = {
|
||||||
{INST_CAP_NONE, "INST_CAP_NONE" },
|
{INST_CAP_NONE, "INST_CAP_NONE" },
|
||||||
|
{META_SEQ_HDR_NAL, "META_SEQ_HDR_NAL" },
|
||||||
|
{META_BITSTREAM_RESOLUTION, "META_BITSTREAM_RESOLUTION" },
|
||||||
|
{META_CROP_OFFSETS, "META_CROP_OFFSETS" },
|
||||||
|
{META_DPB_MISR, "META_DPB_MISR" },
|
||||||
|
{META_OPB_MISR, "META_OPB_MISR" },
|
||||||
|
{META_INTERLACE, "META_INTERLACE" },
|
||||||
|
{META_OUTBUF_FENCE, "META_OUTBUF_FENCE" },
|
||||||
|
{META_LTR_MARK_USE, "META_LTR_MARK_USE" },
|
||||||
|
{META_TIMESTAMP, "META_TIMESTAMP" },
|
||||||
|
{META_CONCEALED_MB_CNT, "META_CONCEALED_MB_CNT" },
|
||||||
|
{META_HIST_INFO, "META_HIST_INFO" },
|
||||||
|
{META_SEI_MASTERING_DISP, "META_SEI_MASTERING_DISP" },
|
||||||
|
{META_SEI_CLL, "META_SEI_CLL" },
|
||||||
|
{META_HDR10PLUS, "META_HDR10PLUS" },
|
||||||
|
{META_BUF_TAG, "META_BUF_TAG" },
|
||||||
|
{META_DPB_TAG_LIST, "META_DPB_TAG_LIST" },
|
||||||
|
{META_SUBFRAME_OUTPUT, "META_SUBFRAME_OUTPUT" },
|
||||||
|
{META_ENC_QP_METADATA, "META_ENC_QP_METADATA" },
|
||||||
|
{META_DEC_QP_METADATA, "META_DEC_QP_METADATA" },
|
||||||
|
{META_MAX_NUM_REORDER_FRAMES, "META_MAX_NUM_REORDER_FRAMES"},
|
||||||
|
{META_EVA_STATS, "META_EVA_STATS" },
|
||||||
|
{META_ROI_INFO, "META_ROI_INFO" },
|
||||||
|
{META_CAP_MAX, "META_CAP_MAX" },
|
||||||
{FRAME_WIDTH, "FRAME_WIDTH" },
|
{FRAME_WIDTH, "FRAME_WIDTH" },
|
||||||
{LOSSLESS_FRAME_WIDTH, "LOSSLESS_FRAME_WIDTH" },
|
{LOSSLESS_FRAME_WIDTH, "LOSSLESS_FRAME_WIDTH" },
|
||||||
{SECURE_FRAME_WIDTH, "SECURE_FRAME_WIDTH" },
|
{SECURE_FRAME_WIDTH, "SECURE_FRAME_WIDTH" },
|
||||||
@@ -83,7 +106,6 @@ 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" },
|
||||||
{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" },
|
||||||
@@ -94,7 +116,6 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
|
|||||||
{SUPER_FRAME, "SUPER_FRAME" },
|
{SUPER_FRAME, "SUPER_FRAME" },
|
||||||
{HEADER_MODE, "HEADER_MODE" },
|
{HEADER_MODE, "HEADER_MODE" },
|
||||||
{PREPEND_SPSPPS_TO_IDR, "PREPEND_SPSPPS_TO_IDR" },
|
{PREPEND_SPSPPS_TO_IDR, "PREPEND_SPSPPS_TO_IDR" },
|
||||||
{META_SEQ_HDR_NAL, "META_SEQ_HDR_NAL" },
|
|
||||||
{WITHOUT_STARTCODE, "WITHOUT_STARTCODE" },
|
{WITHOUT_STARTCODE, "WITHOUT_STARTCODE" },
|
||||||
{NAL_LENGTH_FIELD, "NAL_LENGTH_FIELD" },
|
{NAL_LENGTH_FIELD, "NAL_LENGTH_FIELD" },
|
||||||
{REQUEST_I_FRAME, "REQUEST_I_FRAME" },
|
{REQUEST_I_FRAME, "REQUEST_I_FRAME" },
|
||||||
@@ -156,30 +177,9 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
|
|||||||
{DRAP, "DRAP" },
|
{DRAP, "DRAP" },
|
||||||
{INPUT_METADATA_FD, "INPUT_METADATA_FD" },
|
{INPUT_METADATA_FD, "INPUT_METADATA_FD" },
|
||||||
{INPUT_META_VIA_REQUEST, "INPUT_META_VIA_REQUEST" },
|
{INPUT_META_VIA_REQUEST, "INPUT_META_VIA_REQUEST" },
|
||||||
{META_BITSTREAM_RESOLUTION, "META_BITSTREAM_RESOLUTION" },
|
|
||||||
{META_CROP_OFFSETS, "META_CROP_OFFSETS" },
|
|
||||||
{META_DPB_MISR, "META_DPB_MISR" },
|
|
||||||
{META_OPB_MISR, "META_OPB_MISR" },
|
|
||||||
{META_INTERLACE, "META_INTERLACE" },
|
|
||||||
{ENC_IP_CR, "ENC_IP_CR" },
|
{ENC_IP_CR, "ENC_IP_CR" },
|
||||||
{META_LTR_MARK_USE, "META_LTR_MARK_USE" },
|
|
||||||
{META_TIMESTAMP, "META_TIMESTAMP" },
|
|
||||||
{META_CONCEALED_MB_CNT, "META_CONCEALED_MB_CNT" },
|
|
||||||
{META_HIST_INFO, "META_HIST_INFO" },
|
|
||||||
{META_SEI_MASTERING_DISP, "META_SEI_MASTERING_DISP" },
|
|
||||||
{META_SEI_CLL, "META_SEI_CLL" },
|
|
||||||
{META_HDR10PLUS, "META_HDR10PLUS" },
|
|
||||||
{META_EVA_STATS, "META_EVA_STATS" },
|
|
||||||
{META_BUF_TAG, "META_BUF_TAG" },
|
|
||||||
{META_DPB_TAG_LIST, "META_DPB_TAG_LIST" },
|
|
||||||
{META_OUTPUT_BUF_TAG, "META_OUTPUT_BUF_TAG" },
|
|
||||||
{META_SUBFRAME_OUTPUT, "META_SUBFRAME_OUTPUT" },
|
|
||||||
{META_ENC_QP_METADATA, "META_ENC_QP_METADATA" },
|
|
||||||
{META_DEC_QP_METADATA, "META_DEC_QP_METADATA" },
|
|
||||||
{COMPLEXITY, "COMPLEXITY" },
|
{COMPLEXITY, "COMPLEXITY" },
|
||||||
{META_MAX_NUM_REORDER_FRAMES, "META_MAX_NUM_REORDER_FRAMES"},
|
|
||||||
{PROFILE, "PROFILE" },
|
{PROFILE, "PROFILE" },
|
||||||
{META_ROI_INFO, "META_ROI_INFO" },
|
|
||||||
{ENH_LAYER_COUNT, "ENH_LAYER_COUNT" },
|
{ENH_LAYER_COUNT, "ENH_LAYER_COUNT" },
|
||||||
{BIT_RATE, "BIT_RATE" },
|
{BIT_RATE, "BIT_RATE" },
|
||||||
{LOWLATENCY_MODE, "LOWLATENCY_MODE" },
|
{LOWLATENCY_MODE, "LOWLATENCY_MODE" },
|
||||||
@@ -1379,7 +1379,14 @@ exit:
|
|||||||
return allow;
|
return allow;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool msm_vidc_allow_metadata(struct msm_vidc_inst *inst, u32 cap_id)
|
bool msm_vidc_allow_metadata_delivery(struct msm_vidc_inst *inst, u32 cap_id,
|
||||||
|
u32 port)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool msm_vidc_allow_metadata_subscription(struct msm_vidc_inst *inst, u32 cap_id,
|
||||||
|
u32 port)
|
||||||
{
|
{
|
||||||
bool is_allowed = true;
|
bool is_allowed = true;
|
||||||
|
|
||||||
@@ -1388,19 +1395,42 @@ bool msm_vidc_allow_metadata(struct msm_vidc_inst *inst, u32 cap_id)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (cap_id) {
|
if (port == INPUT_PORT) {
|
||||||
case META_OUTPUT_BUF_TAG:
|
switch (cap_id) {
|
||||||
case META_DPB_TAG_LIST:
|
case META_BUF_TAG:
|
||||||
if (!is_ubwc_colorformat(inst->capabilities->cap[PIX_FMTS].value)) {
|
case META_BITSTREAM_RESOLUTION:
|
||||||
i_vpr_h(inst,
|
case META_CROP_OFFSETS:
|
||||||
"%s: cap: %24s not allowed for split mode\n",
|
case META_SEI_MASTERING_DISP:
|
||||||
__func__, cap_name(cap_id));
|
case META_SEI_CLL:
|
||||||
is_allowed = false;
|
case META_HDR10PLUS:
|
||||||
|
if (!is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) {
|
||||||
|
i_vpr_h(inst,
|
||||||
|
"%s: cap: %24s not allowed as output buffer fence is disabled\n",
|
||||||
|
__func__, cap_name(cap_id));
|
||||||
|
is_allowed = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
is_allowed = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
} else if (port == OUTPUT_PORT) {
|
||||||
default:
|
switch (cap_id) {
|
||||||
is_allowed = true;
|
case META_DPB_TAG_LIST:
|
||||||
break;
|
if (!is_ubwc_colorformat(inst->capabilities->cap[PIX_FMTS].value)) {
|
||||||
|
i_vpr_h(inst,
|
||||||
|
"%s: cap: %24s not allowed for split mode\n",
|
||||||
|
__func__, cap_name(cap_id));
|
||||||
|
is_allowed = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
is_allowed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
i_vpr_e(inst, "%s: invalid port %d\n", __func__, port);
|
||||||
|
is_allowed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return is_allowed;
|
return is_allowed;
|
||||||
|
Reference in New Issue
Block a user