lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 19 Jun 2019 14:15:33 +0200 From: Boris Brezillon <boris.brezillon@...labora.com> To: Mauro Carvalho Chehab <mchehab@...nel.org>, Hans Verkuil <hans.verkuil@...co.com>, Laurent Pinchart <laurent.pinchart@...asonboard.com>, Sakari Ailus <sakari.ailus@....fi>, linux-media@...r.kernel.org Cc: linux-kernel@...r.kernel.org, Tomasz Figa <tfiga@...omium.org>, Nicolas Dufresne <nicolas@...fresne.ca>, kernel@...labora.com, Paul Kocialkowski <paul.kocialkowski@...tlin.com>, Ezequiel Garcia <ezequiel@...labora.com>, Jonas Karlman <jonas@...boo.se>, linux-rockchip@...ts.infradead.org, Heiko Stuebner <heiko@...ech.de>, Andrew Morton <akpm@...ux-foundation.org>, Rasmus Villemoes <linux@...musvillemoes.dk>, Philipp Zabel <p.zabel@...gutronix.de>, Boris Brezillon <boris.brezillon@...labora.com> Subject: [PATCH 2/9] media: hantro: Move copy_metadata() before doing a decode operation Some decoders use intra slice/frame references. The capture buffer pointed by these references might be new and thus have invalid timestamp which prevents the decoder logic from retrieving the vb2_buffer object based on the output buf timestamp. Copy all metadata (including the timestamp) before starting the decode operation. Suggested-by: Jonas Karlman <jonas@...boo.se> Signed-off-by: Boris Brezillon <boris.brezillon@...labora.com> --- drivers/staging/media/hantro/hantro_drv.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/media/hantro/hantro_drv.c index ab0aa7408a7d..28b0fed89dcb 100644 --- a/drivers/staging/media/hantro/hantro_drv.c +++ b/drivers/staging/media/hantro/hantro_drv.c @@ -109,8 +109,6 @@ static void hantro_job_finish(struct hantro_dev *vpu, src->sequence = ctx->sequence_out++; dst->sequence = ctx->sequence_cap++; - v4l2_m2m_buf_copy_metadata(src, dst, true); - ret = ctx->buf_finish(ctx, &dst->vb2_buf, bytesused); if (ret) result = VB2_BUF_STATE_ERROR; @@ -154,8 +152,12 @@ void hantro_watchdog(struct work_struct *work) static void device_run(void *priv) { struct hantro_ctx *ctx = priv; + struct vb2_v4l2_buffer *src, *dst; int ret; + src = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx); + dst = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx); + ret = clk_bulk_enable(ctx->dev->variant->num_clocks, ctx->dev->clocks); if (ret) goto err_cancel_job; @@ -163,6 +165,8 @@ static void device_run(void *priv) if (ret < 0) goto err_cancel_job; + v4l2_m2m_buf_copy_metadata(src, dst, true); + ctx->codec_ops->run(ctx); return; -- 2.20.1
Powered by blists - more mailing lists