]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: visl: Fix ERANGE error when setting enum controls
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 10 Dec 2024 21:02:53 +0000 (16:02 -0500)
committerHans Verkuil <hverkuil@xs4all.nl>
Tue, 25 Feb 2025 10:11:06 +0000 (11:11 +0100)
The visl driver supports both frame and slice mode, with and without a
start-code. But, the range and default for these enum controls was not
set, which currently limits the decoder to enums with a value of 0. Fix
this by setting the decoder mode and start code controls for both the
H.264 and HEVC codecs.

Fixes: 0c078e310b6d ("media: visl: add virtual stateless decoder driver")
Cc: stable@vger.kernel.org
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/test-drivers/visl/visl-core.c

index 01c964ea6f7675c51f63ec548071adc721521fef..5bf3136b36eb30be5cf6b7f65ca3ab7314d84f98 100644 (file)
@@ -161,9 +161,15 @@ static const struct visl_ctrl_desc visl_h264_ctrl_descs[] = {
        },
        {
                .cfg.id = V4L2_CID_STATELESS_H264_DECODE_MODE,
+               .cfg.min = V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
+               .cfg.max = V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
+               .cfg.def = V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
        },
        {
                .cfg.id = V4L2_CID_STATELESS_H264_START_CODE,
+               .cfg.min = V4L2_STATELESS_H264_START_CODE_NONE,
+               .cfg.max = V4L2_STATELESS_H264_START_CODE_ANNEX_B,
+               .cfg.def = V4L2_STATELESS_H264_START_CODE_NONE,
        },
        {
                .cfg.id = V4L2_CID_STATELESS_H264_SLICE_PARAMS,
@@ -198,9 +204,15 @@ static const struct visl_ctrl_desc visl_hevc_ctrl_descs[] = {
        },
        {
                .cfg.id = V4L2_CID_STATELESS_HEVC_DECODE_MODE,
+               .cfg.min = V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+               .cfg.max = V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+               .cfg.def = V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
        },
        {
                .cfg.id = V4L2_CID_STATELESS_HEVC_START_CODE,
+               .cfg.min = V4L2_STATELESS_HEVC_START_CODE_NONE,
+               .cfg.max = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+               .cfg.def = V4L2_STATELESS_HEVC_START_CODE_NONE,
        },
        {
                .cfg.id = V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS,