Commit 3b93a6f0 authored by Benjamin Gaignard's avatar Benjamin Gaignard Committed by Mauro Carvalho Chehab

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: default avatarBenjamin Gaignard <benjamin.gaignard@collabora.com>
Reviewed-by: default avatarEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent db6f68b5
...@@ -378,47 +378,43 @@ static void ...@@ -378,47 +378,43 @@ static void
hantro_reset_encoded_fmt(struct hantro_ctx *ctx) hantro_reset_encoded_fmt(struct hantro_ctx *ctx)
{ {
const struct hantro_fmt *vpu_fmt; 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); 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) 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 else
hantro_set_fmt_out(ctx, fmt); hantro_set_fmt_out(ctx, &fmt);
} }
static void static void
hantro_reset_raw_fmt(struct hantro_ctx *ctx) hantro_reset_raw_fmt(struct hantro_ctx *ctx)
{ {
const struct hantro_fmt *raw_vpu_fmt; 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); raw_vpu_fmt = hantro_get_default_fmt(ctx, false);
if (!raw_vpu_fmt)
return;
if (ctx->is_encoder) { if (ctx->is_encoder)
raw_fmt = &ctx->src_fmt;
encoded_fmt = &ctx->dst_fmt; encoded_fmt = &ctx->dst_fmt;
} else { else
raw_fmt = &ctx->dst_fmt;
encoded_fmt = &ctx->src_fmt; encoded_fmt = &ctx->src_fmt;
}
hantro_reset_fmt(raw_fmt, raw_vpu_fmt); hantro_reset_fmt(&raw_fmt, raw_vpu_fmt);
raw_fmt->width = encoded_fmt->width; raw_fmt.width = encoded_fmt->width;
raw_fmt->height = encoded_fmt->height; raw_fmt.height = encoded_fmt->height;
if (ctx->is_encoder) if (ctx->is_encoder)
hantro_set_fmt_out(ctx, raw_fmt); hantro_set_fmt_out(ctx, &raw_fmt);
else else
hantro_set_fmt_cap(ctx, raw_fmt); hantro_set_fmt_cap(ctx, &raw_fmt);
} }
void hantro_reset_fmts(struct hantro_ctx *ctx) void hantro_reset_fmts(struct hantro_ctx *ctx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment