From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
To: ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de,
mchehab@kernel.org, robh+dt@kernel.org,
krzysztof.kozlowski+dt@linaro.org, heiko@sntech.de,
daniel.almeida@collabora.com, nicolas.dufresne@collabora.co.uk
Cc: linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, kernel@collabora.com,
Benjamin Gaignard <benjamin.gaignard@collabora.com>
Subject: [PATCH v1 5/9] media: verisilicon: Compute motion vectors size for AV1 frames
Date: Mon, 19 Dec 2022 16:56:12 +0100 [thread overview]
Message-ID: <20221219155616.848690-6-benjamin.gaignard@collabora.com> (raw)
In-Reply-To: <20221219155616.848690-1-benjamin.gaignard@collabora.com>
Compute the additional required to store motion vectors at
the end of the frames buffers.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
drivers/media/platform/verisilicon/hantro_hw.h | 13 +++++++++++++
.../media/platform/verisilicon/hantro_postproc.c | 3 +++
drivers/media/platform/verisilicon/hantro_v4l2.c | 5 +++++
3 files changed, 21 insertions(+)
diff --git a/drivers/media/platform/verisilicon/hantro_hw.h b/drivers/media/platform/verisilicon/hantro_hw.h
index e83f0c523a30..8b3bc7e31395 100644
--- a/drivers/media/platform/verisilicon/hantro_hw.h
+++ b/drivers/media/platform/verisilicon/hantro_hw.h
@@ -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) + 1;
+}
+
+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) + 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,
diff --git a/drivers/media/platform/verisilicon/hantro_postproc.c b/drivers/media/platform/verisilicon/hantro_postproc.c
index 09d8cf942689..7dc39519a2ee 100644
--- a/drivers/media/platform/verisilicon/hantro_postproc.c
+++ b/drivers/media/platform/verisilicon/hantro_postproc.c
@@ -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];
diff --git a/drivers/media/platform/verisilicon/hantro_v4l2.c b/drivers/media/platform/verisilicon/hantro_v4l2.c
index 2c7a805289e7..d41dcb108a6d 100644
--- a/drivers/media/platform/verisilicon/hantro_v4l2.c
+++ b/drivers/media/platform/verisilicon/hantro_v4l2.c
@@ -334,6 +334,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
--
2.34.1
next prev parent reply other threads:[~2022-12-19 15:56 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-19 15:56 [PATCH v1 0/9] AV1 stateless decoder for RK3588 Benjamin Gaignard
2022-12-19 15:56 ` [PATCH v1 1/9] dt-bindings: media: rockchip-vpu: Add rk3588 vpu compatible Benjamin Gaignard
2022-12-19 16:06 ` Krzysztof Kozlowski
2022-12-19 16:44 ` Benjamin Gaignard
2022-12-20 9:55 ` Krzysztof Kozlowski
2022-12-19 15:56 ` [PATCH v1 2/9] media: verisilicon: Add AV1 decoder mode and controls Benjamin Gaignard
2022-12-19 18:25 ` kernel test robot
2022-12-19 20:26 ` Nicolas Dufresne
2022-12-19 20:28 ` Nicolas Dufresne
2022-12-19 15:56 ` [PATCH v1 3/9] media: verisilicon: Save bit depth for AV1 decoder Benjamin Gaignard
2022-12-19 20:37 ` Nicolas Dufresne
2022-12-19 21:29 ` Ezequiel Garcia
2022-12-20 13:05 ` Benjamin Gaignard
2022-12-19 22:08 ` kernel test robot
2022-12-19 15:56 ` [PATCH v1 4/9] media: verisilicon: Check AV1 bitstreams bit depth Benjamin Gaignard
2022-12-19 20:38 ` Nicolas Dufresne
2022-12-20 13:02 ` Benjamin Gaignard
2022-12-21 16:16 ` Nicolas Dufresne
2022-12-19 15:56 ` Benjamin Gaignard [this message]
2022-12-19 20:42 ` [PATCH v1 5/9] media: verisilicon: Compute motion vectors size for AV1 frames Nicolas Dufresne
2022-12-20 13:13 ` Benjamin Gaignard
2022-12-19 15:56 ` [PATCH v1 6/9] media: verisilicon: Add AV1 entropy helpers Benjamin Gaignard
2022-12-19 20:51 ` Nicolas Dufresne
2022-12-20 10:19 ` Andrzej Pietrasiewicz
2022-12-20 12:19 ` Benjamin Gaignard
2022-12-19 15:56 ` [PATCH v1 7/9] media: verisilicon: Add Rockchip AV1 decoder Benjamin Gaignard
2022-12-19 19:16 ` kernel test robot
2022-12-19 21:56 ` Nicolas Dufresne
2022-12-20 14:49 ` Benjamin Gaignard
2022-12-21 16:30 ` Nicolas Dufresne
2022-12-21 16:37 ` Benjamin Gaignard
2022-12-23 23:15 ` Daniel Almeida
2022-12-23 23:20 ` Daniel Almeida
2022-12-19 15:56 ` [PATCH v1 8/9] media: verisilicon: Add film grain feature to AV1 driver Benjamin Gaignard
2022-12-19 20:47 ` kernel test robot
2022-12-19 15:56 ` [PATCH v1 9/9] media: verisilicon: Enable AV1 decoder on rk3588 Benjamin Gaignard
2022-12-19 20:22 ` [PATCH v1 0/9] AV1 stateless decoder for RK3588 Nicolas Dufresne
2022-12-19 21:07 ` Ezequiel Garcia
2022-12-19 21:54 ` Michael Grzeschik
2022-12-20 1:52 ` Ezequiel Garcia
2022-12-20 12:26 ` Benjamin Gaignard
2022-12-20 13:40 ` Michael Grzeschik
2022-12-20 17:15 ` Nicolas Dufresne
2022-12-20 17:50 ` Ezequiel Garcia
2022-12-21 22:17 ` Michael Grzeschik
2022-12-20 17:00 ` Nicolas Dufresne
2022-12-21 22:01 ` Michael Grzeschik
2022-12-22 13:24 ` Ezequiel Garcia
2022-12-21 16:33 ` Nicolas Dufresne
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221219155616.848690-6-benjamin.gaignard@collabora.com \
--to=benjamin.gaignard@collabora.com \
--cc=daniel.almeida@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=ezequiel@vanguardiasur.com.ar \
--cc=heiko@sntech.de \
--cc=kernel@collabora.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mchehab@kernel.org \
--cc=nicolas.dufresne@collabora.co.uk \
--cc=p.zabel@pengutronix.de \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).