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, MSM_VIDC_FMT_NV12C,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{META_ROI_INFO}}, {META_ROI_INFO}},
{PIX_FMTS, ENC, HEVC, {PIX_FMTS, ENC, HEVC,
@@ -155,7 +155,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
*/ */
MSM_VIDC_FMT_NV12C, MSM_VIDC_FMT_NV12C,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES {/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES
* Since parent -> children relationship for these cap_ids is * 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_P010 | MSM_VIDC_FMT_TP10C,
MSM_VIDC_FMT_NV12C, MSM_VIDC_FMT_NV12C,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{PROFILE}}, {PROFILE}},
@@ -202,7 +202,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
0, 64, 1, 4, 0, 64, 1, 4,
V4L2_CID_MIN_BUFFERS_FOR_CAPTURE, V4L2_CID_MIN_BUFFERS_FOR_CAPTURE,
HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
/* (8192 * 4320) / 256 */ /* (8192 * 4320) / 256 */
{MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240}, {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), 1, (DEFAULT_FPS << 16),
0, 0,
HFI_PROP_FRAME_RATE, HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_q16}, NULL, msm_vidc_set_q16},
@@ -279,7 +279,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_HFLIP, V4L2_CID_HFLIP,
HFI_PROP_FLIP, HFI_PROP_FLIP,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0},
{0}, {0},
@@ -301,7 +301,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
0, 270, 90, 0, 0, 270, 90, 0,
V4L2_CID_ROTATE, V4L2_CID_ROTATE,
HFI_PROP_ROTATION, HFI_PROP_ROTATION,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_rotation}, 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_MPEG_VIDEO_HEADER_MODE_SEPARATE,
V4L2_CID_MPEG_VIDEO_HEADER_MODE, V4L2_CID_MPEG_VIDEO_HEADER_MODE,
HFI_PROP_SEQ_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}, {0}, {0},
NULL, msm_vidc_set_header_mode}, 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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE, V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE,
HFI_PROP_NAL_LENGTH_FIELD, HFI_PROP_NAL_LENGTH_FIELD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_nal_length}, 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_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE, V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL, HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, 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_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE, V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL, HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, 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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX, V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX,
HFI_PROP_CSC_MATRIX, HFI_PROP_CSC_MATRIX,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_csc_custom_matrix}, 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, 0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0,
V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID, V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID,
HFI_PROP_BASELAYER_PRIORITYID, HFI_PROP_BASELAYER_PRIORITYID,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
{IR_RANDOM, ENC, H264|HEVC, {IR_RANDOM, ENC, H264|HEVC,
0, INT_MAX, 1, 0, 0, INT_MAX, 1, 0,
@@ -581,7 +581,7 @@ 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_AU_DELIMITER, V4L2_CID_MPEG_VIDEO_AU_DELIMITER,
HFI_PROP_AUD, HFI_PROP_AUD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, 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, MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
V4L2_CID_MPEG_VIDEO_H264_MIN_QP, V4L2_CID_MPEG_VIDEO_H264_MIN_QP,
HFI_PROP_MIN_QP_PACKED, HFI_PROP_MIN_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_min_qp}, 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, MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
V4L2_CID_MPEG_VIDEO_H264_MAX_QP, V4L2_CID_MPEG_VIDEO_H264_MAX_QP,
HFI_PROP_MAX_QP_PACKED, HFI_PROP_MAX_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_max_qp}, 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_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE, V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE, HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{ENTROPY_MODE, TRANSFORM_8X8}, {ENTROPY_MODE, TRANSFORM_8X8},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE, V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE, HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{ENTROPY_MODE}, {ENTROPY_MODE},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_VP9_PROFILE_0,
V4L2_CID_MPEG_VIDEO_VP9_PROFILE, V4L2_CID_MPEG_VIDEO_VP9_PROFILE,
HFI_PROP_PROFILE, HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_VP9_LEVEL_6_0,
V4L2_CID_MPEG_VIDEO_VP9_LEVEL, V4L2_CID_MPEG_VIDEO_VP9_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_AV1_PROFILE_MAIN,
V4L2_CID_MPEG_VIDEO_AV1_PROFILE, V4L2_CID_MPEG_VIDEO_AV1_PROFILE,
HFI_PROP_PROFILE, HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_AV1_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_AV1_LEVEL, V4L2_CID_MPEG_VIDEO_AV1_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_AV1_TIER_HIGH,
V4L2_CID_MPEG_VIDEO_AV1_TIER, V4L2_CID_MPEG_VIDEO_AV1_TIER,
HFI_PROP_TIER, HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_H264_LEVEL, V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_LEVEL_5_0,
V4L2_CID_MPEG_VIDEO_H264_LEVEL, V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_level}, 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_MPEG_VIDEO_HEVC_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_HEVC_LEVEL_5,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_level}, 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_MPEG_VIDEO_HEVC_TIER_HIGH,
V4L2_CID_MPEG_VIDEO_HEVC_TIER, V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER, HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE, V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE, HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_deblock_mode}, 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_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE, V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE, HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_deblock_mode}, 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, 1, V4L2_MPEG_MSM_VIDC_ENABLE,
V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE, V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE,
0, 0,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
{TRANSFORM_8X8, ENC, H264, {TRANSFORM_8X8, ENC, H264,
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, 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, 1, MAX_CHROMA_QP_OFFSET,
V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET, V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET,
HFI_PROP_CHROMA_QP_OFFSET, HFI_PROP_CHROMA_QP_OFFSET,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
msm_vidc_adjust_chroma_qp_index_offset, msm_vidc_adjust_chroma_qp_index_offset,
msm_vidc_set_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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE, V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE,
HFI_PROP_DECODE_ORDER_OUTPUT, HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT}, CAP_FLAG_INPUT_PORT},
{DISPLAY_DELAY, DEC, H264|HEVC|VP9|AV1, {DISPLAY_DELAY, DEC, H264|HEVC|VP9|AV1,
0, 1, 1, 0, 0, 1, 1, 0,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY, V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY,
HFI_PROP_DECODE_ORDER_OUTPUT, HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT}, CAP_FLAG_INPUT_PORT},
/* conceal color */ /* conceal color */
{CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1, {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV, V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_8BIT, 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, {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV, V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_10BIT, HFI_PROP_CONCEAL_COLOR_10BIT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
// TODO // TODO
{STAGE, DEC|ENC, CODECS_ALL, {STAGE, DEC|ENC, CODECS_ALL,
@@ -1376,7 +1376,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MSM_VIDC_STAGE_2, MSM_VIDC_STAGE_2,
0, 0,
HFI_PROP_STAGE, HFI_PROP_STAGE,
CAP_FLAG_ROOT, 0,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_stage}, NULL, msm_vidc_set_stage},
@@ -1396,7 +1396,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
MSM_VIDC_PIPE_4, MSM_VIDC_PIPE_4,
0, 0,
HFI_PROP_PIPE, HFI_PROP_PIPE,
CAP_FLAG_ROOT, 0,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_pipe}, NULL, msm_vidc_set_pipe},
{POC, DEC, H264, 0, 18, 1, 1}, {POC, DEC, H264, 0, 18, 1, 1},
@@ -1454,7 +1454,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
0, 2, 1, 1, 0, 2, 1, 1,
V4L2_CID_MPEG_VIDC_PRIORITY, V4L2_CID_MPEG_VIDC_PRIORITY,
HFI_PROP_SESSION_PRIORITY, HFI_PROP_SESSION_PRIORITY,
CAP_FLAG_ROOT | CAP_FLAG_DYNAMIC_ALLOWED, CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0}, {0}, {0},
msm_vidc_adjust_session_priority, msm_vidc_set_session_priority}, 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, 1, V4L2_MPEG_MSM_VIDC_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,
CAP_FLAG_ROOT, 0,
{0}, {0},
{ENH_LAYER_COUNT}}, {ENH_LAYER_COUNT}},
@@ -1666,7 +1666,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, V4L2_MPEG_VIDEO_BITRATE_MODE_CQ,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE, V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL, HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{TIME_DELTA_BASED_RC, CONSTANT_QUALITY}, {TIME_DELTA_BASED_RC, CONSTANT_QUALITY},
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, 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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC,
HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{BITRATE_MODE}, {0}, {BITRATE_MODE}, {0},
msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32},
{CONSTANT_QUALITY, ENC, HEIC, {CONSTANT_QUALITY, ENC, HEIC,
@@ -1691,14 +1691,14 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, V4L2_MPEG_MSM_VIDC_ENABLE, 1, V4L2_MPEG_MSM_VIDC_ENABLE,
0, 0,
HFI_PROP_HEIC_GRID_ENABLE, HFI_PROP_HEIC_GRID_ENABLE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, NULL, msm_vidc_set_u32},
{GOP_SIZE, ENC, HEIC, {GOP_SIZE, ENC, HEIC,
0, INT_MAX, 1, 0 /* all intra */, 0, INT_MAX, 1, 0 /* all intra */,
V4L2_CID_MPEG_VIDEO_GOP_SIZE, V4L2_CID_MPEG_VIDEO_GOP_SIZE,
HFI_PROP_MAX_GOP_FRAMES, HFI_PROP_MAX_GOP_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, NULL, msm_vidc_set_u32},
@@ -1707,7 +1707,7 @@ 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_B_FRAMES, V4L2_CID_MPEG_VIDEO_B_FRAMES,
HFI_PROP_MAX_B_FRAMES, HFI_PROP_MAX_B_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, NULL, msm_vidc_set_u32},
{PIX_FMTS, ENC, HEIC, {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 | MSM_VIDC_FMT_P010,
MSM_VIDC_FMT_NV12, MSM_VIDC_FMT_NV12,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{PROFILE}}, {PROFILE}},
{HEVC_TIER, ENC|DEC, HEIC, {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_MPEG_VIDEO_HEVC_TIER_MAIN,
V4L2_CID_MPEG_VIDEO_HEVC_TIER, V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER, HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, NULL, msm_vidc_set_u32_enum},
@@ -1735,7 +1735,7 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
1, (MINIMUM_FPS << 16), 1, (MINIMUM_FPS << 16),
0, 0,
HFI_PROP_FRAME_RATE, HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_q16}, NULL, msm_vidc_set_q16},
{META_SUBFRAME_OUTPUT, ENC, HEIC, {META_SUBFRAME_OUTPUT, ENC, HEIC,

View File

@@ -138,7 +138,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
*/ */
MSM_VIDC_FMT_NV12C, MSM_VIDC_FMT_NV12C,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{META_ROI_INFO}}, {META_ROI_INFO}},
{PIX_FMTS, ENC, HEVC, {PIX_FMTS, ENC, HEVC,
@@ -152,7 +152,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
*/ */
MSM_VIDC_FMT_NV12C, MSM_VIDC_FMT_NV12C,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES {/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES
* Since parent -> children relationship for these cap_ids is * 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_P010 | MSM_VIDC_FMT_TP10C,
MSM_VIDC_FMT_NV12C, MSM_VIDC_FMT_NV12C,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{PROFILE}}, {PROFILE}},
@@ -192,7 +192,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
0, 64, 1, 4, 0, 64, 1, 4,
V4L2_CID_MIN_BUFFERS_FOR_CAPTURE, V4L2_CID_MIN_BUFFERS_FOR_CAPTURE,
HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
/* (8192 * 4320) / 256 */ /* (8192 * 4320) / 256 */
{MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240}, {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), 1, (DEFAULT_FPS << 16),
0, 0,
HFI_PROP_FRAME_RATE, HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_q16}, NULL, msm_vidc_set_q16},
@@ -274,7 +274,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_DISABLE, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_HFLIP, V4L2_CID_HFLIP,
HFI_PROP_FLIP, HFI_PROP_FLIP,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0},
{0}, {0},
@@ -296,7 +296,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
0, 270, 90, 0, 0, 270, 90, 0,
V4L2_CID_ROTATE, V4L2_CID_ROTATE,
HFI_PROP_ROTATION, HFI_PROP_ROTATION,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_rotation}, 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_MPEG_VIDEO_HEADER_MODE_SEPARATE,
V4L2_CID_MPEG_VIDEO_HEADER_MODE, V4L2_CID_MPEG_VIDEO_HEADER_MODE,
HFI_PROP_SEQ_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}, {0}, {0},
NULL, msm_vidc_set_header_mode}, 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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE, V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE,
HFI_PROP_NAL_LENGTH_FIELD, HFI_PROP_NAL_LENGTH_FIELD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_nal_length}, 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_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE, V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL, HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, 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_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE, V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL, HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, 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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX, V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX,
HFI_PROP_CSC_MATRIX, HFI_PROP_CSC_MATRIX,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_csc_custom_matrix}, 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, 0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0,
V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID, V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID,
HFI_PROP_BASELAYER_PRIORITYID, HFI_PROP_BASELAYER_PRIORITYID,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
{IR_RANDOM, ENC, H264|HEVC, {IR_RANDOM, ENC, H264|HEVC,
0, INT_MAX, 1, 0, 0, INT_MAX, 1, 0,
@@ -569,7 +569,7 @@ 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_AU_DELIMITER, V4L2_CID_MPEG_VIDEO_AU_DELIMITER,
HFI_PROP_AUD, HFI_PROP_AUD,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, 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, MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
V4L2_CID_MPEG_VIDEO_H264_MIN_QP, V4L2_CID_MPEG_VIDEO_H264_MIN_QP,
HFI_PROP_MIN_QP_PACKED, HFI_PROP_MIN_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_min_qp}, 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, MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
V4L2_CID_MPEG_VIDEO_H264_MAX_QP, V4L2_CID_MPEG_VIDEO_H264_MAX_QP,
HFI_PROP_MAX_QP_PACKED, HFI_PROP_MAX_QP_PACKED,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_max_qp}, 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_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE, V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE, HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{ENTROPY_MODE, TRANSFORM_8X8}, {ENTROPY_MODE, TRANSFORM_8X8},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_PROFILE_HIGH,
V4L2_CID_MPEG_VIDEO_H264_PROFILE, V4L2_CID_MPEG_VIDEO_H264_PROFILE,
HFI_PROP_PROFILE, HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{ENTROPY_MODE}, {ENTROPY_MODE},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_VP9_PROFILE_0,
V4L2_CID_MPEG_VIDEO_VP9_PROFILE, V4L2_CID_MPEG_VIDEO_VP9_PROFILE,
HFI_PROP_PROFILE, HFI_PROP_PROFILE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_VP9_LEVEL_6_0,
V4L2_CID_MPEG_VIDEO_VP9_LEVEL, V4L2_CID_MPEG_VIDEO_VP9_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_H264_LEVEL, V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_LEVEL_5_0,
V4L2_CID_MPEG_VIDEO_H264_LEVEL, V4L2_CID_MPEG_VIDEO_H264_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_level}, 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_MPEG_VIDEO_HEVC_LEVEL_6_1,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_HEVC_LEVEL_5,
V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
HFI_PROP_LEVEL, HFI_PROP_LEVEL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_level}, 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_MPEG_VIDEO_HEVC_TIER_HIGH,
V4L2_CID_MPEG_VIDEO_HEVC_TIER, V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER, HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, 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_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE, V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE, HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_deblock_mode}, 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_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED,
V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE, V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE,
HFI_PROP_DEBLOCKING_MODE, HFI_PROP_DEBLOCKING_MODE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_deblock_mode}, 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, 1, V4L2_MPEG_MSM_VIDC_ENABLE,
V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE, V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE,
0, 0,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
{TRANSFORM_8X8, ENC, H264, {TRANSFORM_8X8, ENC, H264,
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, 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, 1, MAX_CHROMA_QP_OFFSET,
V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET, V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET,
HFI_PROP_CHROMA_QP_OFFSET, HFI_PROP_CHROMA_QP_OFFSET,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
msm_vidc_adjust_chroma_qp_index_offset, msm_vidc_adjust_chroma_qp_index_offset,
msm_vidc_set_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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE, V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE,
HFI_PROP_DECODE_ORDER_OUTPUT, HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT}, CAP_FLAG_INPUT_PORT},
{DISPLAY_DELAY, DEC, H264|HEVC|VP9, {DISPLAY_DELAY, DEC, H264|HEVC|VP9,
0, 1, 1, 0, 0, 1, 1, 0,
V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY, V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY,
HFI_PROP_DECODE_ORDER_OUTPUT, HFI_PROP_DECODE_ORDER_OUTPUT,
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT}, CAP_FLAG_INPUT_PORT},
/* conceal color */ /* conceal color */
{CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1, {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV, V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_8BIT, 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, {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1,
DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
V4L2_CID_MPEG_VIDEO_MUTE_YUV, V4L2_CID_MPEG_VIDEO_MUTE_YUV,
HFI_PROP_CONCEAL_COLOR_10BIT, HFI_PROP_CONCEAL_COLOR_10BIT,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT}, CAP_FLAG_OUTPUT_PORT},
// TODO // TODO
{STAGE, DEC|ENC, CODECS_ALL, {STAGE, DEC|ENC, CODECS_ALL,
@@ -1305,7 +1305,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MSM_VIDC_STAGE_2, MSM_VIDC_STAGE_2,
0, 0,
HFI_PROP_STAGE, HFI_PROP_STAGE,
CAP_FLAG_ROOT, 0,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_stage}, NULL, msm_vidc_set_stage},
@@ -1325,7 +1325,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
MSM_VIDC_PIPE_4, MSM_VIDC_PIPE_4,
0, 0,
HFI_PROP_PIPE, HFI_PROP_PIPE,
CAP_FLAG_ROOT, 0,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_pipe}, NULL, msm_vidc_set_pipe},
{POC, DEC, H264, 0, 18, 1, 1}, {POC, DEC, H264, 0, 18, 1, 1},
@@ -1383,7 +1383,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
0, 2, 1, 1, 0, 2, 1, 1,
V4L2_CID_MPEG_VIDC_PRIORITY, V4L2_CID_MPEG_VIDC_PRIORITY,
HFI_PROP_SESSION_PRIORITY, HFI_PROP_SESSION_PRIORITY,
CAP_FLAG_ROOT | CAP_FLAG_DYNAMIC_ALLOWED, CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0}, {0}, {0},
msm_vidc_adjust_session_priority, msm_vidc_set_session_priority}, 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, 1, V4L2_MPEG_MSM_VIDC_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,
CAP_FLAG_ROOT, 0,
{0}, {0},
{ENH_LAYER_COUNT}}, {ENH_LAYER_COUNT}},
@@ -1558,7 +1558,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, V4L2_MPEG_VIDEO_BITRATE_MODE_CQ,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE, V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL, HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{TIME_DELTA_BASED_RC, CONSTANT_QUALITY}, {TIME_DELTA_BASED_RC, CONSTANT_QUALITY},
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, 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, 1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC,
HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{BITRATE_MODE}, {0}, {BITRATE_MODE}, {0},
msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32},
{CONSTANT_QUALITY, ENC, HEIC, {CONSTANT_QUALITY, ENC, HEIC,
@@ -1583,14 +1583,14 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, V4L2_MPEG_MSM_VIDC_ENABLE, 1, V4L2_MPEG_MSM_VIDC_ENABLE,
0, 0,
HFI_PROP_HEIC_GRID_ENABLE, HFI_PROP_HEIC_GRID_ENABLE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, NULL, msm_vidc_set_u32},
{GOP_SIZE, ENC, HEIC, {GOP_SIZE, ENC, HEIC,
0, INT_MAX, 1, 0 /* all intra */, 0, INT_MAX, 1, 0 /* all intra */,
V4L2_CID_MPEG_VIDEO_GOP_SIZE, V4L2_CID_MPEG_VIDEO_GOP_SIZE,
HFI_PROP_MAX_GOP_FRAMES, HFI_PROP_MAX_GOP_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_OUTPUT_PORT |
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, NULL, msm_vidc_set_u32},
@@ -1599,7 +1599,7 @@ 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_B_FRAMES, V4L2_CID_MPEG_VIDEO_B_FRAMES,
HFI_PROP_MAX_B_FRAMES, HFI_PROP_MAX_B_FRAMES,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_u32}, NULL, msm_vidc_set_u32},
{PIX_FMTS, ENC, HEIC, {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 | MSM_VIDC_FMT_P010,
MSM_VIDC_FMT_NV12, MSM_VIDC_FMT_NV12,
0, 0, 0, 0,
CAP_FLAG_ROOT, 0,
{0}, {0},
{PROFILE}}, {PROFILE}},
{HEVC_TIER, ENC|DEC, HEIC, {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_MPEG_VIDEO_HEVC_TIER_MAIN,
V4L2_CID_MPEG_VIDEO_HEVC_TIER, V4L2_CID_MPEG_VIDEO_HEVC_TIER,
HFI_PROP_TIER, HFI_PROP_TIER,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {0},
{0}, {0},
NULL, msm_vidc_set_u32_enum}, NULL, msm_vidc_set_u32_enum},
@@ -1627,7 +1627,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
1, (MINIMUM_FPS << 16), 1, (MINIMUM_FPS << 16),
0, 0,
HFI_PROP_FRAME_RATE, HFI_PROP_FRAME_RATE,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT, CAP_FLAG_OUTPUT_PORT,
{0}, {0}, {0}, {0},
NULL, msm_vidc_set_q16}, NULL, msm_vidc_set_q16},
{META_SUBFRAME_OUTPUT, ENC, HEIC, {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); 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_pixelfmt_name(u32 pixelfmt);
const char *v4l2_type_name(u32 port); 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, 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_m2m_ctx *m2m_ctx;
struct v4l2_ctrl **ctrls; struct v4l2_ctrl **ctrls;
u32 num_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_rate_control hfi_rc_type;
enum hfi_layer_encoding_type hfi_layer_type; enum hfi_layer_encoding_type hfi_layer_type;
bool request; bool request;
@@ -143,7 +141,9 @@ struct msm_vidc_inst {
struct list_head response_works; /* list of struct response_work */ struct list_head response_works; /* list of struct response_work */
struct list_head enc_input_crs; struct list_head enc_input_crs;
struct list_head dmabuf_tracker; /* list of struct msm_memory_dmabuf */ 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 once_per_session_set;
bool ipsc_properties_set; bool ipsc_properties_set;
bool opsc_properties_set; bool opsc_properties_set;

View File

@@ -352,9 +352,9 @@ enum msm_vidc_inst_capability_type {
MIN_BUFFERS_INPUT, MIN_BUFFERS_INPUT,
MIN_BUFFERS_OUTPUT, MIN_BUFFERS_OUTPUT,
MBPF, MBPF,
LOSSLESS_MBPF,
BATCH_MBPF, BATCH_MBPF,
BATCH_FPS, BATCH_FPS,
LOSSLESS_MBPF,
SECURE_MBPF, SECURE_MBPF,
MBPS, MBPS,
POWER_SAVE_MBPS, POWER_SAVE_MBPS,
@@ -368,86 +368,59 @@ enum msm_vidc_inst_capability_type {
MB_CYCLES_FW_VPP, MB_CYCLES_FW_VPP,
SECURE_MODE, SECURE_MODE,
TS_REORDER, TS_REORDER,
SLICE_INTERFACE,
HFLIP, HFLIP,
VFLIP, VFLIP,
ROTATION, ROTATION,
SUPER_FRAME, SUPER_FRAME,
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,
BITRATE_MODE, BITRATE_MODE,
LOSSLESS, LOSSLESS,
FRAME_SKIP_MODE, FRAME_SKIP_MODE,
FRAME_RC_ENABLE, FRAME_RC_ENABLE,
CONSTANT_QUALITY,
GOP_SIZE,
GOP_CLOSURE, GOP_CLOSURE,
B_FRAME,
BLUR_TYPES,
BLUR_RESOLUTION,
CSC, CSC,
CSC_CUSTOM_MATRIX, CSC_CUSTOM_MATRIX,
GRID,
LOWLATENCY_MODE,
LTR_COUNT,
USE_LTR, USE_LTR,
MARK_LTR, MARK_LTR,
BASELAYER_PRIORITY, BASELAYER_PRIORITY,
IR_RANDOM,
AU_DELIMITER, AU_DELIMITER,
TIME_DELTA_BASED_RC, GRID,
CONTENT_ADAPTIVE_CODING,
BITRATE_BOOST,
MIN_QUALITY,
VBV_DELAY,
PEAK_BITRATE,
MIN_FRAME_QP,
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,
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,
P_FRAME_QP,
B_FRAME_QP,
LAYER_TYPE, LAYER_TYPE,
LAYER_ENABLE, LAYER_ENABLE,
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,
PROFILE,
LEVEL, LEVEL,
HEVC_TIER, HEVC_TIER,
AV1_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_ENABLE,
DISPLAY_DELAY, DISPLAY_DELAY,
CONCEAL_COLOR_8BIT, CONCEAL_COLOR_8BIT,
CONCEAL_COLOR_10BIT, CONCEAL_COLOR_10BIT,
STAGE, LF_MODE,
LF_ALPHA,
LF_BETA,
SLICE_MAX_BYTES,
SLICE_MAX_MB,
MB_RC,
CHROMA_QP_INDEX_OFFSET,
PIPE, PIPE,
POC, POC,
QUALITY_MODE,
CODED_FRAMES, CODED_FRAMES,
BIT_DEPTH, BIT_DEPTH,
CODEC_CONFIG, CODEC_CONFIG,
@@ -456,20 +429,20 @@ enum msm_vidc_inst_capability_type {
DEFAULT_HEADER, DEFAULT_HEADER,
RAP_FRAME, RAP_FRAME,
SEQ_CHANGE_AT_SYNC_FRAME, SEQ_CHANGE_AT_SYNC_FRAME,
QUALITY_MODE,
PRIORITY, PRIORITY,
ENC_IP_CR,
DPB_LIST, DPB_LIST,
FILM_GRAIN, FILM_GRAIN,
SUPER_BLOCK, SUPER_BLOCK,
DRAP, DRAP,
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_DPB_MISR, META_DPB_MISR,
META_OPB_MISR, META_OPB_MISR,
META_INTERLACE, META_INTERLACE,
ENC_IP_CR,
META_LTR_MARK_USE,
META_TIMESTAMP, META_TIMESTAMP,
META_CONCEALED_MB_CNT, META_CONCEALED_MB_CNT,
META_HIST_INFO, META_HIST_INFO,
@@ -482,25 +455,51 @@ enum msm_vidc_inst_capability_type {
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_DEC_QP_METADATA, META_DEC_QP_METADATA,
COMPLEXITY, COMPLEXITY,
META_MAX_NUM_REORDER_FRAMES, 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, INST_CAP_MAX,
}; };
enum msm_vidc_inst_capability_flags { enum msm_vidc_inst_capability_flags {
CAP_FLAG_NONE = 0, CAP_FLAG_NONE = 0,
CAP_FLAG_ROOT = BIT(0), CAP_FLAG_DYNAMIC_ALLOWED = BIT(0),
CAP_FLAG_DYNAMIC_ALLOWED = BIT(1), CAP_FLAG_MENU = BIT(1),
CAP_FLAG_MENU = BIT(2), CAP_FLAG_INPUT_PORT = BIT(2),
CAP_FLAG_INPUT_PORT = BIT(3), CAP_FLAG_OUTPUT_PORT = BIT(3),
CAP_FLAG_OUTPUT_PORT = BIT(4), CAP_FLAG_CLIENT_SET = BIT(4),
CAP_FLAG_CLIENT_SET = BIT(5),
}; };
struct msm_vidc_inst_cap { struct msm_vidc_inst_cap {
enum msm_vidc_inst_capability_type cap; enum msm_vidc_inst_capability_type cap_id;
s32 min; s32 min;
s32 max; s32 max;
u32 step_or_mask; 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); struct msm_memory_dmabuf *buf);
int msm_memory_pools_init(struct msm_vidc_inst *inst); int msm_memory_pools_init(struct msm_vidc_inst *inst);
void msm_memory_pools_deinit(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); 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_ #endif // _MSM_VIDC_MEMORY_H_

View File

@@ -17,7 +17,7 @@ struct msm_platform_core_capability {
}; };
struct msm_platform_inst_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_domain_type domain;
enum msm_vidc_codec_type codec; enum msm_vidc_codec_type codec;
s32 min; 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); inst->debug_count.ebd, inst->debug_count.ftb, inst->debug_count.fbd);
/* delete the buffer from release list */ /* delete the buffer from release list */
list_del(&buf->list); list_del(&buf->list);
msm_memory_free(inst, buf); msm_memory_pool_free(inst, buf);
return rc; 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.dpb.list);
INIT_LIST_HEAD(&inst->mappings.persist.list); INIT_LIST_HEAD(&inst->mappings.persist.list);
INIT_LIST_HEAD(&inst->mappings.vpss.list); INIT_LIST_HEAD(&inst->mappings.vpss.list);
INIT_LIST_HEAD(&inst->children.list); INIT_LIST_HEAD(&inst->children_list);
INIT_LIST_HEAD(&inst->firmware.list); INIT_LIST_HEAD(&inst->firmware_list);
INIT_LIST_HEAD(&inst->enc_input_crs); INIT_LIST_HEAD(&inst->enc_input_crs);
INIT_LIST_HEAD(&inst->dmabuf_tracker); INIT_LIST_HEAD(&inst->dmabuf_tracker);
for (i = 0; i < MAX_SIGNAL; i++) 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; capability = inst->capabilities;
do { do {
if (capability->cap[i].v4l2_id == id) { if (capability->cap[i].v4l2_id == id) {
cap_id = capability->cap[i].cap; cap_id = capability->cap[i].cap_id;
break; break;
} }
i++; 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 */ /* skip adding if cap_id already present in list */
if (type & FW_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) { if (curr_node->cap_id == cap_id) {
i_vpr_l(inst, i_vpr_l(inst,
"%s: cap[%d] %s already present in FW_LIST\n", "%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; entry->cap_id = cap_id;
if (type & CHILD_LIST) if (type & CHILD_LIST)
list_add_tail(&entry->list, &inst->children.list); list_add_tail(&entry->list, &inst->children_list);
if (type & FW_LIST) if (type & FW_LIST)
list_add_tail(&entry->list, &inst->firmware.list); list_add_tail(&entry->list, &inst->firmware_list);
return 0; return 0;
} }
@@ -325,15 +325,15 @@ static int msm_vidc_add_children(struct msm_vidc_inst *inst,
return rc; return rc;
} }
static bool is_parent_available(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; int i = 0;
u32 cap_parent; u32 cap_parent;
while (i < MAX_CAP_PARENTS && while (i < MAX_CAP_PARENTS &&
inst->capabilities->cap[cap].parents[i]) { inst->capabilities->cap[cap_id].parents[i]) {
cap_parent = inst->capabilities->cap[cap].parents[i]; cap_parent = inst->capabilities->cap[cap_id].parents[i];
if (cap_parent == check_parent) { if (cap_parent == check_parent) {
return true; return true;
} }
@@ -342,11 +342,11 @@ static bool is_parent_available(struct msm_vidc_inst* inst,
i_vpr_e(inst, i_vpr_e(inst,
"%s: missing parent %s for %s\n", "%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; 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) s32 adjusted_val, const char *func)
{ {
if (!inst || !inst->capabilities) { if (!inst || !inst->capabilities) {
@@ -354,23 +354,23 @@ int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap,
return -EINVAL; return -EINVAL;
} }
if (inst->capabilities->cap[cap].value != adjusted_val) if (inst->capabilities->cap[cap_id].value != adjusted_val)
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), func, cap_name(cap_id),
inst->capabilities->cap[cap].value, adjusted_val); 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; return 0;
} }
int msm_vidc_get_parent_value(struct msm_vidc_inst* inst, 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; int rc = 0;
if (is_parent_available(inst, cap, parent, func)) { if (is_parent_available(inst, cap_id, parent, func)) {
switch (parent) { switch (parent) {
case BITRATE_MODE: case BITRATE_MODE:
*value = inst->hfi_rc_type; *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. * skip for uninitialized cap properties.
* Eg: Skip Tramform 8x8 cap that is uninitialized for HEVC codec * 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; return 0;
if (capability->cap[cap_id].adjust) { 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) { if (!ctrl && !capability->cap[cap_id].adjust) {
i_vpr_e(inst, i_vpr_e(inst,
"%s: child cap[%d] %s must have ajdust function\n", "%s: child cap[%d] %s must have ajdust function\n",
__func__, capability->cap[cap_id].cap, __func__, capability->cap[cap_id].cap_id,
cap_name(capability->cap[cap_id].cap)); cap_name(capability->cap[cap_id].cap_id));
return -EINVAL; return -EINVAL;
} }
prev_value = capability->cap[cap_id].value; prev_value = capability->cap[cap_id].value;
@@ -645,7 +645,7 @@ int msm_vidc_ctrl_init(struct msm_vidc_inst *inst)
ctrl_cfg.step = ctrl_cfg.step =
capability->cap[idx].step_or_mask; 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) { if (!ctrl_cfg.name) {
i_vpr_e(inst, "%s: %#x ctrl name is null\n", i_vpr_e(inst, "%s: %#x ctrl name is null\n",
__func__, ctrl_cfg.id); __func__, ctrl_cfg.id);
@@ -936,7 +936,7 @@ int msm_v4l2_op_s_ctrl(struct v4l2_ctrl *ctrl)
/* adjust all children if any */ /* adjust all children if any */
list_for_each_entry_safe(curr_node, tmp_node, list_for_each_entry_safe(curr_node, tmp_node,
&inst->children.list, list) { &inst->children_list, list) {
rc = msm_vidc_adjust_dynamic_property( rc = msm_vidc_adjust_dynamic_property(
inst, curr_node->cap_id, NULL); inst, curr_node->cap_id, NULL);
if (rc) 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) 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( static inline bool is_all_parents_visited(
@@ -2519,7 +2519,7 @@ static int add_node(
{ {
struct msm_vidc_inst_cap_entry *entry; struct msm_vidc_inst_cap_entry *entry;
if (lookup[rcap->cap]) if (lookup[rcap->cap_id])
return 0; return 0;
entry = kzalloc(sizeof(struct msm_vidc_inst_cap_entry), GFP_KERNEL); entry = kzalloc(sizeof(struct msm_vidc_inst_cap_entry), GFP_KERNEL);
@@ -2529,8 +2529,8 @@ static int add_node(
} }
INIT_LIST_HEAD(&entry->list); INIT_LIST_HEAD(&entry->list);
entry->cap_id = rcap->cap; entry->cap_id = rcap->cap_id;
lookup[rcap->cap] = true; lookup[rcap->cap_id] = true;
list_add_tail(&entry->list, list); list_add_tail(&entry->list, list);
return 0; return 0;
@@ -2571,9 +2571,9 @@ int msm_vidc_prepare_dependency_list(struct msm_vidc_inst *inst)
continue; continue;
/* sanitize cap value */ /* 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", 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; rc = -EINVAL;
goto error; 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 * if child node is already part of root or optional list
* then no need to add it again. * 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; continue;
/** /**
@@ -2722,7 +2722,7 @@ int msm_vidc_adjust_v4l2_properties(struct msm_vidc_inst *inst)
* added to inst->children list at this point * added to inst->children list at this point
*/ */
list_for_each_entry_safe(curr_node, tmp_node, 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 * call adjust for each child. Each child adjust
* will also update child list at the tail with * 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; capability = inst->capabilities;
list_for_each_entry_safe(curr_node, tmp_node, 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 */ /* cap_id's like PIX_FMT etc may not have set functions */
if (!capability->cap[curr_node->cap_id].set) 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 #define STABILITY_PAYLOAD_SHIFT 32
struct msm_vidc_cap_name { struct msm_vidc_cap_name {
enum msm_vidc_inst_capability_type cap; enum msm_vidc_inst_capability_type cap_id;
char *name; char *name;
}; };
@@ -67,9 +67,9 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
{MIN_BUFFERS_INPUT, "MIN_BUFFERS_INPUT" }, {MIN_BUFFERS_INPUT, "MIN_BUFFERS_INPUT" },
{MIN_BUFFERS_OUTPUT, "MIN_BUFFERS_OUTPUT" }, {MIN_BUFFERS_OUTPUT, "MIN_BUFFERS_OUTPUT" },
{MBPF, "MBPF" }, {MBPF, "MBPF" },
{LOSSLESS_MBPF, "LOSSLESS_MBPF" },
{BATCH_MBPF, "BATCH_MBPF" }, {BATCH_MBPF, "BATCH_MBPF" },
{BATCH_FPS, "BATCH_FPS" }, {BATCH_FPS, "BATCH_FPS" },
{LOSSLESS_MBPF, "LOSSLESS_MBPF" },
{SECURE_MBPF, "SECURE_MBPF" }, {SECURE_MBPF, "SECURE_MBPF" },
{MBPS, "MBPS" }, {MBPS, "MBPS" },
{POWER_SAVE_MBPS, "POWER_SAVE_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" }, {MB_CYCLES_FW_VPP, "MB_CYCLES_FW_VPP" },
{SECURE_MODE, "SECURE_MODE" }, {SECURE_MODE, "SECURE_MODE" },
{TS_REORDER, "TS_REORDER" }, {TS_REORDER, "TS_REORDER" },
{SLICE_INTERFACE, "SLICE_INTERFACE" },
{HFLIP, "HFLIP" }, {HFLIP, "HFLIP" },
{VFLIP, "VFLIP" }, {VFLIP, "VFLIP" },
{ROTATION, "ROTATION" }, {ROTATION, "ROTATION" },
{SUPER_FRAME, "SUPER_FRAME" }, {SUPER_FRAME, "SUPER_FRAME" },
{SLICE_INTERFACE, "SLICE_INTERFACE" },
{HEADER_MODE, "HEADER_MODE" }, {HEADER_MODE, "HEADER_MODE" },
{PREPEND_SPSPPS_TO_IDR, "PREPEND_SPSPPS_TO_IDR" }, {PREPEND_SPSPPS_TO_IDR, "PREPEND_SPSPPS_TO_IDR" },
{META_SEQ_HDR_NAL, "META_SEQ_HDR_NAL" }, {META_SEQ_HDR_NAL, "META_SEQ_HDR_NAL" },
{WITHOUT_STARTCODE, "WITHOUT_STARTCODE" }, {WITHOUT_STARTCODE, "WITHOUT_STARTCODE" },
{NAL_LENGTH_FIELD, "NAL_LENGTH_FIELD" }, {NAL_LENGTH_FIELD, "NAL_LENGTH_FIELD" },
{REQUEST_I_FRAME, "REQUEST_I_FRAME" }, {REQUEST_I_FRAME, "REQUEST_I_FRAME" },
{BIT_RATE, "BIT_RATE" },
{BITRATE_MODE, "BITRATE_MODE" }, {BITRATE_MODE, "BITRATE_MODE" },
{LOSSLESS, "LOSSLESS" }, {LOSSLESS, "LOSSLESS" },
{FRAME_SKIP_MODE, "FRAME_SKIP_MODE" }, {FRAME_SKIP_MODE, "FRAME_SKIP_MODE" },
{FRAME_RC_ENABLE, "FRAME_RC_ENABLE" }, {FRAME_RC_ENABLE, "FRAME_RC_ENABLE" },
{CONSTANT_QUALITY, "CONSTANT_QUALITY" },
{GOP_SIZE, "GOP_SIZE" },
{GOP_CLOSURE, "GOP_CLOSURE" }, {GOP_CLOSURE, "GOP_CLOSURE" },
{B_FRAME, "B_FRAME" },
{BLUR_TYPES, "BLUR_TYPES" },
{BLUR_RESOLUTION, "BLUR_RESOLUTION" },
{CSC, "CSC" }, {CSC, "CSC" },
{CSC_CUSTOM_MATRIX, "CSC_CUSTOM_MATRIX" }, {CSC_CUSTOM_MATRIX, "CSC_CUSTOM_MATRIX" },
{GRID, "GRID" },
{LOWLATENCY_MODE, "LOWLATENCY_MODE" },
{LTR_COUNT, "LTR_COUNT" },
{USE_LTR, "USE_LTR" }, {USE_LTR, "USE_LTR" },
{MARK_LTR, "MARK_LTR" }, {MARK_LTR, "MARK_LTR" },
{BASELAYER_PRIORITY, "BASELAYER_PRIORITY" }, {BASELAYER_PRIORITY, "BASELAYER_PRIORITY" },
{IR_RANDOM, "IR_RANDOM" },
{AU_DELIMITER, "AU_DELIMITER" }, {AU_DELIMITER, "AU_DELIMITER" },
{TIME_DELTA_BASED_RC, "TIME_DELTA_BASED_RC" }, {GRID, "GRID" },
{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" },
{I_FRAME_MIN_QP, "I_FRAME_MIN_QP" }, {I_FRAME_MIN_QP, "I_FRAME_MIN_QP" },
{P_FRAME_MIN_QP, "P_FRAME_MIN_QP" }, {P_FRAME_MIN_QP, "P_FRAME_MIN_QP" },
{B_FRAME_MIN_QP, "B_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" }, {I_FRAME_MAX_QP, "I_FRAME_MAX_QP" },
{P_FRAME_MAX_QP, "P_FRAME_MAX_QP" }, {P_FRAME_MAX_QP, "P_FRAME_MAX_QP" },
{B_FRAME_MAX_QP, "B_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_TYPE, "LAYER_TYPE" },
{LAYER_ENABLE, "LAYER_ENABLE" }, {LAYER_ENABLE, "LAYER_ENABLE" },
{ENH_LAYER_COUNT, "ENH_LAYER_COUNT" },
{L0_BR, "L0_BR" }, {L0_BR, "L0_BR" },
{L1_BR, "L1_BR" }, {L1_BR, "L1_BR" },
{L2_BR, "L2_BR" }, {L2_BR, "L2_BR" },
{L3_BR, "L3_BR" }, {L3_BR, "L3_BR" },
{L4_BR, "L4_BR" }, {L4_BR, "L4_BR" },
{L5_BR, "L5_BR" }, {L5_BR, "L5_BR" },
{ENTROPY_MODE, "ENTROPY_MODE" },
{PROFILE, "PROFILE" },
{LEVEL, "LEVEL" }, {LEVEL, "LEVEL" },
{HEVC_TIER, "HEVC_TIER" }, {HEVC_TIER, "HEVC_TIER" },
{AV1_TIER, "AV1_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_ENABLE, "DISPLAY_DELAY_ENABLE" },
{DISPLAY_DELAY, "DISPLAY_DELAY" }, {DISPLAY_DELAY, "DISPLAY_DELAY" },
{CONCEAL_COLOR_8BIT, "CONCEAL_COLOR_8BIT" }, {CONCEAL_COLOR_8BIT, "CONCEAL_COLOR_8BIT" },
{CONCEAL_COLOR_10BIT, "CONCEAL_COLOR_10BIT" }, {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" }, {PIPE, "PIPE" },
{POC, "POC" }, {POC, "POC" },
{QUALITY_MODE, "QUALITY_MODE" },
{CODED_FRAMES, "CODED_FRAMES" }, {CODED_FRAMES, "CODED_FRAMES" },
{BIT_DEPTH, "BIT_DEPTH" }, {BIT_DEPTH, "BIT_DEPTH" },
{CODEC_CONFIG, "CODEC_CONFIG" }, {CODEC_CONFIG, "CODEC_CONFIG" },
@@ -171,20 +144,20 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
{DEFAULT_HEADER, "DEFAULT_HEADER" }, {DEFAULT_HEADER, "DEFAULT_HEADER" },
{RAP_FRAME, "RAP_FRAME" }, {RAP_FRAME, "RAP_FRAME" },
{SEQ_CHANGE_AT_SYNC_FRAME, "SEQ_CHANGE_AT_SYNC_FRAME" }, {SEQ_CHANGE_AT_SYNC_FRAME, "SEQ_CHANGE_AT_SYNC_FRAME" },
{QUALITY_MODE, "QUALITY_MODE" },
{PRIORITY, "PRIORITY" }, {PRIORITY, "PRIORITY" },
{ENC_IP_CR, "ENC_IP_CR" },
{DPB_LIST, "DPB_LIST" }, {DPB_LIST, "DPB_LIST" },
{FILM_GRAIN, "FILM_GRAIN" }, {FILM_GRAIN, "FILM_GRAIN" },
{SUPER_BLOCK, "SUPER_BLOCK" }, {SUPER_BLOCK, "SUPER_BLOCK" },
{DRAP, "DRAP" }, {DRAP, "DRAP" },
{ALL_INTRA, "ALL_INTRA" },
{INPUT_METADATA_FD, "INPUT_METADATA_FD" }, {INPUT_METADATA_FD, "INPUT_METADATA_FD" },
{META_BITSTREAM_RESOLUTION, "META_BITSTREAM_RESOLUTION" }, {META_BITSTREAM_RESOLUTION, "META_BITSTREAM_RESOLUTION" },
{META_CROP_OFFSETS, "META_CROP_OFFSETS" }, {META_CROP_OFFSETS, "META_CROP_OFFSETS" },
{META_LTR_MARK_USE, "META_LTR_MARK_USE" },
{META_DPB_MISR, "META_DPB_MISR" }, {META_DPB_MISR, "META_DPB_MISR" },
{META_OPB_MISR, "META_OPB_MISR" }, {META_OPB_MISR, "META_OPB_MISR" },
{META_INTERLACE, "META_INTERLACE" }, {META_INTERLACE, "META_INTERLACE" },
{ENC_IP_CR, "ENC_IP_CR" },
{META_LTR_MARK_USE, "META_LTR_MARK_USE" },
{META_TIMESTAMP, "META_TIMESTAMP" }, {META_TIMESTAMP, "META_TIMESTAMP" },
{META_CONCEALED_MB_CNT, "META_CONCEALED_MB_CNT" }, {META_CONCEALED_MB_CNT, "META_CONCEALED_MB_CNT" },
{META_HIST_INFO, "META_HIST_INFO" }, {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_OUTPUT_BUF_TAG, "META_OUTPUT_BUF_TAG" },
{META_SUBFRAME_OUTPUT, "META_SUBFRAME_OUTPUT" }, {META_SUBFRAME_OUTPUT, "META_SUBFRAME_OUTPUT" },
{META_ENC_QP_METADATA, "META_ENC_QP_METADATA" }, {META_ENC_QP_METADATA, "META_ENC_QP_METADATA" },
{META_ROI_INFO, "META_ROI_INFO" },
{META_DEC_QP_METADATA, "META_DEC_QP_METADATA" }, {META_DEC_QP_METADATA, "META_DEC_QP_METADATA" },
{COMPLEXITY, "COMPLEXITY" }, {COMPLEXITY, "COMPLEXITY" },
{META_MAX_NUM_REORDER_FRAMES, "META_MAX_NUM_REORDER_FRAMES"}, {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" }, {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"; const char *name = "UNKNOWN CAP";
if (cap > ARRAY_SIZE(cap_name_arr)) if (cap_id > ARRAY_SIZE(cap_name_arr))
goto exit; goto exit;
if (cap_name_arr[cap].cap != cap) if (cap_name_arr[cap_id].cap_id != cap_id)
goto exit; goto exit;
name = cap_name_arr[cap].name; name = cap_name_arr[cap_id].name;
exit: exit:
return name; return name;
@@ -2168,7 +2168,7 @@ int msm_vidc_process_readonly_buffers(struct msm_vidc_inst *inst,
buf->attr |= MSM_VIDC_ATTR_READ_ONLY; buf->attr |= MSM_VIDC_ATTR_READ_ONLY;
print_vidc_buffer(VIDC_LOW, "low ", "ro buf removed", inst, ro_buf); print_vidc_buffer(VIDC_LOW, "low ", "ro buf removed", inst, ro_buf);
list_del(&ro_buf->list); list_del(&ro_buf->list);
msm_memory_free(inst, ro_buf); msm_memory_pool_free(inst, ro_buf);
break; break;
} }
} }
@@ -2195,7 +2195,7 @@ int msm_vidc_memory_unmap_completely(struct msm_vidc_inst *inst,
if (!map->refcount) { if (!map->refcount) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf); msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
list_del(&map->list); list_del(&map->list);
msm_memory_free(inst, map); msm_memory_pool_free(inst, map);
break; 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", i_vpr_l(inst, "%s: flushing ts: val %llu, rank %llu\n",
__func__, ts->sort.val, ts->rank); __func__, ts->sort.val, ts->rank);
list_del(&ts->sort.list); list_del(&ts->sort.list);
msm_memory_free(inst, ts); msm_memory_pool_free(inst, ts);
} }
inst->timestamps.count = 0; inst->timestamps.count = 0;
inst->timestamps.rank = 0; inst->timestamps.rank = 0;
@@ -2380,7 +2380,7 @@ int msm_vidc_update_timestamp(struct msm_vidc_inst *inst, u64 timestamp)
return -EINVAL; return -EINVAL;
} }
ts = msm_memory_alloc(inst, MSM_MEM_POOL_TIMESTAMP); ts = msm_memory_pool_alloc(inst, MSM_MEM_POOL_TIMESTAMP);
if (!ts) { if (!ts) {
i_vpr_e(inst, "%s: ts alloc failed\n", __func__); i_vpr_e(inst, "%s: ts alloc failed\n", __func__);
return -ENOMEM; return -ENOMEM;
@@ -2408,7 +2408,7 @@ int msm_vidc_update_timestamp(struct msm_vidc_inst *inst, u64 timestamp)
} }
inst->timestamps.count--; inst->timestamps.count--;
list_del(&ts->sort.list); list_del(&ts->sort.list);
msm_memory_free(inst, ts); msm_memory_pool_free(inst, ts);
} }
return 0; return 0;
@@ -2425,7 +2425,7 @@ int msm_vidc_ts_reorder_insert_timestamp(struct msm_vidc_inst *inst, u64 timesta
} }
/* allocate ts from pool */ /* 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) { if (!ts) {
i_vpr_e(inst, "%s: ts alloc failed\n", __func__); i_vpr_e(inst, "%s: ts alloc failed\n", __func__);
return -ENOMEM; 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) { if (ts->sort.val == timestamp) {
list_del_init(&ts->sort.list); list_del_init(&ts->sort.list);
inst->ts_reorder.count--; inst->ts_reorder.count--;
msm_memory_free(inst, ts); msm_memory_pool_free(inst, ts);
break; break;
} }
} }
@@ -2488,7 +2488,7 @@ int msm_vidc_ts_reorder_get_first_timestamp(struct msm_vidc_inst *inst, u64 *tim
*timestamp = ts->sort.val; *timestamp = ts->sort.val;
inst->ts_reorder.count--; inst->ts_reorder.count--;
msm_memory_free(inst, ts); msm_memory_pool_free(inst, ts);
return 0; 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) { 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); i_vpr_l(inst, "%s: flushing ts: val %lld\n", __func__, ts->sort.val);
list_del(&ts->sort.list); list_del(&ts->sort.list);
msm_memory_free(inst, ts); msm_memory_pool_free(inst, ts);
} }
inst->ts_reorder.count = 0; 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) { if (!map->refcount) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf); msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
list_del(&map->list); list_del(&map->list);
msm_memory_free(inst, map); msm_memory_pool_free(inst, map);
} }
return rc; return rc;
@@ -2621,7 +2621,7 @@ int msm_vidc_unmap_driver_buf(struct msm_vidc_inst *inst,
if (!map->refcount) { if (!map->refcount) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf); msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
list_del(&map->list); list_del(&map->list);
msm_memory_free(inst, map); msm_memory_pool_free(inst, map);
} }
return rc; return rc;
@@ -2656,7 +2656,7 @@ int msm_vidc_map_driver_buf(struct msm_vidc_inst *inst,
} }
if (!found) { if (!found) {
/* new buffer case */ /* new buffer case */
map = msm_memory_alloc(inst, MSM_MEM_POOL_MAP); map = msm_memory_pool_alloc(inst, MSM_MEM_POOL_MAP);
if (!map) { if (!map) {
i_vpr_e(inst, "%s: alloc failed\n", __func__); i_vpr_e(inst, "%s: alloc failed\n", __func__);
return -ENOMEM; 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); rc = msm_vidc_get_delayed_unmap(inst, map);
if (rc) { if (rc) {
msm_vidc_memory_put_dmabuf(inst, map->dmabuf); msm_vidc_memory_put_dmabuf(inst, map->dmabuf);
msm_memory_free(inst, map); msm_memory_pool_free(inst, map);
return rc; return rc;
} }
} }
@@ -2703,7 +2703,7 @@ int msm_vidc_put_driver_buf(struct msm_vidc_inst *inst,
/* delete the buffer from buffers->list */ /* delete the buffer from buffers->list */
list_del(&buf->list); list_del(&buf->list);
msm_memory_free(inst, buf); msm_memory_pool_free(inst, buf);
return rc; return rc;
} }
@@ -2729,7 +2729,7 @@ struct msm_vidc_buffer *msm_vidc_get_driver_buf(struct msm_vidc_inst *inst,
if (!buffers) if (!buffers)
return NULL; return NULL;
buf = msm_memory_alloc(inst, MSM_MEM_POOL_BUFFER); buf = msm_memory_pool_alloc(inst, MSM_MEM_POOL_BUFFER);
if (!buf) { if (!buf) {
i_vpr_e(inst, "%s: alloc failed\n", __func__); i_vpr_e(inst, "%s: alloc failed\n", __func__);
return NULL; return NULL;
@@ -2757,7 +2757,7 @@ struct msm_vidc_buffer *msm_vidc_get_driver_buf(struct msm_vidc_inst *inst,
error: error:
msm_vidc_memory_put_dmabuf(inst, buf->dmabuf); msm_vidc_memory_put_dmabuf(inst, buf->dmabuf);
list_del(&buf->list); list_del(&buf->list);
msm_memory_free(inst, buf); msm_memory_pool_free(inst, buf);
return NULL; 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; struct msm_vidc_inst_cap_entry *temp = NULL, *next = NULL;
if (list_type & CHILD_LIST) { 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); list_del(&temp->list);
kfree(temp); kfree(temp);
} }
INIT_LIST_HEAD(&inst->children.list); INIT_LIST_HEAD(&inst->children_list);
} }
temp = NULL; temp = NULL;
next = NULL; next = NULL;
if (list_type & FW_LIST) { 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); list_del(&temp->list);
kfree(temp); 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) { if (map->dmabuf == buffer->dmabuf) {
msm_vidc_memory_unmap(inst->core, map); msm_vidc_memory_unmap(inst->core, map);
list_del(&map->list); list_del(&map->list);
msm_memory_free(inst, map); msm_memory_pool_free(inst, map);
break; break;
} }
} }
@@ -3346,7 +3346,7 @@ int msm_vidc_destroy_internal_buffer(struct msm_vidc_inst *inst,
if (alloc->dmabuf == buffer->dmabuf) { if (alloc->dmabuf == buffer->dmabuf) {
msm_vidc_memory_free(inst->core, alloc); msm_vidc_memory_free(inst->core, alloc);
list_del(&alloc->list); list_del(&alloc->list);
msm_memory_free(inst, alloc); msm_memory_pool_free(inst, alloc);
break; 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) { list_for_each_entry_safe(buf, dummy, &buffers->list, list) {
if (buf->dmabuf == buffer->dmabuf) { if (buf->dmabuf == buffer->dmabuf) {
list_del(&buf->list); list_del(&buf->list);
msm_memory_free(inst, buf); msm_memory_pool_free(inst, buf);
break; break;
} }
} }
@@ -3434,7 +3434,7 @@ int msm_vidc_create_internal_buffer(struct msm_vidc_inst *inst,
if (!buffers->size) if (!buffers->size)
return 0; return 0;
buffer = msm_memory_alloc(inst, MSM_MEM_POOL_BUFFER); buffer = msm_memory_pool_alloc(inst, MSM_MEM_POOL_BUFFER);
if (!buffer) { if (!buffer) {
i_vpr_e(inst, "%s: buf alloc failed\n", __func__); i_vpr_e(inst, "%s: buf alloc failed\n", __func__);
return -ENOMEM; return -ENOMEM;
@@ -3445,7 +3445,7 @@ int msm_vidc_create_internal_buffer(struct msm_vidc_inst *inst,
buffer->buffer_size = buffers->size; buffer->buffer_size = buffers->size;
list_add_tail(&buffer->list, &buffers->list); 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) { if (!alloc) {
i_vpr_e(inst, "%s: alloc failed\n", __func__); i_vpr_e(inst, "%s: alloc failed\n", __func__);
return -ENOMEM; return -ENOMEM;
@@ -3461,7 +3461,7 @@ int msm_vidc_create_internal_buffer(struct msm_vidc_inst *inst,
return -ENOMEM; return -ENOMEM;
list_add_tail(&alloc->list, &allocations->list); 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) { if (!map) {
i_vpr_e(inst, "%s: map alloc failed\n", __func__); i_vpr_e(inst, "%s: map alloc failed\n", __func__);
return -ENOMEM; return -ENOMEM;
@@ -4354,24 +4354,24 @@ static void update_inst_capability(struct msm_platform_inst_capability *in,
__func__, in, capability); __func__, in, capability);
return; return;
} }
if (in->cap < INST_CAP_MAX) { if (in->cap_id < INST_CAP_MAX) {
capability->cap[in->cap].cap = in->cap; capability->cap[in->cap_id].cap_id = in->cap_id;
capability->cap[in->cap].min = in->min; capability->cap[in->cap_id].min = in->min;
capability->cap[in->cap].max = in->max; capability->cap[in->cap_id].max = in->max;
capability->cap[in->cap].step_or_mask = in->step_or_mask; capability->cap[in->cap_id].step_or_mask = in->step_or_mask;
capability->cap[in->cap].value = in->value; capability->cap[in->cap_id].value = in->value;
capability->cap[in->cap].flags = in->flags; capability->cap[in->cap_id].flags = in->flags;
capability->cap[in->cap].v4l2_id = in->v4l2_id; capability->cap[in->cap_id].v4l2_id = in->v4l2_id;
capability->cap[in->cap].hfi_id = in->hfi_id; capability->cap[in->cap_id].hfi_id = in->hfi_id;
memcpy(capability->cap[in->cap].parents, in->parents, memcpy(capability->cap[in->cap_id].parents, in->parents,
sizeof(capability->cap[in->cap].parents)); sizeof(capability->cap[in->cap_id].parents));
memcpy(capability->cap[in->cap].children, in->children, memcpy(capability->cap[in->cap_id].children, in->children,
sizeof(capability->cap[in->cap].children)); sizeof(capability->cap[in->cap_id].children));
capability->cap[in->cap].adjust = in->adjust; capability->cap[in->cap_id].adjust = in->adjust;
capability->cap[in->cap].set = in->set; capability->cap[in->cap_id].set = in->set;
} else { } else {
d_vpr_e("%s: invalid cap %d\n", d_vpr_e("%s: invalid cap id %d\n",
__func__, in->cap); __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) { list_for_each_entry_safe(buf, dummy, &inst->buffers.read_only.list, list) {
print_vidc_buffer(VIDC_ERR, "err ", "destroying ro buffer", inst, buf); print_vidc_buffer(VIDC_ERR, "err ", "destroying ro buffer", inst, buf);
list_del(&buf->list); 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) { list_for_each_entry_safe(buf, dummy, &inst->buffers.release.list, list) {
print_vidc_buffer(VIDC_ERR, "err ", "destroying release buffer", inst, buf); print_vidc_buffer(VIDC_ERR, "err ", "destroying release buffer", inst, buf);
list_del(&buf->list); 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++) { 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", i_vpr_e(inst, "%s: removing ts: val %lld, rank %lld\n",
__func__, ts->sort.val, ts->rank); __func__, ts->sort.val, ts->rank);
list_del(&ts->sort.list); 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) { 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", i_vpr_e(inst, "%s: removing reorder ts: val %lld\n",
__func__, ts->sort.val); __func__, ts->sort.val);
list_del(&ts->sort.list); 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) { 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 */ /* 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) { if (!buf) {
i_vpr_e(inst, "%s: dmabuf alloc failed\n", __func__); i_vpr_e(inst, "%s: dmabuf alloc failed\n", __func__);
dma_buf_put(dmabuf); 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); dma_buf_put(buf->dmabuf);
/* put tracker instance back to pool */ /* 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, 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); dma_buf_put(buf->dmabuf);
/* put tracker instance back to pool */ /* put tracker instance back to pool */
msm_memory_free(inst, buf); msm_memory_pool_free(inst, buf);
break; break;
} }
} }
@@ -445,7 +445,7 @@ int msm_vidc_memory_free(struct msm_vidc_core *core, struct msm_vidc_alloc *mem)
return rc; 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_alloc_header *hdr;
struct msm_memory_pool *pool; 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; 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_alloc_header *hdr;
struct msm_memory_pool *pool; 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 present, do nothing
*/ */
if (!found) { 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) { if (!ro_buf) {
i_vpr_e(inst, "%s: buffer alloc failed\n", __func__); i_vpr_e(inst, "%s: buffer alloc failed\n", __func__);
return -ENOMEM; return -ENOMEM;
@@ -700,7 +700,7 @@ static int handle_non_read_only_buffer(struct msm_vidc_inst *inst,
if (found) { if (found) {
print_vidc_buffer(VIDC_LOW, "low ", "ro buf deleted", inst, ro_buf); print_vidc_buffer(VIDC_LOW, "low ", "ro buf deleted", inst, ro_buf);
list_del(&ro_buf->list); list_del(&ro_buf->list);
msm_memory_free(inst, ro_buf); msm_memory_pool_free(inst, ro_buf);
} }
return 0; return 0;