Re: [PATCH 5/8] media: cedrus: Detect first slice of a frame
From: Jernej Škrabec <hidden>
Date: 2019-08-26 18:48:08
Also in:
linux-media, lkml
Dne ponedeljek, 26. avgust 2019 ob 20:28:31 CEST je Boris Brezillon napisal(a):
Hi Jernej, On Thu, 22 Aug 2019 21:44:57 +0200 Jernej Skrabec [off-list ref] wrote:quoted
When codec supports multiple slices in one frame, VPU has to know when first slice of each frame is being processed, presumably to correctly clear/set data in auxiliary buffers. Add first_slice field to cedrus_run structure and set it according to timestamps of capture and output buffers. If timestamps are different, it's first slice and viceversa. Signed-off-by: Jernej Skrabec <redacted> --- drivers/staging/media/sunxi/cedrus/cedrus.h | 1 + drivers/staging/media/sunxi/cedrus/cedrus_dec.c | 2 ++ 2 files changed, 3 insertions(+)diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.hb/drivers/staging/media/sunxi/cedrus/cedrus.h index 2f017a651848..32cb38e541c6 100644--- a/drivers/staging/media/sunxi/cedrus/cedrus.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h@@ -70,6 +70,7 @@ struct cedrus_mpeg2_run { struct cedrus_run { struct vb2_v4l2_buffer *src; struct vb2_v4l2_buffer *dst; + bool first_slice; union { struct cedrus_h264_run h264;diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_dec.cb/drivers/staging/media/sunxi/cedrus/cedrus_dec.c index 56ca4c9ad01c..d7b54accfe83 100644--- a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c@@ -31,6 +31,8 @@ void cedrus_device_run(void *priv) run.src = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx); run.dst = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx); + run.first_slice = + run.src->vb2_buf.timestamp != run.dst-vb2_buf.timestamp; Can't we use slice->first_mb_in_slice to determine if a slice is the first? I'd expect ->first_mb_in_slice to be 0 (unless we decide to support ASO).
I'm not sure if that is always the case, I would have to check the standard. Anyway, this method of comparing timestamps was suggested to me a while ago when we were discussing details on a way forward for multi-slice decoding. I highly doubt someone would decode slices in mixed order (from different frames) in same instance. I can change that in next version if ->first_mb_in_slice == 0 is always true for the first slice. Best regards, Jernej
quoted
/* Apply request(s) controls if needed. */ src_req = run.src->vb2_buf.req_obj.req;
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel