mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-01 06:04:48 -04:00
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:
committed by
Mauro Carvalho Chehab
parent
db6f68b51e
commit
3b93a6f009
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user