media: verisilicon: Compute motion vectors size for AV1 frames
Compute the additional space required to store motion vectors at the end of the frames buffers. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
7040ed4ee6
commit
1b9ef2744c
@ -417,6 +417,19 @@ hantro_hevc_mv_size(unsigned int width, unsigned int height)
|
||||
return width * height / 16;
|
||||
}
|
||||
|
||||
static inline unsigned short hantro_av1_num_sbs(unsigned short dimension)
|
||||
{
|
||||
return DIV_ROUND_UP(dimension, 64);
|
||||
}
|
||||
|
||||
static inline size_t
|
||||
hantro_av1_mv_size(unsigned int width, unsigned int height)
|
||||
{
|
||||
size_t num_sbs = hantro_av1_num_sbs(width) * hantro_av1_num_sbs(height);
|
||||
|
||||
return ALIGN(num_sbs * 384, 16) * 2 + 512;
|
||||
}
|
||||
|
||||
int hantro_g1_mpeg2_dec_run(struct hantro_ctx *ctx);
|
||||
int rockchip_vpu2_mpeg2_dec_run(struct hantro_ctx *ctx);
|
||||
void hantro_mpeg2_dec_copy_qtable(u8 *qtable,
|
||||
|
@ -213,6 +213,9 @@ int hantro_postproc_alloc(struct hantro_ctx *ctx)
|
||||
else if (ctx->vpu_src_fmt->fourcc == V4L2_PIX_FMT_HEVC_SLICE)
|
||||
buf_size += hantro_hevc_mv_size(pix_mp.width,
|
||||
pix_mp.height);
|
||||
else if (ctx->vpu_src_fmt->fourcc == V4L2_PIX_FMT_AV1_FRAME)
|
||||
buf_size += hantro_av1_mv_size(pix_mp.width,
|
||||
pix_mp.height);
|
||||
|
||||
for (i = 0; i < num_buffers; ++i) {
|
||||
struct hantro_aux_buf *priv = &ctx->postproc.dec_q[i];
|
||||
|
@ -333,6 +333,11 @@ static int hantro_try_fmt(const struct hantro_ctx *ctx,
|
||||
pix_mp->plane_fmt[0].sizeimage +=
|
||||
hantro_hevc_mv_size(pix_mp->width,
|
||||
pix_mp->height);
|
||||
else if (ctx->vpu_src_fmt->fourcc == V4L2_PIX_FMT_AV1_FRAME &&
|
||||
!hantro_needs_postproc(ctx, fmt))
|
||||
pix_mp->plane_fmt[0].sizeimage +=
|
||||
hantro_av1_mv_size(pix_mp->width,
|
||||
pix_mp->height);
|
||||
} else if (!pix_mp->plane_fmt[0].sizeimage) {
|
||||
/*
|
||||
* For coded formats the application can specify
|
||||
|
Loading…
x
Reference in New Issue
Block a user