media: venus: venc: Fix h264 8x8 transform control
During encoder driver open controls are initialized via a call to v4l2_ctrl_handler_setup which returns EINVAL error for V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM v4l2 control. The control default value is disabled and because of firmware limitations 8x8 transform cannot be disabled for the supported HIGH and CONSTRAINED_HIGH profiles. To fix the issue change the control default value to enabled (this is fine because the firmware enables 8x8 transform for high and constrained_high profiles by default). Also, correct the checking of profile ids in s_ctrl from hfi to v4l2 ids. cc: stable@vger.kernel.org # 5.15+ Fixes: bfee75f73c37 ("media: venus: venc: add support for V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM control") Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
8403fdd775
commit
61b3317dd4
@ -662,8 +662,8 @@ static int venc_set_properties(struct venus_inst *inst)
|
||||
|
||||
ptype = HFI_PROPERTY_PARAM_VENC_H264_TRANSFORM_8X8;
|
||||
h264_transform.enable_type = 0;
|
||||
if (ctr->profile.h264 == HFI_H264_PROFILE_HIGH ||
|
||||
ctr->profile.h264 == HFI_H264_PROFILE_CONSTRAINED_HIGH)
|
||||
if (ctr->profile.h264 == V4L2_MPEG_VIDEO_H264_PROFILE_HIGH ||
|
||||
ctr->profile.h264 == V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH)
|
||||
h264_transform.enable_type = ctr->h264_8x8_transform;
|
||||
|
||||
ret = hfi_session_set_property(inst, ptype, &h264_transform);
|
||||
|
@ -320,8 +320,8 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl)
|
||||
ctr->intra_refresh_period = ctrl->val;
|
||||
break;
|
||||
case V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM:
|
||||
if (ctr->profile.h264 != HFI_H264_PROFILE_HIGH &&
|
||||
ctr->profile.h264 != HFI_H264_PROFILE_CONSTRAINED_HIGH)
|
||||
if (ctr->profile.h264 != V4L2_MPEG_VIDEO_H264_PROFILE_HIGH &&
|
||||
ctr->profile.h264 != V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
@ -457,7 +457,7 @@ int venc_ctrl_init(struct venus_inst *inst)
|
||||
V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP, 1, 51, 1, 1);
|
||||
|
||||
v4l2_ctrl_new_std(&inst->ctrl_handler, &venc_ctrl_ops,
|
||||
V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM, 0, 1, 1, 0);
|
||||
V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM, 0, 1, 1, 1);
|
||||
|
||||
v4l2_ctrl_new_std(&inst->ctrl_handler, &venc_ctrl_ops,
|
||||
V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP, 1, 51, 1, 1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user