media: rkvdec: Do not override sizeimage for output format
authorChen-Yu Tsai <wenst@chromium.org>
Fri, 8 Oct 2021 10:04:22 +0000 (11:04 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 19 Oct 2021 07:08:39 +0000 (08:08 +0100)
The rkvdec H.264 decoder currently overrides sizeimage for the output
format. This causes issues when userspace requires and requests a larger
buffer, but ends up with one of insufficient size.

Instead, only provide a default size if none was requested. This fixes
the video_decode_accelerator_tests from Chromium failing on the first
frame due to insufficient buffer space. It also aligns the behavior
of the rkvdec driver with the Hantro and Cedrus drivers.

Fixes: cd33c830448b ("media: rkvdec: Add the rkvdec driver")
Cc: <stable@vger.kernel.org>
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/rkvdec/rkvdec-h264.c

index 76e97cb..951e192 100644 (file)
@@ -1015,8 +1015,9 @@ static int rkvdec_h264_adjust_fmt(struct rkvdec_ctx *ctx,
        struct v4l2_pix_format_mplane *fmt = &f->fmt.pix_mp;
 
        fmt->num_planes = 1;
-       fmt->plane_fmt[0].sizeimage = fmt->width * fmt->height *
-                                     RKVDEC_H264_MAX_DEPTH_IN_BYTES;
+       if (!fmt->plane_fmt[0].sizeimage)
+               fmt->plane_fmt[0].sizeimage = fmt->width * fmt->height *
+                                             RKVDEC_H264_MAX_DEPTH_IN_BYTES;
        return 0;
 }