OSDN Git Service

media: mediatek: vcodec: Report supported bitrate modes
authorHirokazu Honda <hiroh@chromium.org>
Wed, 22 Jun 2022 08:36:24 +0000 (09:36 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Mon, 27 Jun 2022 08:31:41 +0000 (09:31 +0100)
The media driver supports constant bitrate mode only.
The supported rate control mode is reported through querymenu() and
s_ctrl() fails if non constant bitrate mode (e.g. VBR) is requested.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Irui Wang <irui.wang@mediatek.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c

index d1211a6..ccc7530 100644 (file)
@@ -50,6 +50,14 @@ static int vidioc_venc_s_ctrl(struct v4l2_ctrl *ctrl)
        int ret = 0;
 
        switch (ctrl->id) {
+       case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
+               mtk_v4l2_debug(2, "V4L2_CID_MPEG_VIDEO_BITRATE_MODE val= %d",
+                              ctrl->val);
+               if (ctrl->val != V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) {
+                       mtk_v4l2_err("Unsupported bitrate mode =%d", ctrl->val);
+                       ret = -EINVAL;
+               }
+               break;
        case V4L2_CID_MPEG_VIDEO_BITRATE:
                mtk_v4l2_debug(2, "V4L2_CID_MPEG_VIDEO_BITRATE val = %d",
                               ctrl->val);
@@ -1392,6 +1400,9 @@ int mtk_vcodec_enc_ctrls_setup(struct mtk_vcodec_ctx *ctx)
                               0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);
        v4l2_ctrl_new_std_menu(handler, ops, V4L2_CID_MPEG_VIDEO_VP8_PROFILE,
                               V4L2_MPEG_VIDEO_VP8_PROFILE_0, 0, V4L2_MPEG_VIDEO_VP8_PROFILE_0);
+       v4l2_ctrl_new_std_menu(handler, ops, V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
+                              V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
+                              0, V4L2_MPEG_VIDEO_BITRATE_MODE_CBR);
 
 
        if (handler->error) {