This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: venus: venc: Fix h264 8x8 transform control
Author:  Stanimir Varbanov <[email protected]>
Date:    Tue Feb 8 02:18:16 2022 +0100

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: [email protected] # 5.15+
Fixes: bfee75f73c37 ("media: venus: venc: add support for 
V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM control")
Signed-off-by: Stanimir Varbanov <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/platform/qcom/venus/venc.c       | 4 ++--
 drivers/media/platform/qcom/venus/venc_ctrls.c | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

---

diff --git a/drivers/media/platform/qcom/venus/venc.c 
b/drivers/media/platform/qcom/venus/venc.c
index 84bafc3118cc..adea4c3b8c20 100644
--- a/drivers/media/platform/qcom/venus/venc.c
+++ b/drivers/media/platform/qcom/venus/venc.c
@@ -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);
diff --git a/drivers/media/platform/qcom/venus/venc_ctrls.c 
b/drivers/media/platform/qcom/venus/venc_ctrls.c
index 1ada42df314d..ea5805e71c14 100644
--- a/drivers/media/platform/qcom/venus/venc_ctrls.c
+++ b/drivers/media/platform/qcom/venus/venc_ctrls.c
@@ -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);

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to