Loading drivers/media/platform/msm/vidc/msm_vidc_common.c +21 −4 Original line number Diff line number Diff line Loading @@ -5381,6 +5381,7 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst) struct msm_vidc_core *core; u32 output_height, output_width, input_height, input_width; u32 width_min, width_max, height_min, height_max; u32 mbpf_max; if (!inst || !inst->core || !inst->core->device) { dprintk(VIDC_WARN, "%s: Invalid parameter\n", __func__); Loading @@ -5402,10 +5403,19 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst) return -ENOTSUPP; } if (is_secure_session(inst)) { width_min = capability->cap[CAP_SECURE_FRAME_WIDTH].min; width_max = capability->cap[CAP_SECURE_FRAME_WIDTH].max; height_min = capability->cap[CAP_SECURE_FRAME_HEIGHT].min; height_max = capability->cap[CAP_SECURE_FRAME_HEIGHT].max; mbpf_max = capability->cap[CAP_SECURE_MBS_PER_FRAME].max; } else { width_min = capability->cap[CAP_FRAME_WIDTH].min; width_max = capability->cap[CAP_FRAME_WIDTH].max; height_min = capability->cap[CAP_FRAME_HEIGHT].min; height_max = capability->cap[CAP_FRAME_HEIGHT].max; mbpf_max = capability->cap[CAP_MBS_PER_FRAME].max; } output_height = inst->prop.height[CAPTURE_PORT]; output_width = inst->prop.width[CAPTURE_PORT]; Loading Loading @@ -5451,6 +5461,13 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst) width_max, height_max); rc = -ENOTSUPP; } if (!rc && NUM_MBS_PER_FRAME(input_width, input_height) > mbpf_max) { dprintk(VIDC_ERR, "Unsupported mbpf %d, max %d\n", NUM_MBS_PER_FRAME(input_width, input_height), mbpf_max); rc = -ENOTSUPP; } } if (rc) { dprintk(VIDC_ERR, Loading drivers/media/platform/msm/vidc/msm_vidc_common.h +5 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,11 @@ static inline bool is_realtime_session(struct msm_vidc_inst *inst) return !!(inst->flags & VIDC_REALTIME); } static inline bool is_secure_session(struct msm_vidc_inst *inst) { return !!(inst->flags & VIDC_SECURE); } static inline bool is_decode_session(struct msm_vidc_inst *inst) { return inst->session_type == MSM_VIDC_DECODER; Loading drivers/media/platform/msm/vidc/msm_vidc_platform.c +6 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,12 @@ static struct msm_vidc_codec_capability kona_capabilities[] = { {CAP_MBS_PER_SECOND, DEC, MPEG2, 1, 244800, 1, 244800}, {CAP_FRAMERATE, DEC, MPEG2, 1, 30, 1, 30}, {CAP_BITRATE, DEC, MPEG2, 1, 40000000, 1, 20000000}, /* Secure usecase specific */ {CAP_SECURE_FRAME_WIDTH, DOMAINS_ALL, CODECS_ALL, 128, 4096, 1, 1920}, {CAP_SECURE_FRAME_HEIGHT, DOMAINS_ALL, CODECS_ALL, 128, 4096, 1, 1080}, /* (4096 * 2304) / 256 */ {CAP_SECURE_MBS_PER_FRAME, DOMAINS_ALL, CODECS_ALL, 1, 36864, 1, 36864}, }; /* Loading drivers/media/platform/msm/vidc/vidc_hfi_api.h +3 −0 Original line number Diff line number Diff line Loading @@ -272,6 +272,9 @@ enum hal_capability { CAP_MAX_VIDEOCORES, CAP_MAX_WORKMODES, CAP_UBWC_CR_STATS, CAP_SECURE_FRAME_WIDTH, CAP_SECURE_FRAME_HEIGHT, CAP_SECURE_MBS_PER_FRAME, CAP_MAX, }; Loading Loading
drivers/media/platform/msm/vidc/msm_vidc_common.c +21 −4 Original line number Diff line number Diff line Loading @@ -5381,6 +5381,7 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst) struct msm_vidc_core *core; u32 output_height, output_width, input_height, input_width; u32 width_min, width_max, height_min, height_max; u32 mbpf_max; if (!inst || !inst->core || !inst->core->device) { dprintk(VIDC_WARN, "%s: Invalid parameter\n", __func__); Loading @@ -5402,10 +5403,19 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst) return -ENOTSUPP; } if (is_secure_session(inst)) { width_min = capability->cap[CAP_SECURE_FRAME_WIDTH].min; width_max = capability->cap[CAP_SECURE_FRAME_WIDTH].max; height_min = capability->cap[CAP_SECURE_FRAME_HEIGHT].min; height_max = capability->cap[CAP_SECURE_FRAME_HEIGHT].max; mbpf_max = capability->cap[CAP_SECURE_MBS_PER_FRAME].max; } else { width_min = capability->cap[CAP_FRAME_WIDTH].min; width_max = capability->cap[CAP_FRAME_WIDTH].max; height_min = capability->cap[CAP_FRAME_HEIGHT].min; height_max = capability->cap[CAP_FRAME_HEIGHT].max; mbpf_max = capability->cap[CAP_MBS_PER_FRAME].max; } output_height = inst->prop.height[CAPTURE_PORT]; output_width = inst->prop.width[CAPTURE_PORT]; Loading Loading @@ -5451,6 +5461,13 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst) width_max, height_max); rc = -ENOTSUPP; } if (!rc && NUM_MBS_PER_FRAME(input_width, input_height) > mbpf_max) { dprintk(VIDC_ERR, "Unsupported mbpf %d, max %d\n", NUM_MBS_PER_FRAME(input_width, input_height), mbpf_max); rc = -ENOTSUPP; } } if (rc) { dprintk(VIDC_ERR, Loading
drivers/media/platform/msm/vidc/msm_vidc_common.h +5 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,11 @@ static inline bool is_realtime_session(struct msm_vidc_inst *inst) return !!(inst->flags & VIDC_REALTIME); } static inline bool is_secure_session(struct msm_vidc_inst *inst) { return !!(inst->flags & VIDC_SECURE); } static inline bool is_decode_session(struct msm_vidc_inst *inst) { return inst->session_type == MSM_VIDC_DECODER; Loading
drivers/media/platform/msm/vidc/msm_vidc_platform.c +6 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,12 @@ static struct msm_vidc_codec_capability kona_capabilities[] = { {CAP_MBS_PER_SECOND, DEC, MPEG2, 1, 244800, 1, 244800}, {CAP_FRAMERATE, DEC, MPEG2, 1, 30, 1, 30}, {CAP_BITRATE, DEC, MPEG2, 1, 40000000, 1, 20000000}, /* Secure usecase specific */ {CAP_SECURE_FRAME_WIDTH, DOMAINS_ALL, CODECS_ALL, 128, 4096, 1, 1920}, {CAP_SECURE_FRAME_HEIGHT, DOMAINS_ALL, CODECS_ALL, 128, 4096, 1, 1080}, /* (4096 * 2304) / 256 */ {CAP_SECURE_MBS_PER_FRAME, DOMAINS_ALL, CODECS_ALL, 1, 36864, 1, 36864}, }; /* Loading
drivers/media/platform/msm/vidc/vidc_hfi_api.h +3 −0 Original line number Diff line number Diff line Loading @@ -272,6 +272,9 @@ enum hal_capability { CAP_MAX_VIDEOCORES, CAP_MAX_WORKMODES, CAP_UBWC_CR_STATS, CAP_SECURE_FRAME_WIDTH, CAP_SECURE_FRAME_HEIGHT, CAP_SECURE_MBS_PER_FRAME, CAP_MAX, }; Loading