Message ID | 20220622083624.3204916-1-hiroh@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: mediatek: vcodec: Report supported bitrate modes | expand |
Dear Hiro, Thanks for the patch. On Wed, 2022-06-22 at 17:36 +0900, Hirokazu Honda 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@chromium.org> > --- > .../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; > + } > + 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) { Reviewed-by: Irui Wang <irui.wang@mediatek.com>
On Wed, Jun 22, 2022 at 4:37 PM Hirokazu Honda <hiroh@chromium.org> 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@chromium.org> > --- > .../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 >
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; + } + 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) {
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> --- .../media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 11 +++++++++++ 1 file changed, 11 insertions(+)