Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: mediatek: vcodec: Set the supported vp9 profile for each platform

Set the maximum VP9 codec profile for each platform.
The various mediatek platforms support different profiles for decoding,
the profile of the codec limits the capabilities for decoding.

Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: Sebastian Fricke <sebastian.fricke@collabora.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

authored by

Yunfei Dong and committed by
Hans Verkuil
a00b3f29 6147bdd8

+21 -1
+21 -1
drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c
··· 109 109 .id = V4L2_CID_MPEG_VIDEO_VP9_PROFILE, 110 110 .min = V4L2_MPEG_VIDEO_VP9_PROFILE_0, 111 111 .def = V4L2_MPEG_VIDEO_VP9_PROFILE_0, 112 - .max = V4L2_MPEG_VIDEO_VP9_PROFILE_3, 112 + .max = V4L2_MPEG_VIDEO_VP9_PROFILE_2, 113 + .menu_skip_mask = BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_1), 113 114 }, 114 115 .codec_type = V4L2_PIX_FMT_VP9_FRAME, 115 116 }, ··· 633 632 }; 634 633 } 635 634 635 + static void mtk_vcodec_dec_fill_vp9_profile(struct v4l2_ctrl_config *cfg, 636 + struct mtk_vcodec_dec_ctx *ctx) 637 + { 638 + switch (ctx->dev->chip_name) { 639 + case MTK_VDEC_MT8188: 640 + case MTK_VDEC_MT8195: 641 + cfg->max = V4L2_MPEG_VIDEO_VP9_PROFILE_2; 642 + break; 643 + default: 644 + cfg->max = V4L2_MPEG_VIDEO_VP9_PROFILE_1; 645 + break; 646 + }; 647 + } 648 + 636 649 static void mtk_vcodec_dec_reset_controls(struct v4l2_ctrl_config *cfg, 637 650 struct mtk_vcodec_dec_ctx *ctx) 638 651 { ··· 671 656 case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE: 672 657 mtk_vcodec_dec_fill_h265_profile(cfg, ctx); 673 658 mtk_v4l2_vdec_dbg(3, ctx, "h265 supported profile: %lld %lld", cfg->max, 659 + cfg->menu_skip_mask); 660 + break; 661 + case V4L2_CID_MPEG_VIDEO_VP9_PROFILE: 662 + mtk_vcodec_dec_fill_vp9_profile(cfg, ctx); 663 + mtk_v4l2_vdec_dbg(3, ctx, "vp9 supported profile: %lld %lld", cfg->max, 674 664 cfg->menu_skip_mask); 675 665 break; 676 666 default: