Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp625979ybi; Wed, 19 Jun 2019 05:18:19 -0700 (PDT) X-Google-Smtp-Source: APXvYqwd62Lr7DIYVh2SXKq2bmHqK9W1Ll2ir58P4Maf8OQJQ1NsEvbWze1j11MWnuNi82Hx+9jW X-Received: by 2002:a17:902:2e81:: with SMTP id r1mr119589375plb.0.1560946699161; Wed, 19 Jun 2019 05:18:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560946699; cv=none; d=google.com; s=arc-20160816; b=V3wRZTj0DrojO5CQnrEhK9Uf+j5yQIsGdQhmEd86d3Hlo0m6IzkqjC4fi0uyOfl2tF yrahKuIY/FeD/7eIb6a20Y1d4bk+o1r/9S5qTS2gWQqOai+LKnSXmIYl5jKOyn7YDo6Q ijD3Ofekz5OkCu88ItLuVVa6wST9nOqyKbVNrQCwcG4+CNNNmLi4aghHwUD+w7Xxy7vo 3tcKu9HTqFrK39u96th6qMWnQefVFZGXM0HRlMKKLU9KIyLWek6YBfLja25zA787IslD nBljpRchYculfmLr/J47i+gluG0LtyarWOuZRbYWlcxJrwipwxsHmjKjfJogoAPPk2Ly oDjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=pQKC5n2UXNFT+yXl6iwfdVb5DMjAP0ikLqyibESqqD0=; b=huQpx9wGSGr1Ctnbiry7IQmc+ElEQSr8vHXlBjbaPLljU+17sNDXFzbXIOnN+VvWXv et1kO1KBFK9csLRnsZOtcTNdbsF6n+nyHaUqHktoN9BjsAOQIOFFi+2U16VWaw/G9bSs DuNh8h2gnDP3HMiCnWkJrkSUOoipykDIre9AvGq/8H/t6kXIQsE5Zh/GDQasg3FRlL/w qjBdNKG+jH+HvU0RgbqeJZDAVbSwi3mQpFsAiBPxVzeJysu3GiI7/J/wGGgadWBjT2te FV4kLqqaS8bl6l47/uq6j80REdC6E7icwup0y82Mors8lKpmEB/oFL55nVczP3Ula7nE u/UQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f9si3033079pgg.450.2019.06.19.05.18.02; Wed, 19 Jun 2019 05:18:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731719AbfFSMPs (ORCPT + 99 others); Wed, 19 Jun 2019 08:15:48 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:40502 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727457AbfFSMPr (ORCPT ); Wed, 19 Jun 2019 08:15:47 -0400 Received: from localhost.localdomain (unknown [IPv6:2a01:e0a:2c:6930:5cf4:84a1:2763:fe0d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: bbrezillon) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id B3B9C2607B4; Wed, 19 Jun 2019 13:15:45 +0100 (BST) From: Boris Brezillon To: Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Sakari Ailus , linux-media@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Tomasz Figa , Nicolas Dufresne , kernel@collabora.com, Paul Kocialkowski , Ezequiel Garcia , Jonas Karlman , linux-rockchip@lists.infradead.org, Heiko Stuebner , Andrew Morton , Rasmus Villemoes , Philipp Zabel , Boris Brezillon Subject: [PATCH 2/9] media: hantro: Move copy_metadata() before doing a decode operation Date: Wed, 19 Jun 2019 14:15:33 +0200 Message-Id: <20190619121540.29320-3-boris.brezillon@collabora.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190619121540.29320-1-boris.brezillon@collabora.com> References: <20190619121540.29320-1-boris.brezillon@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Signed-off-by: Boris Brezillon --- 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