Loading msm/vidc/msm_vdec.c +2 −0 Original line number Diff line number Diff line Loading @@ -933,6 +933,8 @@ int msm_vdec_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) case V4L2_CID_MPEG_VIDC_VIDEO_PRIORITY: break; case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE: if (!is_valid_operating_rate(inst, ctrl->val)) break; inst->clk_data.operating_rate = ctrl->val; inst->flags &= ~VIDC_TURBO; if (ctrl->val == INT_MAX) Loading msm/vidc/msm_venc.c +3 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/slab.h> #include "msm_venc.h" Loading Loading @@ -1680,6 +1680,8 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) } break; case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE: if (!is_valid_operating_rate(inst, ctrl->val)) break; inst->clk_data.operating_rate = ctrl->val; /* For HEIC image encode, set operating rate to 1 */ if (is_grid_session(inst)) { Loading msm/vidc/msm_vidc_common.h +17 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #ifndef _MSM_VIDC_COMMON_H_ Loading Loading @@ -179,6 +179,22 @@ static inline int msm_comm_s_ctrl(struct msm_vidc_inst *inst, return v4l2_s_ctrl(NULL, &inst->ctrl_handler, ctrl); } static inline bool is_valid_operating_rate(struct msm_vidc_inst *inst, s32 val) { struct hal_capability_supported *cap; cap = &inst->capability.cap[CAP_OPERATINGRATE]; if (((val >> 16) < cap->min || (val >> 16) > cap->max) && val != INT_MAX) { s_vpr_e(inst->sid, "Unsupported operating rate %d min %d max %d\n", val >> 16, cap->min, cap->max); return false; } return true; } bool is_single_session(struct msm_vidc_inst *inst, u32 ignore_flags); int msm_comm_get_num_perf_sessions(struct msm_vidc_inst *inst); bool is_batching_allowed(struct msm_vidc_inst *inst); Loading msm/vidc/msm_vidc_platform.c +7 −2 Original line number Diff line number Diff line Loading @@ -180,6 +180,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v0[] = { /* ((3840x2176)/256)@60fps */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 36, 1958400, 1, 1958400}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 480, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, 480, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 200000000, 1, 20000000}, {CAP_CABAC_BITRATE, ENC, H264, 1, 200000000, 1, 20000000}, {CAP_SCALE_X, ENC, CODECS_ALL, 8192, 65536, 1, 8192}, Loading Loading @@ -210,7 +211,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v0[] = { {CAP_MBS_PER_FRAME, ENC|DEC, VP8, 36, 34816, 1, 8160}, /* (3840 * 2176) / 256) * 30*/ {CAP_MBS_PER_SECOND, ENC|DEC, VP8, 36, 979200, 1, 244800}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 30, 1, 30}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 240, 1, 30}, {CAP_BITRATE, ENC, VP8, 1, 100000000, 1, 20000000}, {CAP_BITRATE, DEC, VP8, 1, 100000000, 1, 20000000}, Loading Loading @@ -275,6 +276,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v1[] = { /* UHD@30 decode + 1080@30 encode */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 36, 1224000, 1, 1224000}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 240, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, 240, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 100000000, 1, 20000000}, {CAP_CABAC_BITRATE, ENC, H264, 1, 100000000, 1, 20000000}, {CAP_SCALE_X, ENC, CODECS_ALL, 8192, 65536, 1, 8192}, Loading Loading @@ -305,7 +307,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v1[] = { {CAP_MBS_PER_FRAME, ENC|DEC, VP8, 36, 8160, 1, 8160}, /* ((1920 * 1088) / 256) * 60*/ {CAP_MBS_PER_SECOND, ENC|DEC, VP8, 36, 489600, 1, 244800}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 60, 1, 30}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 120, 1, 30}, {CAP_BITRATE, ENC, VP8, 1, 40000000, 1, 20000000}, {CAP_BITRATE, DEC, VP8, 1, 100000000, 1, 20000000}, Loading Loading @@ -370,6 +372,7 @@ static struct msm_vidc_codec_capability bengal_capabilities_v0[] = { /* 1080@30 decode + 1080@30 encode */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 489600, 1, 244800}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 120, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 60000000, 1, 20000000}, {CAP_HIER_P_NUM_ENH_LAYERS, ENC, H264|HEVC, 0, 6, 1, 0}, {CAP_LTR_COUNT, ENC, H264|HEVC, 0, 4, 1, 0}, Loading Loading @@ -430,6 +433,7 @@ static struct msm_vidc_codec_capability bengal_capabilities_v1[] = { /* 1920*1088 @30fps */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 244800, 1, 244800}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 120, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 60000000, 1, 20000000}, {CAP_HIER_P_NUM_ENH_LAYERS, ENC, H264|HEVC, 0, 6, 1, 0}, {CAP_LTR_COUNT, ENC, H264|HEVC, 0, 4, 1, 0}, Loading Loading @@ -490,6 +494,7 @@ static struct msm_vidc_codec_capability kona_capabilities[] = { /* ((1920 * 1088) / 256) * 960 fps */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 7833600, 1, 7833600}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 960, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 220000000, 1, 20000000}, {CAP_BITRATE, ENC, HEVC, 1, 160000000, 1, 20000000}, {CAP_CABAC_BITRATE, ENC, H264, 1, 160000000, 1, 20000000}, Loading msm/vidc/vidc_hfi_api.h +2 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #ifndef __VIDC_HFI_API_H__ Loading Loading @@ -244,6 +244,7 @@ enum hal_capability { CAP_MBS_PER_FRAME, CAP_MBS_PER_SECOND, CAP_FRAMERATE, CAP_OPERATINGRATE, CAP_SCALE_X, CAP_SCALE_Y, CAP_BITRATE, Loading Loading
msm/vidc/msm_vdec.c +2 −0 Original line number Diff line number Diff line Loading @@ -933,6 +933,8 @@ int msm_vdec_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) case V4L2_CID_MPEG_VIDC_VIDEO_PRIORITY: break; case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE: if (!is_valid_operating_rate(inst, ctrl->val)) break; inst->clk_data.operating_rate = ctrl->val; inst->flags &= ~VIDC_TURBO; if (ctrl->val == INT_MAX) Loading
msm/vidc/msm_venc.c +3 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/slab.h> #include "msm_venc.h" Loading Loading @@ -1680,6 +1680,8 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) } break; case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE: if (!is_valid_operating_rate(inst, ctrl->val)) break; inst->clk_data.operating_rate = ctrl->val; /* For HEIC image encode, set operating rate to 1 */ if (is_grid_session(inst)) { Loading
msm/vidc/msm_vidc_common.h +17 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #ifndef _MSM_VIDC_COMMON_H_ Loading Loading @@ -179,6 +179,22 @@ static inline int msm_comm_s_ctrl(struct msm_vidc_inst *inst, return v4l2_s_ctrl(NULL, &inst->ctrl_handler, ctrl); } static inline bool is_valid_operating_rate(struct msm_vidc_inst *inst, s32 val) { struct hal_capability_supported *cap; cap = &inst->capability.cap[CAP_OPERATINGRATE]; if (((val >> 16) < cap->min || (val >> 16) > cap->max) && val != INT_MAX) { s_vpr_e(inst->sid, "Unsupported operating rate %d min %d max %d\n", val >> 16, cap->min, cap->max); return false; } return true; } bool is_single_session(struct msm_vidc_inst *inst, u32 ignore_flags); int msm_comm_get_num_perf_sessions(struct msm_vidc_inst *inst); bool is_batching_allowed(struct msm_vidc_inst *inst); Loading
msm/vidc/msm_vidc_platform.c +7 −2 Original line number Diff line number Diff line Loading @@ -180,6 +180,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v0[] = { /* ((3840x2176)/256)@60fps */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 36, 1958400, 1, 1958400}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 480, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, 480, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 200000000, 1, 20000000}, {CAP_CABAC_BITRATE, ENC, H264, 1, 200000000, 1, 20000000}, {CAP_SCALE_X, ENC, CODECS_ALL, 8192, 65536, 1, 8192}, Loading Loading @@ -210,7 +211,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v0[] = { {CAP_MBS_PER_FRAME, ENC|DEC, VP8, 36, 34816, 1, 8160}, /* (3840 * 2176) / 256) * 30*/ {CAP_MBS_PER_SECOND, ENC|DEC, VP8, 36, 979200, 1, 244800}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 30, 1, 30}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 240, 1, 30}, {CAP_BITRATE, ENC, VP8, 1, 100000000, 1, 20000000}, {CAP_BITRATE, DEC, VP8, 1, 100000000, 1, 20000000}, Loading Loading @@ -275,6 +276,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v1[] = { /* UHD@30 decode + 1080@30 encode */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 36, 1224000, 1, 1224000}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 240, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, 240, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 100000000, 1, 20000000}, {CAP_CABAC_BITRATE, ENC, H264, 1, 100000000, 1, 20000000}, {CAP_SCALE_X, ENC, CODECS_ALL, 8192, 65536, 1, 8192}, Loading Loading @@ -305,7 +307,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v1[] = { {CAP_MBS_PER_FRAME, ENC|DEC, VP8, 36, 8160, 1, 8160}, /* ((1920 * 1088) / 256) * 60*/ {CAP_MBS_PER_SECOND, ENC|DEC, VP8, 36, 489600, 1, 244800}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 60, 1, 30}, {CAP_FRAMERATE, ENC|DEC, VP8, 1, 120, 1, 30}, {CAP_BITRATE, ENC, VP8, 1, 40000000, 1, 20000000}, {CAP_BITRATE, DEC, VP8, 1, 100000000, 1, 20000000}, Loading Loading @@ -370,6 +372,7 @@ static struct msm_vidc_codec_capability bengal_capabilities_v0[] = { /* 1080@30 decode + 1080@30 encode */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 489600, 1, 244800}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 120, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 60000000, 1, 20000000}, {CAP_HIER_P_NUM_ENH_LAYERS, ENC, H264|HEVC, 0, 6, 1, 0}, {CAP_LTR_COUNT, ENC, H264|HEVC, 0, 4, 1, 0}, Loading Loading @@ -430,6 +433,7 @@ static struct msm_vidc_codec_capability bengal_capabilities_v1[] = { /* 1920*1088 @30fps */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 244800, 1, 244800}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 120, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 60000000, 1, 20000000}, {CAP_HIER_P_NUM_ENH_LAYERS, ENC, H264|HEVC, 0, 6, 1, 0}, {CAP_LTR_COUNT, ENC, H264|HEVC, 0, 4, 1, 0}, Loading Loading @@ -490,6 +494,7 @@ static struct msm_vidc_codec_capability kona_capabilities[] = { /* ((1920 * 1088) / 256) * 960 fps */ {CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 7833600, 1, 7833600}, {CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 960, 1, 30}, {CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30}, {CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 220000000, 1, 20000000}, {CAP_BITRATE, ENC, HEVC, 1, 160000000, 1, 20000000}, {CAP_CABAC_BITRATE, ENC, H264, 1, 160000000, 1, 20000000}, Loading
msm/vidc/vidc_hfi_api.h +2 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #ifndef __VIDC_HFI_API_H__ Loading Loading @@ -244,6 +244,7 @@ enum hal_capability { CAP_MBS_PER_FRAME, CAP_MBS_PER_SECOND, CAP_FRAMERATE, CAP_OPERATINGRATE, CAP_SCALE_X, CAP_SCALE_Y, CAP_BITRATE, Loading