media: verisilicon: Do not use ctx fields as format storage when resetting

Source and destination pixel formats fields of context structure should
not be used as storage when resetting the format.
Use local variables instead and let hantro_set_fmt_out() and
hantro_set_fmt_cap() set them correctly later.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
Benjamin Gaignard 2023-02-20 10:48:45 +00:00 committed by Mauro Carvalho Chehab
parent db6f68b51e
commit 3b93a6f009

View file

@ -378,47 +378,43 @@ static void
hantro_reset_encoded_fmt(struct hantro_ctx *ctx)
{
const struct hantro_fmt *vpu_fmt;
struct v4l2_pix_format_mplane *fmt;
struct v4l2_pix_format_mplane fmt;
vpu_fmt = hantro_get_default_fmt(ctx, true);
if (!vpu_fmt)
return;
hantro_reset_fmt(&fmt, vpu_fmt);
fmt.width = vpu_fmt->frmsize.min_width;
fmt.height = vpu_fmt->frmsize.min_height;
if (ctx->is_encoder)
fmt = &ctx->dst_fmt;
hantro_set_fmt_cap(ctx, &fmt);
else
fmt = &ctx->src_fmt;
hantro_reset_fmt(fmt, vpu_fmt);
fmt->width = vpu_fmt->frmsize.min_width;
fmt->height = vpu_fmt->frmsize.min_height;
if (ctx->is_encoder)
hantro_set_fmt_cap(ctx, fmt);
else
hantro_set_fmt_out(ctx, fmt);
hantro_set_fmt_out(ctx, &fmt);
}
static void
hantro_reset_raw_fmt(struct hantro_ctx *ctx)
{
const struct hantro_fmt *raw_vpu_fmt;
struct v4l2_pix_format_mplane *raw_fmt, *encoded_fmt;
struct v4l2_pix_format_mplane raw_fmt, *encoded_fmt;
raw_vpu_fmt = hantro_get_default_fmt(ctx, false);
if (!raw_vpu_fmt)
return;
if (ctx->is_encoder) {
raw_fmt = &ctx->src_fmt;
encoded_fmt = &ctx->dst_fmt;
} else {
raw_fmt = &ctx->dst_fmt;
encoded_fmt = &ctx->src_fmt;
}
hantro_reset_fmt(raw_fmt, raw_vpu_fmt);
raw_fmt->width = encoded_fmt->width;
raw_fmt->height = encoded_fmt->height;
if (ctx->is_encoder)
hantro_set_fmt_out(ctx, raw_fmt);
encoded_fmt = &ctx->dst_fmt;
else
hantro_set_fmt_cap(ctx, raw_fmt);
encoded_fmt = &ctx->src_fmt;
hantro_reset_fmt(&raw_fmt, raw_vpu_fmt);
raw_fmt.width = encoded_fmt->width;
raw_fmt.height = encoded_fmt->height;
if (ctx->is_encoder)
hantro_set_fmt_out(ctx, &raw_fmt);
else
hantro_set_fmt_cap(ctx, &raw_fmt);
}
void hantro_reset_fmts(struct hantro_ctx *ctx)