Merge "video: driver: misc video changes"

This commit is contained in:
qctecmdr
2022-02-03 14:48:53 -08:00
committed by Gerrit - the friendly Code Review server
14 changed files with 415 additions and 416 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -141,7 +141,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
*/
MSM_VIDC_FMT_NV12C,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{META_ROI_INFO}},
{PIX_FMTS, ENC, HEVC,
@@ -155,7 +155,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
*/
MSM_VIDC_FMT_NV12C,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES
* Since parent -> children relationship for these cap_ids is
@@ -172,7 +172,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C,
MSM_VIDC_FMT_NV12C,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{PROFILE}},
@@ -202,7 +202,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
0, 64, 1, 4,
V4L2_CID_MIN_BUFFERS_FOR_CAPTURE,
HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
/* (8192 * 4320) / 256 */
{MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240},
@@ -231,7 +231,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, (DEFAULT_FPS << 16),
0,
HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_q16},
@@ -279,7 +279,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_HFLIP,
HFI_PROP_FLIP,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0},
{0},
@@ -301,7 +301,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
0, 270, 90, 0,
V4L2_CID_ROTATE,
HFI_PROP_ROTATION,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0},
{0},
NULL, msm_vidc_set_rotation},
@@ -324,7 +324,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
V4L2_CID_MPEG_VIDEO_HEADER_MODE,
HFI_PROP_SEQ_HEADER_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
NULL, msm_vidc_set_header_mode},
@@ -346,7 +346,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE,
HFI_PROP_NAL_LENGTH_FIELD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_nal_length},
@@ -397,7 +397,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE,
@@ -415,7 +415,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT,
@@ -512,7 +512,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX,
HFI_PROP_CSC_MATRIX,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_csc_custom_matrix},
@@ -565,7 +565,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0,
V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID,
HFI_PROP_BASELAYER_PRIORITYID,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
{IR_RANDOM, ENC, H264|HEVC,
0, INT_MAX, 1, 0,
@@ -581,7 +581,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_AU_DELIMITER,
HFI_PROP_AUD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_u32},
@@ -661,7 +661,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
V4L2_CID_MPEG_VIDEO_H264_MIN_QP,
HFI_PROP_MIN_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_min_qp},
@@ -701,7 +701,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
V4L2_CID_MPEG_VIDEO_H264_MAX_QP,
HFI_PROP_MAX_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_max_qp},
@@ -1001,7 +1001,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{ENTROPY_MODE, TRANSFORM_8X8},
NULL, msm_vidc_set_u32_enum},
@@ -1017,7 +1017,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{ENTROPY_MODE},
NULL, msm_vidc_set_u32_enum},
@@ -1045,7 +1045,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_VP9_PROFILE_0,
V4L2_CID_MPEG_VIDEO_VP9_PROFILE,
HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1068,7 +1068,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
V4L2_CID_MPEG_VIDEO_VP9_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1080,7 +1080,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN,
V4L2_CID_MPEG_VIDEO_AV1_PROFILE,
HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1109,7 +1109,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_AV1_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_AV1_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1122,7 +1122,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_AV1_TIER_HIGH,
V4L2_CID_MPEG_VIDEO_AV1_TIER,
HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1152,7 +1152,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_H264_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1181,7 +1181,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_H264_LEVEL_5_0,
V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_level},
@@ -1204,7 +1204,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1226,7 +1226,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_level},
@@ -1243,7 +1243,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1257,7 +1257,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
NULL, msm_vidc_set_deblock_mode},
@@ -1270,7 +1270,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
NULL, msm_vidc_set_deblock_mode},
@@ -1322,7 +1322,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_ENABLE,
V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE,
0,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
{TRANSFORM_8X8, ENC, H264,
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
@@ -1338,7 +1338,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, MAX_CHROMA_QP_OFFSET,
V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET,
HFI_PROP_CHROMA_QP_OFFSET,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
msm_vidc_adjust_chroma_qp_index_offset,
msm_vidc_set_chroma_qp_index_offset},
@@ -1348,26 +1348,26 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE,
HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT},
CAP_FLAG_INPUT_PORT},
{DISPLAY_DELAY, DEC, H264|HEVC|VP9|AV1,
0, 1, 1, 0,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY,
HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT},
CAP_FLAG_INPUT_PORT},
/* conceal color */
{CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_8BIT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
{CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_10BIT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
// TODO
{STAGE, DEC|ENC, CODECS_ALL,
@@ -1376,7 +1376,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MSM_VIDC_STAGE_2,
0,
HFI_PROP_STAGE,
CAP_FLAG_ROOT,
0,
{0}, {0},
NULL, msm_vidc_set_stage},
@@ -1396,7 +1396,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MSM_VIDC_PIPE_4,
0,
HFI_PROP_PIPE,
CAP_FLAG_ROOT,
0,
{0}, {0},
NULL, msm_vidc_set_pipe},
{POC, DEC, H264, 0, 18, 1, 1},
@@ -1454,7 +1454,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
0, 2, 1, 1,
V4L2_CID_MPEG_VIDC_PRIORITY,
HFI_PROP_SESSION_PRIORITY,
CAP_FLAG_ROOT | CAP_FLAG_DYNAMIC_ALLOWED,
CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0},
msm_vidc_adjust_session_priority, msm_vidc_set_session_priority},
@@ -1590,7 +1590,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS,
HFI_PROP_EVA_STAT_INFO,
CAP_FLAG_ROOT,
0,
{0},
{ENH_LAYER_COUNT}},
@@ -1666,7 +1666,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_CQ,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{TIME_DELTA_BASED_RC, CONSTANT_QUALITY},
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
@@ -1675,7 +1675,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC,
HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{BITRATE_MODE}, {0},
msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32},
{CONSTANT_QUALITY, ENC, HEIC,
@@ -1691,14 +1691,14 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_ENABLE,
0,
HFI_PROP_HEIC_GRID_ENABLE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_u32},
{GOP_SIZE, ENC, HEIC,
0, INT_MAX, 1, 0 /* all intra */,
V4L2_CID_MPEG_VIDEO_GOP_SIZE,
HFI_PROP_MAX_GOP_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0},
NULL, msm_vidc_set_u32},
@@ -1707,7 +1707,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_B_FRAMES,
HFI_PROP_MAX_B_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_u32},
{PIX_FMTS, ENC, HEIC,
@@ -1716,7 +1716,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_P010,
MSM_VIDC_FMT_NV12,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{PROFILE}},
{HEVC_TIER, ENC|DEC, HEIC,
@@ -1726,7 +1726,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_HEVC_TIER_MAIN,
V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1735,7 +1735,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, (MINIMUM_FPS << 16),
0,
HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_q16},
{META_SUBFRAME_OUTPUT, ENC, HEIC,

View File

@@ -138,7 +138,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
*/
MSM_VIDC_FMT_NV12C,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{META_ROI_INFO}},
{PIX_FMTS, ENC, HEVC,
@@ -152,7 +152,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
*/
MSM_VIDC_FMT_NV12C,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES
* Since parent -> children relationship for these cap_ids is
@@ -169,7 +169,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C,
MSM_VIDC_FMT_NV12C,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{PROFILE}},
@@ -192,7 +192,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
0, 64, 1, 4,
V4L2_CID_MIN_BUFFERS_FOR_CAPTURE,
HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
/* (8192 * 4320) / 256 */
{MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240},
@@ -221,7 +221,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, (DEFAULT_FPS << 16),
0,
HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_q16},
@@ -274,7 +274,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_HFLIP,
HFI_PROP_FLIP,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0},
{0},
@@ -296,7 +296,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
0, 270, 90, 0,
V4L2_CID_ROTATE,
HFI_PROP_ROTATION,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0},
{0},
NULL, msm_vidc_set_rotation},
@@ -319,7 +319,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
V4L2_CID_MPEG_VIDEO_HEADER_MODE,
HFI_PROP_SEQ_HEADER_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
NULL, msm_vidc_set_header_mode},
@@ -341,7 +341,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE,
HFI_PROP_NAL_LENGTH_FIELD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_nal_length},
@@ -386,7 +386,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE,
@@ -404,7 +404,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT,
@@ -500,7 +500,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX,
HFI_PROP_CSC_MATRIX,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_csc_custom_matrix},
@@ -553,7 +553,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0,
V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID,
HFI_PROP_BASELAYER_PRIORITYID,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
{IR_RANDOM, ENC, H264|HEVC,
0, INT_MAX, 1, 0,
@@ -569,7 +569,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_AU_DELIMITER,
HFI_PROP_AUD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_u32},
@@ -649,7 +649,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
V4L2_CID_MPEG_VIDEO_H264_MIN_QP,
HFI_PROP_MIN_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_min_qp},
@@ -689,7 +689,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
V4L2_CID_MPEG_VIDEO_H264_MAX_QP,
HFI_PROP_MAX_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_max_qp},
@@ -984,7 +984,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{ENTROPY_MODE, TRANSFORM_8X8},
NULL, msm_vidc_set_u32_enum},
@@ -1000,7 +1000,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{ENTROPY_MODE},
NULL, msm_vidc_set_u32_enum},
@@ -1028,7 +1028,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_VP9_PROFILE_0,
V4L2_CID_MPEG_VIDEO_VP9_PROFILE,
HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1051,7 +1051,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
V4L2_CID_MPEG_VIDEO_VP9_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1081,7 +1081,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_H264_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1110,7 +1110,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_H264_LEVEL_5_0,
V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_level},
@@ -1133,7 +1133,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1155,7 +1155,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_level},
@@ -1172,7 +1172,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1186,7 +1186,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
NULL, msm_vidc_set_deblock_mode},
@@ -1199,7 +1199,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
NULL, msm_vidc_set_deblock_mode},
@@ -1251,7 +1251,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_ENABLE,
V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE,
0,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
{TRANSFORM_8X8, ENC, H264,
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
@@ -1267,7 +1267,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, MAX_CHROMA_QP_OFFSET,
V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET,
HFI_PROP_CHROMA_QP_OFFSET,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
msm_vidc_adjust_chroma_qp_index_offset,
msm_vidc_set_chroma_qp_index_offset},
@@ -1277,26 +1277,26 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE,
HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT},
CAP_FLAG_INPUT_PORT},
{DISPLAY_DELAY, DEC, H264|HEVC|VP9,
0, 1, 1, 0,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY,
HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT},
CAP_FLAG_INPUT_PORT},
/* conceal color */
{CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_8BIT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
{CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_10BIT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
CAP_FLAG_OUTPUT_PORT},
// TODO
{STAGE, DEC|ENC, CODECS_ALL,
@@ -1305,7 +1305,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MSM_VIDC_STAGE_2,
0,
HFI_PROP_STAGE,
CAP_FLAG_ROOT,
0,
{0}, {0},
NULL, msm_vidc_set_stage},
@@ -1325,7 +1325,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MSM_VIDC_PIPE_4,
0,
HFI_PROP_PIPE,
CAP_FLAG_ROOT,
0,
{0}, {0},
NULL, msm_vidc_set_pipe},
{POC, DEC, H264, 0, 18, 1, 1},
@@ -1383,7 +1383,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
0, 2, 1, 1,
V4L2_CID_MPEG_VIDC_PRIORITY,
HFI_PROP_SESSION_PRIORITY,
CAP_FLAG_ROOT | CAP_FLAG_DYNAMIC_ALLOWED,
CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0},
msm_vidc_adjust_session_priority, msm_vidc_set_session_priority},
@@ -1482,7 +1482,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS,
HFI_PROP_EVA_STAT_INFO,
CAP_FLAG_ROOT,
0,
{0},
{ENH_LAYER_COUNT}},
@@ -1558,7 +1558,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_CQ,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{TIME_DELTA_BASED_RC, CONSTANT_QUALITY},
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
@@ -1567,7 +1567,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC,
HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{BITRATE_MODE}, {0},
msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32},
{CONSTANT_QUALITY, ENC, HEIC,
@@ -1583,14 +1583,14 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_ENABLE,
0,
HFI_PROP_HEIC_GRID_ENABLE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_u32},
{GOP_SIZE, ENC, HEIC,
0, INT_MAX, 1, 0 /* all intra */,
V4L2_CID_MPEG_VIDEO_GOP_SIZE,
HFI_PROP_MAX_GOP_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0},
NULL, msm_vidc_set_u32},
@@ -1599,7 +1599,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_B_FRAMES,
HFI_PROP_MAX_B_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_u32},
{PIX_FMTS, ENC, HEIC,
@@ -1608,7 +1608,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_P010,
MSM_VIDC_FMT_NV12,
0, 0,
CAP_FLAG_ROOT,
0,
{0},
{PROFILE}},
{HEVC_TIER, ENC|DEC, HEIC,
@@ -1618,7 +1618,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_HEVC_TIER_MAIN,
V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{0},
NULL, msm_vidc_set_u32_enum},
@@ -1627,7 +1627,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, (MINIMUM_FPS << 16),
0,
HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT,
CAP_FLAG_OUTPUT_PORT,
{0}, {0},
NULL, msm_vidc_set_q16},
{META_SUBFRAME_OUTPUT, ENC, HEIC,

View File

@@ -252,7 +252,7 @@ static inline bool is_secure_region(enum msm_vidc_buffer_region region)
region == MSM_VIDC_NON_SECURE_PIXEL);
}
const char *cap_name(enum msm_vidc_inst_capability_type cap);
const char *cap_name(enum msm_vidc_inst_capability_type cap_id);
const char *v4l2_pixelfmt_name(u32 pixelfmt);
const char *v4l2_type_name(u32 port);
void print_vidc_buffer(u32 tag, const char *tag_str, const char *str, struct msm_vidc_inst *inst,

View File

@@ -110,8 +110,6 @@ struct msm_vidc_inst {
struct v4l2_m2m_ctx *m2m_ctx;
struct v4l2_ctrl **ctrls;
u32 num_ctrls;
struct msm_vidc_inst_cap_entry children;
struct msm_vidc_inst_cap_entry firmware;
enum hfi_rate_control hfi_rc_type;
enum hfi_layer_encoding_type hfi_layer_type;
bool request;
@@ -143,7 +141,9 @@ struct msm_vidc_inst {
struct list_head response_works; /* list of struct response_work */
struct list_head enc_input_crs;
struct list_head dmabuf_tracker; /* list of struct msm_memory_dmabuf */
struct list_head caps_list; /* list of struct msm_vidc_inst_cap_entry */
struct list_head caps_list;
struct list_head children_list;
struct list_head firmware_list;
bool once_per_session_set;
bool ipsc_properties_set;
bool opsc_properties_set;

View File

@@ -352,9 +352,9 @@ enum msm_vidc_inst_capability_type {
MIN_BUFFERS_INPUT,
MIN_BUFFERS_OUTPUT,
MBPF,
LOSSLESS_MBPF,
BATCH_MBPF,
BATCH_FPS,
LOSSLESS_MBPF,
SECURE_MBPF,
MBPS,
POWER_SAVE_MBPS,
@@ -368,86 +368,59 @@ enum msm_vidc_inst_capability_type {
MB_CYCLES_FW_VPP,
SECURE_MODE,
TS_REORDER,
SLICE_INTERFACE,
HFLIP,
VFLIP,
ROTATION,
SUPER_FRAME,
SLICE_INTERFACE,
HEADER_MODE,
PREPEND_SPSPPS_TO_IDR,
META_SEQ_HDR_NAL,
WITHOUT_STARTCODE,
NAL_LENGTH_FIELD,
REQUEST_I_FRAME,
BIT_RATE,
BITRATE_MODE,
LOSSLESS,
FRAME_SKIP_MODE,
FRAME_RC_ENABLE,
CONSTANT_QUALITY,
GOP_SIZE,
GOP_CLOSURE,
B_FRAME,
BLUR_TYPES,
BLUR_RESOLUTION,
CSC,
CSC_CUSTOM_MATRIX,
GRID,
LOWLATENCY_MODE,
LTR_COUNT,
USE_LTR,
MARK_LTR,
BASELAYER_PRIORITY,
IR_RANDOM,
AU_DELIMITER,
TIME_DELTA_BASED_RC,
CONTENT_ADAPTIVE_CODING,
BITRATE_BOOST,
MIN_QUALITY,
VBV_DELAY,
PEAK_BITRATE,
MIN_FRAME_QP,
GRID,
I_FRAME_MIN_QP,
P_FRAME_MIN_QP,
B_FRAME_MIN_QP,
MAX_FRAME_QP,
I_FRAME_MAX_QP,
P_FRAME_MAX_QP,
B_FRAME_MAX_QP,
I_FRAME_QP,
P_FRAME_QP,
B_FRAME_QP,
LAYER_TYPE,
LAYER_ENABLE,
ENH_LAYER_COUNT,
L0_BR,
L1_BR,
L2_BR,
L3_BR,
L4_BR,
L5_BR,
ENTROPY_MODE,
PROFILE,
LEVEL,
HEVC_TIER,
AV1_TIER,
LF_MODE,
LF_ALPHA,
LF_BETA,
SLICE_MODE,
SLICE_MAX_BYTES,
SLICE_MAX_MB,
MB_RC,
TRANSFORM_8X8,
CHROMA_QP_INDEX_OFFSET,
DISPLAY_DELAY_ENABLE,
DISPLAY_DELAY,
CONCEAL_COLOR_8BIT,
CONCEAL_COLOR_10BIT,
STAGE,
LF_MODE,
LF_ALPHA,
LF_BETA,
SLICE_MAX_BYTES,
SLICE_MAX_MB,
MB_RC,
CHROMA_QP_INDEX_OFFSET,
PIPE,
POC,
QUALITY_MODE,
CODED_FRAMES,
BIT_DEPTH,
CODEC_CONFIG,
@@ -456,20 +429,20 @@ enum msm_vidc_inst_capability_type {
DEFAULT_HEADER,
RAP_FRAME,
SEQ_CHANGE_AT_SYNC_FRAME,
QUALITY_MODE,
PRIORITY,
ENC_IP_CR,
DPB_LIST,
FILM_GRAIN,
SUPER_BLOCK,
DRAP,
ALL_INTRA,
INPUT_METADATA_FD,
META_BITSTREAM_RESOLUTION,
META_CROP_OFFSETS,
META_LTR_MARK_USE,
META_DPB_MISR,
META_OPB_MISR,
META_INTERLACE,
ENC_IP_CR,
META_LTR_MARK_USE,
META_TIMESTAMP,
META_CONCEALED_MB_CNT,
META_HIST_INFO,
@@ -482,25 +455,51 @@ enum msm_vidc_inst_capability_type {
META_OUTPUT_BUF_TAG,
META_SUBFRAME_OUTPUT,
META_ENC_QP_METADATA,
META_ROI_INFO,
META_DEC_QP_METADATA,
COMPLEXITY,
META_MAX_NUM_REORDER_FRAMES,
PROFILE,
MIN_FRAME_QP,
MAX_FRAME_QP,
I_FRAME_QP,
P_FRAME_QP,
B_FRAME_QP,
META_ROI_INFO,
TIME_DELTA_BASED_RC,
CONSTANT_QUALITY,
ENH_LAYER_COUNT,
BIT_RATE,
VBV_DELAY,
PEAK_BITRATE,
LOWLATENCY_MODE,
ENTROPY_MODE,
TRANSFORM_8X8,
GOP_SIZE,
B_FRAME,
BLUR_RESOLUTION,
STAGE,
ALL_INTRA,
MIN_QUALITY,
LTR_COUNT,
IR_RANDOM,
BITRATE_BOOST,
SLICE_MODE,
CONTENT_ADAPTIVE_CODING,
BLUR_TYPES,
INST_CAP_MAX,
};
enum msm_vidc_inst_capability_flags {
CAP_FLAG_NONE = 0,
CAP_FLAG_ROOT = BIT(0),
CAP_FLAG_DYNAMIC_ALLOWED = BIT(1),
CAP_FLAG_MENU = BIT(2),
CAP_FLAG_INPUT_PORT = BIT(3),
CAP_FLAG_OUTPUT_PORT = BIT(4),
CAP_FLAG_CLIENT_SET = BIT(5),
CAP_FLAG_DYNAMIC_ALLOWED = BIT(0),
CAP_FLAG_MENU = BIT(1),
CAP_FLAG_INPUT_PORT = BIT(2),
CAP_FLAG_OUTPUT_PORT = BIT(3),
CAP_FLAG_CLIENT_SET = BIT(4),
};
struct msm_vidc_inst_cap {
enum msm_vidc_inst_capability_type cap;
enum msm_vidc_inst_capability_type cap_id;
s32 min;
s32 max;
u32 step_or_mask;

View File

@@ -56,8 +56,8 @@ void msm_vidc_memory_put_dmabuf_completely(struct msm_vidc_inst *inst,
struct msm_memory_dmabuf *buf);
int msm_memory_pools_init(struct msm_vidc_inst *inst);
void msm_memory_pools_deinit(struct msm_vidc_inst *inst);
void *msm_memory_alloc(struct msm_vidc_inst *inst,
void *msm_memory_pool_alloc(struct msm_vidc_inst *inst,
enum msm_memory_pool_type type);
void msm_memory_free(struct msm_vidc_inst *inst, void *vidc_buf);
void msm_memory_pool_free(struct msm_vidc_inst *inst, void *vidc_buf);
#endif // _MSM_VIDC_MEMORY_H_

View File

@@ -17,7 +17,7 @@ struct msm_platform_core_capability {
};
struct msm_platform_inst_capability {
enum msm_vidc_inst_capability_type cap;
enum msm_vidc_inst_capability_type cap_id;
enum msm_vidc_domain_type domain;
enum msm_vidc_codec_type codec;
s32 min;

View File

@@ -2163,7 +2163,7 @@ int msm_vdec_handle_release_buffer(struct msm_vidc_inst *inst,
inst->debug_count.ebd, inst->debug_count.ftb, inst->debug_count.fbd);
/* delete the buffer from release list */
list_del(&buf->list);
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
return rc;
}

View File

@@ -942,8 +942,8 @@ void *msm_vidc_open(void *vidc_core, u32 session_type)
INIT_LIST_HEAD(&inst->mappings.dpb.list);
INIT_LIST_HEAD(&inst->mappings.persist.list);
INIT_LIST_HEAD(&inst->mappings.vpss.list);
INIT_LIST_HEAD(&inst->children.list);
INIT_LIST_HEAD(&inst->firmware.list);
INIT_LIST_HEAD(&inst->children_list);
INIT_LIST_HEAD(&inst->firmware_list);
INIT_LIST_HEAD(&inst->enc_input_crs);
INIT_LIST_HEAD(&inst->dmabuf_tracker);
for (i = 0; i < MAX_SIGNAL; i++)

View File

@@ -265,7 +265,7 @@ static enum msm_vidc_inst_capability_type msm_vidc_get_cap_id(
capability = inst->capabilities;
do {
if (capability->cap[i].v4l2_id == id) {
cap_id = capability->cap[i].cap;
cap_id = capability->cap[i].cap_id;
break;
}
i++;
@@ -282,7 +282,7 @@ static int msm_vidc_add_capid_to_list(struct msm_vidc_inst *inst,
/* skip adding if cap_id already present in list */
if (type & FW_LIST) {
list_for_each_entry(curr_node, &inst->firmware.list, list) {
list_for_each_entry(curr_node, &inst->firmware_list, list) {
if (curr_node->cap_id == cap_id) {
i_vpr_l(inst,
"%s: cap[%d] %s already present in FW_LIST\n",
@@ -299,9 +299,9 @@ static int msm_vidc_add_capid_to_list(struct msm_vidc_inst *inst,
}
entry->cap_id = cap_id;
if (type & CHILD_LIST)
list_add_tail(&entry->list, &inst->children.list);
list_add_tail(&entry->list, &inst->children_list);
if (type & FW_LIST)
list_add_tail(&entry->list, &inst->firmware.list);
list_add_tail(&entry->list, &inst->firmware_list);
return 0;
}
@@ -326,14 +326,14 @@ static int msm_vidc_add_children(struct msm_vidc_inst *inst,
}
static bool is_parent_available(struct msm_vidc_inst *inst,
u32 cap, u32 check_parent, const char* func)
u32 cap_id, u32 check_parent, const char *func)
{
int i = 0;
u32 cap_parent;
while (i < MAX_CAP_PARENTS &&
inst->capabilities->cap[cap].parents[i]) {
cap_parent = inst->capabilities->cap[cap].parents[i];
inst->capabilities->cap[cap_id].parents[i]) {
cap_parent = inst->capabilities->cap[cap_id].parents[i];
if (cap_parent == check_parent) {
return true;
}
@@ -342,11 +342,11 @@ static bool is_parent_available(struct msm_vidc_inst* inst,
i_vpr_e(inst,
"%s: missing parent %s for %s\n",
func, cap_name(check_parent), cap_name(cap));
func, cap_name(check_parent), cap_name(cap_id));
return false;
}
int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap,
int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap_id,
s32 adjusted_val, const char *func)
{
if (!inst || !inst->capabilities) {
@@ -354,23 +354,23 @@ int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap,
return -EINVAL;
}
if (inst->capabilities->cap[cap].value != adjusted_val)
if (inst->capabilities->cap[cap_id].value != adjusted_val)
i_vpr_h(inst,
"%s: updated database: name: %s, value: %#x -> %#x\n",
func, cap_name(cap),
inst->capabilities->cap[cap].value, adjusted_val);
func, cap_name(cap_id),
inst->capabilities->cap[cap_id].value, adjusted_val);
inst->capabilities->cap[cap].value = adjusted_val;
inst->capabilities->cap[cap_id].value = adjusted_val;
return 0;
}
int msm_vidc_get_parent_value(struct msm_vidc_inst* inst,
u32 cap, u32 parent, s32 *value, const char *func)
u32 cap_id, u32 parent, s32 *value, const char *func)
{
int rc = 0;
if (is_parent_available(inst, cap, parent, func)) {
if (is_parent_available(inst, cap_id, parent, func)) {
switch (parent) {
case BITRATE_MODE:
*value = inst->hfi_rc_type;
@@ -438,7 +438,7 @@ static int msm_vidc_adjust_property(struct msm_vidc_inst *inst,
* skip for uninitialized cap properties.
* Eg: Skip Tramform 8x8 cap that is uninitialized for HEVC codec
*/
if (!capability->cap[cap_id].cap)
if (!capability->cap[cap_id].cap_id)
return 0;
if (capability->cap[cap_id].adjust) {
@@ -490,8 +490,8 @@ static int msm_vidc_adjust_dynamic_property(struct msm_vidc_inst *inst,
if (!ctrl && !capability->cap[cap_id].adjust) {
i_vpr_e(inst,
"%s: child cap[%d] %s must have ajdust function\n",
__func__, capability->cap[cap_id].cap,
cap_name(capability->cap[cap_id].cap));
__func__, capability->cap[cap_id].cap_id,
cap_name(capability->cap[cap_id].cap_id));
return -EINVAL;
}
prev_value = capability->cap[cap_id].value;
@@ -645,7 +645,7 @@ int msm_vidc_ctrl_init(struct msm_vidc_inst *inst)
ctrl_cfg.step =
capability->cap[idx].step_or_mask;
}
ctrl_cfg.name = cap_name(capability->cap[idx].cap);
ctrl_cfg.name = cap_name(capability->cap[idx].cap_id);
if (!ctrl_cfg.name) {
i_vpr_e(inst, "%s: %#x ctrl name is null\n",
__func__, ctrl_cfg.id);
@@ -936,7 +936,7 @@ int msm_v4l2_op_s_ctrl(struct v4l2_ctrl *ctrl)
/* adjust all children if any */
list_for_each_entry_safe(curr_node, tmp_node,
&inst->children.list, list) {
&inst->children_list, list) {
rc = msm_vidc_adjust_dynamic_property(
inst, curr_node->cap_id, NULL);
if (rc)
@@ -2494,7 +2494,7 @@ static inline bool is_root(struct msm_vidc_inst_cap *cap)
static inline bool is_valid_cap(struct msm_vidc_inst_cap *cap)
{
return cap->cap != INST_CAP_NONE;
return cap->cap_id != INST_CAP_NONE;
}
static inline bool is_all_parents_visited(
@@ -2519,7 +2519,7 @@ static int add_node(
{
struct msm_vidc_inst_cap_entry *entry;
if (lookup[rcap->cap])
if (lookup[rcap->cap_id])
return 0;
entry = kzalloc(sizeof(struct msm_vidc_inst_cap_entry), GFP_KERNEL);
@@ -2529,8 +2529,8 @@ static int add_node(
}
INIT_LIST_HEAD(&entry->list);
entry->cap_id = rcap->cap;
lookup[rcap->cap] = true;
entry->cap_id = rcap->cap_id;
lookup[rcap->cap_id] = true;
list_add_tail(&entry->list, list);
return 0;
@@ -2571,9 +2571,9 @@ int msm_vidc_prepare_dependency_list(struct msm_vidc_inst *inst)
continue;
/* sanitize cap value */
if (i != rcap->cap) {
if (i != rcap->cap_id) {
i_vpr_e(inst, "%s: cap id mismatch. expected %s, actual %s\n",
__func__, cap_name(i), cap_name(rcap->cap));
__func__, cap_name(i), cap_name(rcap->cap_id));
rc = -EINVAL;
goto error;
}
@@ -2604,7 +2604,7 @@ int msm_vidc_prepare_dependency_list(struct msm_vidc_inst *inst)
* if child node is already part of root or optional list
* then no need to add it again.
*/
if (root_visited[cap->cap] || opt_visited[cap->cap])
if (root_visited[cap->cap_id] || opt_visited[cap->cap_id])
continue;
/**
@@ -2722,7 +2722,7 @@ int msm_vidc_adjust_v4l2_properties(struct msm_vidc_inst *inst)
* added to inst->children list at this point
*/
list_for_each_entry_safe(curr_node, tmp_node,
&inst->children.list, list) {
&inst->children_list, list) {
/*
* call adjust for each child. Each child adjust
* will also update child list at the tail with
@@ -3858,7 +3858,7 @@ int msm_vidc_set_v4l2_properties(struct msm_vidc_inst *inst)
capability = inst->capabilities;
list_for_each_entry_safe(curr_node, tmp_node,
&inst->firmware.list, list) {
&inst->firmware_list, list) {
/* cap_id's like PIX_FMT etc may not have set functions */
if (!capability->cap[curr_node->cap_id].set)

View File

@@ -51,7 +51,7 @@ extern struct msm_vidc_core *g_core;
#define STABILITY_PAYLOAD_SHIFT 32
struct msm_vidc_cap_name {
enum msm_vidc_inst_capability_type cap;
enum msm_vidc_inst_capability_type cap_id;
char *name;
};
@@ -67,9 +67,9 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
{MIN_BUFFERS_INPUT, "MIN_BUFFERS_INPUT" },
{MIN_BUFFERS_OUTPUT, "MIN_BUFFERS_OUTPUT" },
{MBPF, "MBPF" },
{LOSSLESS_MBPF, "LOSSLESS_MBPF" },
{BATCH_MBPF, "BATCH_MBPF" },
{BATCH_FPS, "BATCH_FPS" },
{LOSSLESS_MBPF, "LOSSLESS_MBPF" },
{SECURE_MBPF, "SECURE_MBPF" },
{MBPS, "MBPS" },
{POWER_SAVE_MBPS, "POWER_SAVE_MBPS" },
@@ -83,86 +83,59 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
{MB_CYCLES_FW_VPP, "MB_CYCLES_FW_VPP" },
{SECURE_MODE, "SECURE_MODE" },
{TS_REORDER, "TS_REORDER" },
{SLICE_INTERFACE, "SLICE_INTERFACE" },
{HFLIP, "HFLIP" },
{VFLIP, "VFLIP" },
{ROTATION, "ROTATION" },
{SUPER_FRAME, "SUPER_FRAME" },
{SLICE_INTERFACE, "SLICE_INTERFACE" },
{HEADER_MODE, "HEADER_MODE" },
{PREPEND_SPSPPS_TO_IDR, "PREPEND_SPSPPS_TO_IDR" },
{META_SEQ_HDR_NAL, "META_SEQ_HDR_NAL" },
{WITHOUT_STARTCODE, "WITHOUT_STARTCODE" },
{NAL_LENGTH_FIELD, "NAL_LENGTH_FIELD" },
{REQUEST_I_FRAME, "REQUEST_I_FRAME" },
{BIT_RATE, "BIT_RATE" },
{BITRATE_MODE, "BITRATE_MODE" },
{LOSSLESS, "LOSSLESS" },
{FRAME_SKIP_MODE, "FRAME_SKIP_MODE" },
{FRAME_RC_ENABLE, "FRAME_RC_ENABLE" },
{CONSTANT_QUALITY, "CONSTANT_QUALITY" },
{GOP_SIZE, "GOP_SIZE" },
{GOP_CLOSURE, "GOP_CLOSURE" },
{B_FRAME, "B_FRAME" },
{BLUR_TYPES, "BLUR_TYPES" },
{BLUR_RESOLUTION, "BLUR_RESOLUTION" },
{CSC, "CSC" },
{CSC_CUSTOM_MATRIX, "CSC_CUSTOM_MATRIX" },
{GRID, "GRID" },
{LOWLATENCY_MODE, "LOWLATENCY_MODE" },
{LTR_COUNT, "LTR_COUNT" },
{USE_LTR, "USE_LTR" },
{MARK_LTR, "MARK_LTR" },
{BASELAYER_PRIORITY, "BASELAYER_PRIORITY" },
{IR_RANDOM, "IR_RANDOM" },
{AU_DELIMITER, "AU_DELIMITER" },
{TIME_DELTA_BASED_RC, "TIME_DELTA_BASED_RC" },
{CONTENT_ADAPTIVE_CODING, "CONTENT_ADAPTIVE_CODING" },
{BITRATE_BOOST, "BITRATE_BOOST" },
{MIN_QUALITY, "MIN_QUALITY" },
{VBV_DELAY, "VBV_DELAY" },
{PEAK_BITRATE, "PEAK_BITRATE" },
{MIN_FRAME_QP, "MIN_FRAME_QP" },
{GRID, "GRID" },
{I_FRAME_MIN_QP, "I_FRAME_MIN_QP" },
{P_FRAME_MIN_QP, "P_FRAME_MIN_QP" },
{B_FRAME_MIN_QP, "B_FRAME_MIN_QP" },
{MAX_FRAME_QP, "MAX_FRAME_QP" },
{I_FRAME_MAX_QP, "I_FRAME_MAX_QP" },
{P_FRAME_MAX_QP, "P_FRAME_MAX_QP" },
{B_FRAME_MAX_QP, "B_FRAME_MAX_QP" },
{I_FRAME_QP, "I_FRAME_QP" },
{P_FRAME_QP, "P_FRAME_QP" },
{B_FRAME_QP, "B_FRAME_QP" },
{LAYER_TYPE, "LAYER_TYPE" },
{LAYER_ENABLE, "LAYER_ENABLE" },
{ENH_LAYER_COUNT, "ENH_LAYER_COUNT" },
{L0_BR, "L0_BR" },
{L1_BR, "L1_BR" },
{L2_BR, "L2_BR" },
{L3_BR, "L3_BR" },
{L4_BR, "L4_BR" },
{L5_BR, "L5_BR" },
{ENTROPY_MODE, "ENTROPY_MODE" },
{PROFILE, "PROFILE" },
{LEVEL, "LEVEL" },
{HEVC_TIER, "HEVC_TIER" },
{AV1_TIER, "AV1_TIER" },
{LF_MODE, "LF_MODE" },
{LF_ALPHA, "LF_ALPHA" },
{LF_BETA, "LF_BETA" },
{SLICE_MODE, "SLICE_MODE" },
{SLICE_MAX_BYTES, "SLICE_MAX_BYTES" },
{SLICE_MAX_MB, "SLICE_MAX_MB" },
{MB_RC, "MB_RC" },
{TRANSFORM_8X8, "TRANSFORM_8X8" },
{CHROMA_QP_INDEX_OFFSET, "CHROMA_QP_INDEX_OFFSET" },
{DISPLAY_DELAY_ENABLE, "DISPLAY_DELAY_ENABLE" },
{DISPLAY_DELAY, "DISPLAY_DELAY" },
{CONCEAL_COLOR_8BIT, "CONCEAL_COLOR_8BIT" },
{CONCEAL_COLOR_10BIT, "CONCEAL_COLOR_10BIT" },
{STAGE, "STAGE" },
{LF_MODE, "LF_MODE" },
{LF_ALPHA, "LF_ALPHA" },
{LF_BETA, "LF_BETA" },
{SLICE_MAX_BYTES, "SLICE_MAX_BYTES" },
{SLICE_MAX_MB, "SLICE_MAX_MB" },
{MB_RC, "MB_RC" },
{CHROMA_QP_INDEX_OFFSET, "CHROMA_QP_INDEX_OFFSET" },
{PIPE, "PIPE" },
{POC, "POC" },
{QUALITY_MODE, "QUALITY_MODE" },
{CODED_FRAMES, "CODED_FRAMES" },
{BIT_DEPTH, "BIT_DEPTH" },
{CODEC_CONFIG, "CODEC_CONFIG" },
@@ -171,20 +144,20 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
{DEFAULT_HEADER, "DEFAULT_HEADER" },
{RAP_FRAME, "RAP_FRAME" },
{SEQ_CHANGE_AT_SYNC_FRAME, "SEQ_CHANGE_AT_SYNC_FRAME" },
{QUALITY_MODE, "QUALITY_MODE" },
{PRIORITY, "PRIORITY" },
{ENC_IP_CR, "ENC_IP_CR" },
{DPB_LIST, "DPB_LIST" },
{FILM_GRAIN, "FILM_GRAIN" },
{SUPER_BLOCK, "SUPER_BLOCK" },
{DRAP, "DRAP" },
{ALL_INTRA, "ALL_INTRA" },
{INPUT_METADATA_FD, "INPUT_METADATA_FD" },
{META_BITSTREAM_RESOLUTION, "META_BITSTREAM_RESOLUTION" },
{META_CROP_OFFSETS, "META_CROP_OFFSETS" },
{META_LTR_MARK_USE, "META_LTR_MARK_USE" },
{META_DPB_MISR, "META_DPB_MISR" },
{META_OPB_MISR, "META_OPB_MISR" },
{META_INTERLACE, "META_INTERLACE" },
{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" },
@@ -197,24 +170,51 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
{META_OUTPUT_BUF_TAG, "META_OUTPUT_BUF_TAG" },
{META_SUBFRAME_OUTPUT, "META_SUBFRAME_OUTPUT" },
{META_ENC_QP_METADATA, "META_ENC_QP_METADATA" },
{META_ROI_INFO, "META_ROI_INFO" },
{META_DEC_QP_METADATA, "META_DEC_QP_METADATA" },
{COMPLEXITY, "COMPLEXITY" },
{META_MAX_NUM_REORDER_FRAMES, "META_MAX_NUM_REORDER_FRAMES"},
{PROFILE, "PROFILE" },
{MIN_FRAME_QP, "MIN_FRAME_QP" },
{MAX_FRAME_QP, "MAX_FRAME_QP" },
{I_FRAME_QP, "I_FRAME_QP" },
{P_FRAME_QP, "P_FRAME_QP" },
{B_FRAME_QP, "B_FRAME_QP" },
{META_ROI_INFO, "META_ROI_INFO" },
{TIME_DELTA_BASED_RC, "TIME_DELTA_BASED_RC" },
{CONSTANT_QUALITY, "CONSTANT_QUALITY" },
{ENH_LAYER_COUNT, "ENH_LAYER_COUNT" },
{BIT_RATE, "BIT_RATE" },
{VBV_DELAY, "VBV_DELAY" },
{PEAK_BITRATE, "PEAK_BITRATE" },
{LOWLATENCY_MODE, "LOWLATENCY_MODE" },
{ENTROPY_MODE, "ENTROPY_MODE" },
{TRANSFORM_8X8, "TRANSFORM_8X8" },
{GOP_SIZE, "GOP_SIZE" },
{B_FRAME, "B_FRAME" },
{BLUR_RESOLUTION, "BLUR_RESOLUTION" },
{STAGE, "STAGE" },
{ALL_INTRA, "ALL_INTRA" },
{MIN_QUALITY, "MIN_QUALITY" },
{LTR_COUNT, "LTR_COUNT" },
{IR_RANDOM, "IR_RANDOM" },
{BITRATE_BOOST, "BITRATE_BOOST" },
{SLICE_MODE, "SLICE_MODE" },
{CONTENT_ADAPTIVE_CODING, "CONTENT_ADAPTIVE_CODING" },
{BLUR_TYPES, "BLUR_TYPES" },
{INST_CAP_MAX, "INST_CAP_MAX" },
};
const char *cap_name(enum msm_vidc_inst_capability_type cap)
const char *cap_name(enum msm_vidc_inst_capability_type cap_id)
{
const char *name = "UNKNOWN CAP";
if (cap > ARRAY_SIZE(cap_name_arr))
if (cap_id > ARRAY_SIZE(cap_name_arr))
goto exit;
if (cap_name_arr[cap].cap != cap)
if (cap_name_arr[cap_id].cap_id != cap_id)
goto exit;
name = cap_name_arr[cap].name;
name = cap_name_arr[cap_id].name;
exit:
return name;
@@ -2168,7 +2168,7 @@ int msm_vidc_process_readonly_buffers(struct msm_vidc_inst *inst,
buf->attr |= MSM_VIDC_ATTR_READ_ONLY;
print_vidc_buffer(VIDC_LOW, "low ", "ro buf removed", inst, ro_buf);
list_del(&ro_buf->list);
msm_memory_free(inst, ro_buf);
msm_memory_pool_free(inst, ro_buf);
break;
}
}
@@ -2195,7 +2195,7 @@ int msm_vidc_memory_unmap_completely(struct msm_vidc_inst *inst,
if (!map->refcount) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
list_del(&map->list);
msm_memory_free(inst, map);
msm_memory_pool_free(inst, map);
break;
}
}
@@ -2361,7 +2361,7 @@ int msm_vidc_flush_ts(struct msm_vidc_inst *inst)
i_vpr_l(inst, "%s: flushing ts: val %llu, rank %llu\n",
__func__, ts->sort.val, ts->rank);
list_del(&ts->sort.list);
msm_memory_free(inst, ts);
msm_memory_pool_free(inst, ts);
}
inst->timestamps.count = 0;
inst->timestamps.rank = 0;
@@ -2380,7 +2380,7 @@ int msm_vidc_update_timestamp(struct msm_vidc_inst *inst, u64 timestamp)
return -EINVAL;
}
ts = msm_memory_alloc(inst, MSM_MEM_POOL_TIMESTAMP);
ts = msm_memory_pool_alloc(inst, MSM_MEM_POOL_TIMESTAMP);
if (!ts) {
i_vpr_e(inst, "%s: ts alloc failed\n", __func__);
return -ENOMEM;
@@ -2408,7 +2408,7 @@ int msm_vidc_update_timestamp(struct msm_vidc_inst *inst, u64 timestamp)
}
inst->timestamps.count--;
list_del(&ts->sort.list);
msm_memory_free(inst, ts);
msm_memory_pool_free(inst, ts);
}
return 0;
@@ -2425,7 +2425,7 @@ int msm_vidc_ts_reorder_insert_timestamp(struct msm_vidc_inst *inst, u64 timesta
}
/* allocate ts from pool */
ts = msm_memory_alloc(inst, MSM_MEM_POOL_TIMESTAMP);
ts = msm_memory_pool_alloc(inst, MSM_MEM_POOL_TIMESTAMP);
if (!ts) {
i_vpr_e(inst, "%s: ts alloc failed\n", __func__);
return -ENOMEM;
@@ -2456,7 +2456,7 @@ int msm_vidc_ts_reorder_remove_timestamp(struct msm_vidc_inst *inst, u64 timesta
if (ts->sort.val == timestamp) {
list_del_init(&ts->sort.list);
inst->ts_reorder.count--;
msm_memory_free(inst, ts);
msm_memory_pool_free(inst, ts);
break;
}
}
@@ -2488,7 +2488,7 @@ int msm_vidc_ts_reorder_get_first_timestamp(struct msm_vidc_inst *inst, u64 *tim
*timestamp = ts->sort.val;
inst->ts_reorder.count--;
msm_memory_free(inst, ts);
msm_memory_pool_free(inst, ts);
return 0;
}
@@ -2506,7 +2506,7 @@ int msm_vidc_ts_reorder_flush(struct msm_vidc_inst *inst)
list_for_each_entry_safe(ts, temp, &inst->ts_reorder.list, sort.list) {
i_vpr_l(inst, "%s: flushing ts: val %lld\n", __func__, ts->sort.val);
list_del(&ts->sort.list);
msm_memory_free(inst, ts);
msm_memory_pool_free(inst, ts);
}
inst->ts_reorder.count = 0;
@@ -2553,7 +2553,7 @@ int msm_vidc_put_delayed_unmap(struct msm_vidc_inst *inst, struct msm_vidc_map *
if (!map->refcount) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
list_del(&map->list);
msm_memory_free(inst, map);
msm_memory_pool_free(inst, map);
}
return rc;
@@ -2621,7 +2621,7 @@ int msm_vidc_unmap_driver_buf(struct msm_vidc_inst *inst,
if (!map->refcount) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
list_del(&map->list);
msm_memory_free(inst, map);
msm_memory_pool_free(inst, map);
}
return rc;
@@ -2656,7 +2656,7 @@ int msm_vidc_map_driver_buf(struct msm_vidc_inst *inst,
}
if (!found) {
/* new buffer case */
map = msm_memory_alloc(inst, MSM_MEM_POOL_MAP);
map = msm_memory_pool_alloc(inst, MSM_MEM_POOL_MAP);
if (!map) {
i_vpr_e(inst, "%s: alloc failed\n", __func__);
return -ENOMEM;
@@ -2672,7 +2672,7 @@ int msm_vidc_map_driver_buf(struct msm_vidc_inst *inst,
rc = msm_vidc_get_delayed_unmap(inst, map);
if (rc) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
msm_memory_free(inst, map);
msm_memory_pool_free(inst, map);
return rc;
}
}
@@ -2703,7 +2703,7 @@ int msm_vidc_put_driver_buf(struct msm_vidc_inst *inst,
/* delete the buffer from buffers->list */
list_del(&buf->list);
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
return rc;
}
@@ -2729,7 +2729,7 @@ struct msm_vidc_buffer *msm_vidc_get_driver_buf(struct msm_vidc_inst *inst,
if (!buffers)
return NULL;
buf = msm_memory_alloc(inst, MSM_MEM_POOL_BUFFER);
buf = msm_memory_pool_alloc(inst, MSM_MEM_POOL_BUFFER);
if (!buf) {
i_vpr_e(inst, "%s: alloc failed\n", __func__);
return NULL;
@@ -2757,7 +2757,7 @@ struct msm_vidc_buffer *msm_vidc_get_driver_buf(struct msm_vidc_inst *inst,
error:
msm_vidc_memory_put_dmabuf(inst, buf->dmabuf);
list_del(&buf->list);
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
return NULL;
}
@@ -3027,22 +3027,22 @@ void msm_vidc_free_capabililty_list(struct msm_vidc_inst *inst,
struct msm_vidc_inst_cap_entry *temp = NULL, *next = NULL;
if (list_type & CHILD_LIST) {
list_for_each_entry_safe(temp, next, &inst->children.list, list) {
list_for_each_entry_safe(temp, next, &inst->children_list, list) {
list_del(&temp->list);
kfree(temp);
}
INIT_LIST_HEAD(&inst->children.list);
INIT_LIST_HEAD(&inst->children_list);
}
temp = NULL;
next = NULL;
if (list_type & FW_LIST) {
list_for_each_entry_safe(temp, next, &inst->firmware.list, list) {
list_for_each_entry_safe(temp, next, &inst->firmware_list, list) {
list_del(&temp->list);
kfree(temp);
}
INIT_LIST_HEAD(&inst->firmware.list);
INIT_LIST_HEAD(&inst->firmware_list);
}
}
@@ -3337,7 +3337,7 @@ int msm_vidc_destroy_internal_buffer(struct msm_vidc_inst *inst,
if (map->dmabuf == buffer->dmabuf) {
msm_vidc_memory_unmap(inst->core, map);
list_del(&map->list);
msm_memory_free(inst, map);
msm_memory_pool_free(inst, map);
break;
}
}
@@ -3346,7 +3346,7 @@ int msm_vidc_destroy_internal_buffer(struct msm_vidc_inst *inst,
if (alloc->dmabuf == buffer->dmabuf) {
msm_vidc_memory_free(inst->core, alloc);
list_del(&alloc->list);
msm_memory_free(inst, alloc);
msm_memory_pool_free(inst, alloc);
break;
}
}
@@ -3354,7 +3354,7 @@ int msm_vidc_destroy_internal_buffer(struct msm_vidc_inst *inst,
list_for_each_entry_safe(buf, dummy, &buffers->list, list) {
if (buf->dmabuf == buffer->dmabuf) {
list_del(&buf->list);
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
break;
}
}
@@ -3434,7 +3434,7 @@ int msm_vidc_create_internal_buffer(struct msm_vidc_inst *inst,
if (!buffers->size)
return 0;
buffer = msm_memory_alloc(inst, MSM_MEM_POOL_BUFFER);
buffer = msm_memory_pool_alloc(inst, MSM_MEM_POOL_BUFFER);
if (!buffer) {
i_vpr_e(inst, "%s: buf alloc failed\n", __func__);
return -ENOMEM;
@@ -3445,7 +3445,7 @@ int msm_vidc_create_internal_buffer(struct msm_vidc_inst *inst,
buffer->buffer_size = buffers->size;
list_add_tail(&buffer->list, &buffers->list);
alloc = msm_memory_alloc(inst, MSM_MEM_POOL_ALLOC);
alloc = msm_memory_pool_alloc(inst, MSM_MEM_POOL_ALLOC);
if (!alloc) {
i_vpr_e(inst, "%s: alloc failed\n", __func__);
return -ENOMEM;
@@ -3461,7 +3461,7 @@ int msm_vidc_create_internal_buffer(struct msm_vidc_inst *inst,
return -ENOMEM;
list_add_tail(&alloc->list, &allocations->list);
map = msm_memory_alloc(inst, MSM_MEM_POOL_MAP);
map = msm_memory_pool_alloc(inst, MSM_MEM_POOL_MAP);
if (!map) {
i_vpr_e(inst, "%s: map alloc failed\n", __func__);
return -ENOMEM;
@@ -4354,24 +4354,24 @@ static void update_inst_capability(struct msm_platform_inst_capability *in,
__func__, in, capability);
return;
}
if (in->cap < INST_CAP_MAX) {
capability->cap[in->cap].cap = in->cap;
capability->cap[in->cap].min = in->min;
capability->cap[in->cap].max = in->max;
capability->cap[in->cap].step_or_mask = in->step_or_mask;
capability->cap[in->cap].value = in->value;
capability->cap[in->cap].flags = in->flags;
capability->cap[in->cap].v4l2_id = in->v4l2_id;
capability->cap[in->cap].hfi_id = in->hfi_id;
memcpy(capability->cap[in->cap].parents, in->parents,
sizeof(capability->cap[in->cap].parents));
memcpy(capability->cap[in->cap].children, in->children,
sizeof(capability->cap[in->cap].children));
capability->cap[in->cap].adjust = in->adjust;
capability->cap[in->cap].set = in->set;
if (in->cap_id < INST_CAP_MAX) {
capability->cap[in->cap_id].cap_id = in->cap_id;
capability->cap[in->cap_id].min = in->min;
capability->cap[in->cap_id].max = in->max;
capability->cap[in->cap_id].step_or_mask = in->step_or_mask;
capability->cap[in->cap_id].value = in->value;
capability->cap[in->cap_id].flags = in->flags;
capability->cap[in->cap_id].v4l2_id = in->v4l2_id;
capability->cap[in->cap_id].hfi_id = in->hfi_id;
memcpy(capability->cap[in->cap_id].parents, in->parents,
sizeof(capability->cap[in->cap_id].parents));
memcpy(capability->cap[in->cap_id].children, in->children,
sizeof(capability->cap[in->cap_id].children));
capability->cap[in->cap_id].adjust = in->adjust;
capability->cap[in->cap_id].set = in->set;
} else {
d_vpr_e("%s: invalid cap %d\n",
__func__, in->cap);
d_vpr_e("%s: invalid cap id %d\n",
__func__, in->cap_id);
}
}
@@ -5196,13 +5196,13 @@ void msm_vidc_destroy_buffers(struct msm_vidc_inst *inst)
list_for_each_entry_safe(buf, dummy, &inst->buffers.read_only.list, list) {
print_vidc_buffer(VIDC_ERR, "err ", "destroying ro buffer", inst, buf);
list_del(&buf->list);
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
}
list_for_each_entry_safe(buf, dummy, &inst->buffers.release.list, list) {
print_vidc_buffer(VIDC_ERR, "err ", "destroying release buffer", inst, buf);
list_del(&buf->list);
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
}
for (i = 0; i < ARRAY_SIZE(ext_buf_types); i++) {
@@ -5224,14 +5224,14 @@ void msm_vidc_destroy_buffers(struct msm_vidc_inst *inst)
i_vpr_e(inst, "%s: removing ts: val %lld, rank %lld\n",
__func__, ts->sort.val, ts->rank);
list_del(&ts->sort.list);
msm_memory_free(inst, ts);
msm_memory_pool_free(inst, ts);
}
list_for_each_entry_safe(ts, dummy_ts, &inst->ts_reorder.list, sort.list) {
i_vpr_e(inst, "%s: removing reorder ts: val %lld\n",
__func__, ts->sort.val);
list_del(&ts->sort.list);
msm_memory_free(inst, ts);
msm_memory_pool_free(inst, ts);
}
list_for_each_entry_safe(dbuf, dummy_dbuf, &inst->dmabuf_tracker, list) {

View File

@@ -95,7 +95,7 @@ struct dma_buf *msm_vidc_memory_get_dmabuf(struct msm_vidc_inst *inst, int fd)
}
/* get tracker instance from pool */
buf = msm_memory_alloc(inst, MSM_MEM_POOL_DMABUF);
buf = msm_memory_pool_alloc(inst, MSM_MEM_POOL_DMABUF);
if (!buf) {
i_vpr_e(inst, "%s: dmabuf alloc failed\n", __func__);
dma_buf_put(dmabuf);
@@ -146,7 +146,7 @@ void msm_vidc_memory_put_dmabuf(struct msm_vidc_inst *inst, struct dma_buf *dmab
dma_buf_put(buf->dmabuf);
/* put tracker instance back to pool */
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
}
void msm_vidc_memory_put_dmabuf_completely(struct msm_vidc_inst *inst,
@@ -167,7 +167,7 @@ void msm_vidc_memory_put_dmabuf_completely(struct msm_vidc_inst *inst,
dma_buf_put(buf->dmabuf);
/* put tracker instance back to pool */
msm_memory_free(inst, buf);
msm_memory_pool_free(inst, buf);
break;
}
}
@@ -445,7 +445,7 @@ int msm_vidc_memory_free(struct msm_vidc_core *core, struct msm_vidc_alloc *mem)
return rc;
};
void *msm_memory_alloc(struct msm_vidc_inst *inst, enum msm_memory_pool_type type)
void *msm_memory_pool_alloc(struct msm_vidc_inst *inst, enum msm_memory_pool_type type)
{
struct msm_memory_alloc_header *hdr;
struct msm_memory_pool *pool;
@@ -488,7 +488,7 @@ void *msm_memory_alloc(struct msm_vidc_inst *inst, enum msm_memory_pool_type typ
return hdr->buf;
}
void msm_memory_free(struct msm_vidc_inst *inst, void *vidc_buf)
void msm_memory_pool_free(struct msm_vidc_inst *inst, void *vidc_buf)
{
struct msm_memory_alloc_header *hdr;
struct msm_memory_pool *pool;

View File

@@ -649,7 +649,7 @@ static int handle_read_only_buffer(struct msm_vidc_inst *inst,
* if present, do nothing
*/
if (!found) {
ro_buf = msm_memory_alloc(inst, MSM_MEM_POOL_BUFFER);
ro_buf = msm_memory_pool_alloc(inst, MSM_MEM_POOL_BUFFER);
if (!ro_buf) {
i_vpr_e(inst, "%s: buffer alloc failed\n", __func__);
return -ENOMEM;
@@ -700,7 +700,7 @@ static int handle_non_read_only_buffer(struct msm_vidc_inst *inst,
if (found) {
print_vidc_buffer(VIDC_LOW, "low ", "ro buf deleted", inst, ro_buf);
list_del(&ro_buf->list);
msm_memory_free(inst, ro_buf);
msm_memory_pool_free(inst, ro_buf);
}
return 0;