OSDN Git Service

media: venus: Add support for H265 controls
authorKelvin Lawson <klawson@lisden.com>
Mon, 10 Dec 2018 14:11:45 +0000 (09:11 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 21 May 2019 13:02:14 +0000 (09:02 -0400)
Add support for V4L2 H265 controls:
 * V4L2_CID_MPEG_VIDEO_HEVC_PROFILE
 * V4L2_CID_MPEG_VIDEO_HEVC_LEVEL

Signed-off-by: Kelvin Lawson <klawson@lisden.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/qcom/venus/venc_ctrls.c

index ac1e1d2..bd4538a 100644 (file)
@@ -117,6 +117,9 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl)
        case V4L2_CID_MPEG_VIDEO_H264_PROFILE:
                ctr->profile.h264 = ctrl->val;
                break;
+       case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:
+               ctr->profile.hevc = ctrl->val;
+               break;
        case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
                ctr->profile.vpx = ctrl->val;
                break;
@@ -126,6 +129,9 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl)
        case V4L2_CID_MPEG_VIDEO_H264_LEVEL:
                ctr->level.h264 = ctrl->val;
                break;
+       case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:
+               ctr->level.hevc = ctrl->val;
+               break;
        case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP:
                ctr->h264_i_qp = ctrl->val;
                break;
@@ -217,7 +223,7 @@ int venc_ctrl_init(struct venus_inst *inst)
 {
        int ret;
 
-       ret = v4l2_ctrl_handler_init(&inst->ctrl_handler, 28);
+       ret = v4l2_ctrl_handler_init(&inst->ctrl_handler, 30);
        if (ret)
                return ret;
 
@@ -246,6 +252,19 @@ int venc_ctrl_init(struct venus_inst *inst)
                0, V4L2_MPEG_VIDEO_MPEG4_LEVEL_0);
 
        v4l2_ctrl_new_std_menu(&inst->ctrl_handler, &venc_ctrl_ops,
+               V4L2_CID_MPEG_VIDEO_HEVC_PROFILE,
+               V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
+               ~((1 << V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
+                 (1 << V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
+                 (1 << V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10)),
+               V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN);
+
+       v4l2_ctrl_new_std_menu(&inst->ctrl_handler, &venc_ctrl_ops,
+               V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
+               V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2,
+               0, V4L2_MPEG_VIDEO_HEVC_LEVEL_1);
+
+       v4l2_ctrl_new_std_menu(&inst->ctrl_handler, &venc_ctrl_ops,
                V4L2_CID_MPEG_VIDEO_H264_PROFILE,
                V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH,
                ~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |