Merge "video: driver: Enable bitwise operations for metadata controls"

This commit is contained in:
qctecmdr
2022-03-19 21:19:38 -07:00
committed by Gerrit - the friendly Code Review server
17 changed files with 308 additions and 5446 deletions

10
Kbuild
View File

@@ -8,12 +8,6 @@ LINUXINCLUDE += -include $(VIDEO_ROOT)/config/waipio_video.h \
-I$(VIDEO_ROOT)/driver/platform/waipio/inc -I$(VIDEO_ROOT)/driver/platform/waipio/inc
endif endif
ifeq ($(CONFIG_ARCH_DIWALI), y)
include $(VIDEO_ROOT)/config/diwali_video.conf
LINUXINCLUDE += -include $(VIDEO_ROOT)/config/diwali_video.h \
-I$(VIDEO_ROOT)/driver/platform/diwali/inc
endif
ifeq ($(CONFIG_ARCH_KALAMA), y) ifeq ($(CONFIG_ARCH_KALAMA), y)
include $(VIDEO_ROOT)/config/kalama_video.conf include $(VIDEO_ROOT)/config/kalama_video.conf
LINUXINCLUDE += -include $(VIDEO_ROOT)/config/kalama_video.h \ LINUXINCLUDE += -include $(VIDEO_ROOT)/config/kalama_video.h \
@@ -37,10 +31,6 @@ ifeq ($(CONFIG_MSM_VIDC_KALAMA), y)
msm_video-objs += driver/platform/kalama/src/msm_vidc_kalama.o msm_video-objs += driver/platform/kalama/src/msm_vidc_kalama.o
endif endif
ifeq ($(CONFIG_MSM_VIDC_DIWALI), y)
msm_video-objs += driver/platform/diwali/src/msm_vidc_diwali.o
endif
ifeq ($(CONFIG_MSM_VIDC_IRIS2), y) ifeq ($(CONFIG_MSM_VIDC_IRIS2), y)
LINUXINCLUDE += -I$(VIDEO_ROOT)/driver/variant/iris2/inc LINUXINCLUDE += -I$(VIDEO_ROOT)/driver/variant/iris2/inc
msm_video-objs += driver/variant/iris2/src/msm_vidc_buffer_iris2.o \ msm_video-objs += driver/variant/iris2/src/msm_vidc_buffer_iris2.o \

View File

@@ -1,4 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-only
export CONFIG_MSM_VIDC_DIWALI=y
export CONFIG_MSM_VIDC_IRIS2=y

View File

@@ -1,7 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2020-2021,, The Linux Foundation. All rights reserved.
*/
#define CONFIG_MSM_VIDC_DIWALI 1
#define CONFIG_MSM_VIDC_IRIS2 1

View File

@@ -1,26 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*/
#ifndef _MSM_VIDC_DIWALI_H_
#define _MSM_VIDC_DIWALI_H_
#include "msm_vidc_core.h"
#if defined(CONFIG_MSM_VIDC_DIWALI)
int msm_vidc_init_platform_diwali(struct msm_vidc_core *core, struct device *dev);
int msm_vidc_deinit_platform_diwali(struct msm_vidc_core *core, struct device *dev);
#else
int msm_vidc_init_platform_diwali(struct msm_vidc_core *core, struct device *dev)
{
return -EINVAL;
}
int msm_vidc_deinit_platform_diwali(struct msm_vidc_core *core, struct device *dev)
{
return -EINVAL;
}
#endif
#endif // _MSM_VIDC_DIWALI_H_

File diff suppressed because it is too large Load Diff

View File

@@ -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},
}; };

View File

@@ -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},
}; };

View File

@@ -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"
@@ -100,18 +101,68 @@ 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_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;
} }
@@ -121,23 +172,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;
} }

View File

@@ -376,7 +376,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,

View File

@@ -932,7 +932,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.
@@ -971,7 +971,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;
@@ -980,7 +980,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;
@@ -1029,7 +1029,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++;
@@ -1037,7 +1037,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;
@@ -1069,7 +1069,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[] = {};
@@ -1092,6 +1092,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;
@@ -2055,7 +2069,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

View File

@@ -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,

View File

@@ -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,

View File

@@ -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" },
@@ -1425,10 +1425,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;
@@ -3314,7 +3314,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)
@@ -3795,7 +3795,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);

View File

@@ -17,9 +17,6 @@
#if defined(CONFIG_MSM_VIDC_KALAMA) #if defined(CONFIG_MSM_VIDC_KALAMA)
#include "msm_vidc_kalama.h" #include "msm_vidc_kalama.h"
#endif #endif
#if defined(CONFIG_MSM_VIDC_DIWALI)
#include "msm_vidc_diwali.h"
#endif
#if defined(CONFIG_MSM_VIDC_IRIS2) #if defined(CONFIG_MSM_VIDC_IRIS2)
#include "msm_vidc_iris2.h" #include "msm_vidc_iris2.h"
#endif #endif
@@ -198,16 +195,6 @@ static int msm_vidc_deinit_platform_variant(struct msm_vidc_core *core, struct d
} }
#endif #endif
#if defined(CONFIG_MSM_VIDC_DIWALI)
if (of_device_is_compatible(dev->of_node, "qcom,msm-vidc-diwali")) {
rc = msm_vidc_deinit_platform_diwali(core, dev);
if (rc)
d_vpr_e("%s: failed msm-vidc-diwali with %d\n",
__func__, rc);
return rc;
}
#endif
return rc; return rc;
} }
@@ -239,16 +226,6 @@ static int msm_vidc_init_platform_variant(struct msm_vidc_core *core, struct dev
} }
#endif #endif
#if defined(CONFIG_MSM_VIDC_DIWALI)
if (of_device_is_compatible(dev->of_node, "qcom,msm-vidc-diwali")) {
rc = msm_vidc_init_platform_diwali(core, dev);
if (rc)
d_vpr_e("%s: failed msm-vidc-diwali with %d\n",
__func__, rc);
return rc;
}
#endif
return rc; return rc;
} }

View File

@@ -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,

View File

@@ -1559,7 +1559,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);

View File

@@ -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 \