diff options
author | Chen-Yu Tsai <wenst@chromium.org> | 2021-10-08 11:04:22 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2021-10-19 08:08:39 +0100 |
commit | 298d8e8f7bcf023aceb60232d59b983255fec0df (patch) | |
tree | 7c205327b54f99e82783537f1fd3aad0c47bbe5b /drivers/staging/media/rkvdec | |
parent | 4c2e5156d9fa63a3f41c2bf56b694ad42df825d7 (diff) | |
download | linux-stable-298d8e8f7bcf023aceb60232d59b983255fec0df.tar.gz linux-stable-298d8e8f7bcf023aceb60232d59b983255fec0df.tar.bz2 linux-stable-298d8e8f7bcf023aceb60232d59b983255fec0df.zip |
media: rkvdec: Do not override sizeimage for output format
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>
Diffstat (limited to 'drivers/staging/media/rkvdec')
-rw-r--r-- | drivers/staging/media/rkvdec/rkvdec-h264.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c index 76e97cbe2512..951e19231da2 100644 --- a/drivers/staging/media/rkvdec/rkvdec-h264.c +++ b/drivers/staging/media/rkvdec/rkvdec-h264.c @@ -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; } |