Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4117332ioa; Tue, 26 Apr 2022 17:48:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzLw7+gZQF2g3ErtpMFBLo2BL1emU62xVtTVrHGQwrdiy7nF5+OcIswuKjU8QbZOnkwQmcR X-Received: by 2002:a05:6402:2204:b0:423:d925:7778 with SMTP id cq4-20020a056402220400b00423d9257778mr27457754edb.321.1651020538605; Tue, 26 Apr 2022 17:48:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651020538; cv=none; d=google.com; s=arc-20160816; b=ojcErONc2MWyRd9n3+Vgpsf79GR4O0LqmMr/0xGLRhDAiotXh+j6eb0VHLr3EkkPQm GbEusrOxkRxVpNpQ4OAxsV1agwDg0NZiqu9pnrNpby2384c7o60M8Jydl3IteqrZ1745 H2Iux+gzT8hEbgIgWXmxmDz7qtpDGNBLMqjRIHGOgvy0PkJyzOR2J1koi8+CvTJm2bUc RYecx6X+4teVNSHqZEtHbfeYs2qeR0CYLdCZCJttN1nIXd/aazx8+d8QHatEaO2qt7KQ f/m86GlVyKpoUwVqFljpRItzbVaDZAnhY3jvxzJD9NZJW0Ya5GI8Nn189tUGOqLcL7OV S8qQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=eNLp/PwRsvAjpbOxJndkPowE/TDg5CwKlE49tJYw6gA=; b=GeMRpM+gn4BCTVARF9iIQzTnTipO0ZxWhGwqDxgnmQj7o2F6vmgjE250L9pDteDy5A QtOA4T/f6x53fjTvCqzXteDMDsWTkcs/yC/UZSoSjVMmlgrLM85qmhIFCz65akK+YU3c gACJY+uo08TzMhm6cgF9EpbpfuNx4cKfpbpVE8C1c57yC4mRHDq2BinosHNMmI7goMSz AmIZWmcXjFeizHHMH6/MeDAY5e0sQFUreSvu+a5lnkuEXSheVhHRdsDTwIbSXVbeGgqi AT20viotU0ivf0JEymdQ3Z66PMN/hFkdEqQ+e9/v+6faW/RgLj1UIKf45DMDArHEP3nS eEJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=cBZN0vuW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bo15-20020a170906d04f00b006efef30bd26si17372657ejb.47.2022.04.26.17.48.33; Tue, 26 Apr 2022 17:48:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=cBZN0vuW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350561AbiDZNDG (ORCPT + 99 others); Tue, 26 Apr 2022 09:03:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350446AbiDZNB5 (ORCPT ); Tue, 26 Apr 2022 09:01:57 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3379617F130; Tue, 26 Apr 2022 05:58:47 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: nicolas) with ESMTPSA id DCF2E1F439A0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1650977922; bh=OT93d1YFbCsPl7b/q8Q9Ng7KBwuAX7su/L0Pt2JnS6E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cBZN0vuWa0CQYiFTtznCmJ69cnWWpBJjUsOTglusEeiqSVayUvm4THtei/qrnz+XU sxKfjpwT+fa/HTO2lmpV7wL724s3r+9mMdahR1qJH2P8t1iXck7NuGbaxaJly5vKqm +CnjtVkTT3iaegGldibqCE7Vq/khasZDDfEUwlJxfHfFV8bcR5uN90Z9I3HPpzsrwr H5DMc5649WTvQ9vq9OrnHgzL20sr2Z3Y9i6F2AjFq/IVQ6dGlbdqjLCg5i3ua4vQp1 94j5HRwXA2ySzWD6Zqm1P5Cu2nEMfyBeoAfYWvwy7OQ8HM7PJJY/Mr1lI+iWwHPo40 nEC1lF3RULBxw== From: Nicolas Dufresne To: Ezequiel Garcia , Philipp Zabel , Mauro Carvalho Chehab , Greg Kroah-Hartman Cc: nicolas@ndufresne.ca, linux-media@vger.kernel.org, Sebastian Fricke , linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 24/24] media: hantro: Enable HOLD_CAPTURE_BUF for H.264 Date: Tue, 26 Apr 2022 08:57:50 -0400 Message-Id: <20220426125751.108293-25-nicolas.dufresne@collabora.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220426125751.108293-1-nicolas.dufresne@collabora.com> References: <20220426125751.108293-1-nicolas.dufresne@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is needed to optimize field decoding. Each field will be decoded into the same capture buffer. To be able to queue multiple buffers, we need to be able to ask the driver to hold the capture buffer. Signed-off-by: Nicolas Dufresne Reviewed-by: Sebastian Fricke --- drivers/staging/media/hantro/hantro_v4l2.c | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/staging/media/hantro/hantro_v4l2.c b/drivers/staging/media/hantro/hantro_v4l2.c index 67148ba346f5..50d636678ff3 100644 --- a/drivers/staging/media/hantro/hantro_v4l2.c +++ b/drivers/staging/media/hantro/hantro_v4l2.c @@ -409,6 +409,30 @@ hantro_update_requires_request(struct hantro_ctx *ctx, u32 fourcc) } } +static void +hantro_update_requires_hold_capture_buf(struct hantro_ctx *ctx, u32 fourcc) +{ + struct vb2_queue *vq; + + vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, + V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); + + switch (fourcc) { + case V4L2_PIX_FMT_JPEG: + case V4L2_PIX_FMT_MPEG2_SLICE: + case V4L2_PIX_FMT_VP8_FRAME: + case V4L2_PIX_FMT_HEVC_SLICE: + case V4L2_PIX_FMT_VP9_FRAME: + vq->subsystem_flags &= ~(VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF); + break; + case V4L2_PIX_FMT_H264_SLICE: + vq->subsystem_flags |= VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF; + break; + default: + break; + } +} + static int hantro_set_fmt_out(struct hantro_ctx *ctx, struct v4l2_pix_format_mplane *pix_mp) { @@ -472,6 +496,7 @@ static int hantro_set_fmt_out(struct hantro_ctx *ctx, ctx->dst_fmt.quantization = pix_mp->quantization; hantro_update_requires_request(ctx, pix_mp->pixelformat); + hantro_update_requires_hold_capture_buf(ctx, pix_mp->pixelformat); vpu_debug(0, "OUTPUT codec mode: %d\n", ctx->vpu_src_fmt->codec_mode); vpu_debug(0, "fmt - w: %d, h: %d\n", -- 2.34.1