media: verisilicon: Store chroma and motion vectors offset
Store computed values of chroma and motion vectors offset because they depends on width and height values which change if the resolution change. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Reviewed-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> CC: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> CC: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
26711491a8
commit
545bf944f9
@ -328,6 +328,8 @@ struct hantro_vp9_decoded_buffer_info {
|
||||
/* Info needed when the decoded frame serves as a reference frame. */
|
||||
unsigned short width;
|
||||
unsigned short height;
|
||||
size_t chroma_offset;
|
||||
size_t mv_offset;
|
||||
u32 bit_depth : 4;
|
||||
};
|
||||
|
||||
|
@ -158,9 +158,11 @@ static void config_output(struct hantro_ctx *ctx,
|
||||
|
||||
chroma_addr = luma_addr + chroma_offset(ctx, dec_params);
|
||||
hantro_write_addr(ctx->dev, G2_OUT_CHROMA_ADDR, chroma_addr);
|
||||
dst->vp9.chroma_offset = chroma_offset(ctx, dec_params);
|
||||
|
||||
mv_addr = luma_addr + mv_offset(ctx, dec_params);
|
||||
hantro_write_addr(ctx->dev, G2_OUT_MV_ADDR, mv_addr);
|
||||
dst->vp9.mv_offset = mv_offset(ctx, dec_params);
|
||||
}
|
||||
|
||||
struct hantro_vp9_ref_reg {
|
||||
@ -195,7 +197,7 @@ static void config_ref(struct hantro_ctx *ctx,
|
||||
luma_addr = hantro_get_dec_buf_addr(ctx, &buf->base.vb.vb2_buf);
|
||||
hantro_write_addr(ctx->dev, ref_reg->y_base, luma_addr);
|
||||
|
||||
chroma_addr = luma_addr + chroma_offset(ctx, dec_params);
|
||||
chroma_addr = luma_addr + buf->vp9.chroma_offset;
|
||||
hantro_write_addr(ctx->dev, ref_reg->c_base, chroma_addr);
|
||||
}
|
||||
|
||||
@ -238,7 +240,7 @@ static void config_ref_registers(struct hantro_ctx *ctx,
|
||||
config_ref(ctx, dst, &ref_regs[2], dec_params, dec_params->alt_frame_ts);
|
||||
|
||||
mv_addr = hantro_get_dec_buf_addr(ctx, &mv_ref->base.vb.vb2_buf) +
|
||||
mv_offset(ctx, dec_params);
|
||||
mv_ref->vp9.mv_offset;
|
||||
hantro_write_addr(ctx->dev, G2_REF_MV_ADDR(0), mv_addr);
|
||||
|
||||
hantro_reg_write(ctx->dev, &vp9_last_sign_bias,
|
||||
|
Loading…
x
Reference in New Issue
Block a user