On Wed, Jun 22, 2022 at 4:37 PM Hirokazu Honda <hiroh@xxxxxxxxxxxx> wrote: > > 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@xxxxxxxxxxxx> > --- > .../media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > index c21367038c34..98d451ce2545 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > @@ -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; I wonder if this code will ever actually be hit. This driver uses v4l2_ctrl_handler, and IIUC all controls are prevalidated by the core before this callback is called. ChenYu > + } > + break; > case V4L2_CID_MPEG_VIDEO_BITRATE: > mtk_v4l2_debug(2, "V4L2_CID_MPEG_VIDEO_BITRATE val = %d", > ctrl->val); > @@ -1373,6 +1381,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) { > -- > 2.37.0.rc0.104.g0611611a94-goog >