Skip to content

Commit 2f5d0ae

Browse files
Xiaoyong Lumchehab
authored andcommitted
media: mediatek: vcodec: support stateless AV1 decoder
Add mediatek av1 decoder linux driver which use the stateless API in MT8195. Signed-off-by: Xiaoyong Lu<xiaoyong.lu@mediatek.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
1 parent 80c7373 commit 2f5d0ae

8 files changed

Lines changed: 2291 additions & 1 deletion

File tree

drivers/media/platform/mediatek/vcodec/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ mtk-vcodec-dec-y := vdec/vdec_h264_if.o \
1010
vdec/vdec_vp8_req_if.o \
1111
vdec/vdec_vp9_if.o \
1212
vdec/vdec_vp9_req_lat_if.o \
13+
vdec/vdec_av1_req_lat_if.o \
1314
vdec/vdec_h264_req_if.o \
1415
vdec/vdec_h264_req_common.o \
1516
vdec/vdec_h264_req_multi_if.o \

drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,51 @@ static const struct mtk_stateless_control mtk_stateless_controls[] = {
159159
},
160160
.codec_type = V4L2_PIX_FMT_HEVC_SLICE,
161161
},
162+
{
163+
.cfg = {
164+
.id = V4L2_CID_STATELESS_AV1_SEQUENCE,
165+
166+
},
167+
.codec_type = V4L2_PIX_FMT_AV1_FRAME,
168+
},
169+
{
170+
.cfg = {
171+
.id = V4L2_CID_STATELESS_AV1_FRAME,
172+
173+
},
174+
.codec_type = V4L2_PIX_FMT_AV1_FRAME,
175+
},
176+
{
177+
.cfg = {
178+
.id = V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY,
179+
.dims = { V4L2_AV1_MAX_TILE_COUNT },
180+
181+
},
182+
.codec_type = V4L2_PIX_FMT_AV1_FRAME,
183+
},
184+
{
185+
.cfg = {
186+
.id = V4L2_CID_MPEG_VIDEO_AV1_PROFILE,
187+
.min = V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN,
188+
.def = V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN,
189+
.max = V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN,
190+
},
191+
.codec_type = V4L2_PIX_FMT_AV1_FRAME,
192+
},
193+
{
194+
.cfg = {
195+
.id = V4L2_CID_MPEG_VIDEO_AV1_LEVEL,
196+
.min = V4L2_MPEG_VIDEO_AV1_LEVEL_2_0,
197+
.def = V4L2_MPEG_VIDEO_AV1_LEVEL_4_0,
198+
.max = V4L2_MPEG_VIDEO_AV1_LEVEL_5_1,
199+
},
200+
.codec_type = V4L2_PIX_FMT_AV1_FRAME,
201+
},
162202
};
163203

164204
#define NUM_CTRLS ARRAY_SIZE(mtk_stateless_controls)
165205

166-
static struct mtk_video_fmt mtk_video_formats[6];
206+
static struct mtk_video_fmt mtk_video_formats[7];
167207

168208
static struct mtk_video_fmt default_out_format;
169209
static struct mtk_video_fmt default_cap_format;
@@ -409,6 +449,7 @@ static void mtk_vcodec_add_formats(unsigned int fourcc,
409449
case V4L2_PIX_FMT_VP8_FRAME:
410450
case V4L2_PIX_FMT_VP9_FRAME:
411451
case V4L2_PIX_FMT_HEVC_SLICE:
452+
case V4L2_PIX_FMT_AV1_FRAME:
412453
mtk_video_formats[count_formats].fourcc = fourcc;
413454
mtk_video_formats[count_formats].type = MTK_FMT_DEC;
414455
mtk_video_formats[count_formats].num_planes = 1;
@@ -469,6 +510,10 @@ static void mtk_vcodec_get_supported_formats(struct mtk_vcodec_ctx *ctx)
469510
mtk_vcodec_add_formats(V4L2_PIX_FMT_HEVC_SLICE, ctx);
470511
out_format_count++;
471512
}
513+
if (ctx->dev->dec_capability & MTK_VDEC_FORMAT_AV1_FRAME) {
514+
mtk_vcodec_add_formats(V4L2_PIX_FMT_AV1_FRAME, ctx);
515+
out_format_count++;
516+
}
472517

473518
if (cap_format_count)
474519
default_cap_format = mtk_video_formats[cap_format_count - 1];

drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ enum mtk_vdec_format_types {
347347
MTK_VDEC_FORMAT_H264_SLICE = 0x100,
348348
MTK_VDEC_FORMAT_VP8_FRAME = 0x200,
349349
MTK_VDEC_FORMAT_VP9_FRAME = 0x400,
350+
MTK_VDEC_FORMAT_AV1_FRAME = 0x800,
350351
MTK_VDEC_FORMAT_HEVC_FRAME = 0x1000,
351352
MTK_VCODEC_INNER_RACING = 0x20000,
352353
};

0 commit comments

Comments
 (0)