media: test-drivers: Use V4L2_FMTDESC_FLAG_ENUM_ALL flag

Since the V4L2_FMTDESC_FLAG_ENUM_ALL flag mostly targets stateless
decoder pixel-format enumeration, update visl test driver to use it.
When V4L2_FMTDESC_FLAG_ENUM_ALL flag is set let the driver returns
one more pixel format.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
Benjamin Gaignard 2024-08-26 17:24:10 +00:00 committed by Hans Verkuil
parent 06f5531958
commit 1faaae7760

View File

@ -136,6 +136,12 @@ static const u32 visl_decoded_fmts[] = {
V4L2_PIX_FMT_YUV420,
};
static const u32 visl_extended_decoded_fmts[] = {
V4L2_PIX_FMT_NV12,
V4L2_PIX_FMT_YUV420,
V4L2_PIX_FMT_P010,
};
const struct visl_coded_format_desc visl_coded_fmts[] = {
{
.pixelformat = V4L2_PIX_FMT_FWHT_STATELESS,
@ -341,11 +347,21 @@ static int visl_enum_fmt_vid_cap(struct file *file, void *priv,
struct v4l2_fmtdesc *f)
{
struct visl_ctx *ctx = visl_file_to_ctx(file);
u32 index = f->index & ~V4L2_FMTDESC_FLAG_ENUM_ALL;
int max_fmts = ctx->coded_format_desc->num_decoded_fmts;
const u32 *decoded_fmts = ctx->coded_format_desc->decoded_fmts;
if (f->index >= ctx->coded_format_desc->num_decoded_fmts)
if (f->index & V4L2_FMTDESC_FLAG_ENUM_ALL) {
max_fmts = ARRAY_SIZE(visl_extended_decoded_fmts);
decoded_fmts = visl_extended_decoded_fmts;
}
f->index = index;
if (index >= max_fmts)
return -EINVAL;
f->pixelformat = ctx->coded_format_desc->decoded_fmts[f->index];
f->pixelformat = decoded_fmts[index];
return 0;
}