media: mediatek: vcodec: Skip unsupported h264 encoder profile
authorIrui Wang <irui.wang@mediatek.com>
Mon, 26 Sep 2022 09:35:01 +0000 (17:35 +0800)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Mon, 24 Oct 2022 17:03:53 +0000 (19:03 +0200)
The encoder driver supports h264 baseline, main, high encoder
profile. Set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
the unsupported profile.

get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
        0: Baseline
        2: Main
        4: High

Signed-off-by: Irui Wang <irui.wang@mediatek.com>
Tested-by: Allen-KH Cheng <allen-kh.cheng@mediatek.com>
Reviewed-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c

index d810a78..d65800a 100644 (file)
@@ -1397,7 +1397,10 @@ int mtk_vcodec_enc_ctrls_setup(struct mtk_vcodec_ctx *ctx)
                        0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
        v4l2_ctrl_new_std_menu(handler, ops, V4L2_CID_MPEG_VIDEO_H264_PROFILE,
                        V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
-                       0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
+                       ~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
+                         (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
+                         (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
+                       V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
        v4l2_ctrl_new_std_menu(handler, ops, V4L2_CID_MPEG_VIDEO_H264_LEVEL,
                               h264_max_level,
                               0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);