mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 16:37:50 +00: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:
parent
db6f68b51e
commit
3b93a6f009
1 changed files with 21 additions and 25 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue