From patchwork Sun Jan 31 22:46:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 11081 X-Patchwork-Delegate: laurent.pinchart@ideasonboard.com Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 7DEABBD808 for ; Sun, 31 Jan 2021 22:47:32 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 71DF9683EC; Sun, 31 Jan 2021 23:47:31 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="SP5vf8NK"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4CC2E683D0 for ; Sun, 31 Jan 2021 23:47:28 +0100 (CET) Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id CC7F08AF; Sun, 31 Jan 2021 23:47:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1612133248; bh=VXW0sCd0H3wsxlM+tWRBZQt27Lwk6A0o5hrdjQFGq/o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SP5vf8NK5yQN5on+Mptx4ND25oPuAfwN7jyiOdqADLiRmtY4oyV1CL+xXmhVeJNP3 q6KN/yCOjKGUpRW61EkOigTVAmXYSbtvsuNlYwKR/DXQcGWVWDZLhNn5Njg/VIZCu9 DiMJGZZuubVx5Z0+Xiza6cvk+VY2ybVt04Y8M7mM= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Mon, 1 Feb 2021 00:46:44 +0200 Message-Id: <20210131224702.8838-3-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210131224702.8838-1-laurent.pinchart@ideasonboard.com> References: <20210131224702.8838-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 02/20] libcamera: pipeline: simple: Don't override stride at configure time X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Phi-Bang Nguyen Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The stride (and frame size) calculation has been moved from configure time to configuration validate time by commit 89fb1efac240 ("libcamera: simple: Fill stride and frameSize at config validation"). This change has however left one stray setting of the stride when configuring the converter. Fix it. While at it, turn the SimpleConverter::configure() output configuration argument to a const reference to emphasize it can't be null and isn't modified by the function, and rename it from cfg to outputCfg to make its purpose clearer. Fixes: 89fb1efac240 ("libcamera: simple: Fill stride and frameSize at config validation") Signed-off-by: Laurent Pinchart Reviewed-by: Paul Elder Reviewed-by: Kieran Bingham --- src/libcamera/pipeline/simple/converter.cpp | 10 ++++------ src/libcamera/pipeline/simple/converter.h | 2 +- src/libcamera/pipeline/simple/simple.cpp | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp index a6a8e139cb3e..87d15c781ed8 100644 --- a/src/libcamera/pipeline/simple/converter.cpp +++ b/src/libcamera/pipeline/simple/converter.cpp @@ -134,7 +134,7 @@ SizeRange SimpleConverter::sizes(const Size &input) } int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, - StreamConfiguration *cfg) + const StreamConfiguration &outputCfg) { V4L2DeviceFormat format; int ret; @@ -157,10 +157,10 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, } /* Set the pixel format and size on the output. */ - videoFormat = m2m_->capture()->toV4L2PixelFormat(cfg->pixelFormat); + videoFormat = m2m_->capture()->toV4L2PixelFormat(outputCfg.pixelFormat); format = {}; format.fourcc = videoFormat; - format.size = cfg->size; + format.size = outputCfg.size; ret = m2m_->capture()->setFormat(&format); if (ret < 0) { @@ -169,14 +169,12 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, return ret; } - if (format.fourcc != videoFormat || format.size != cfg->size) { + if (format.fourcc != videoFormat || format.size != outputCfg.size) { LOG(SimplePipeline, Error) << "Output format not supported"; return -EINVAL; } - cfg->stride = format.planes[0].bpl; - return 0; } diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h index a3c4d899cfc8..06d66f8caba7 100644 --- a/src/libcamera/pipeline/simple/converter.h +++ b/src/libcamera/pipeline/simple/converter.h @@ -37,7 +37,7 @@ public: SizeRange sizes(const Size &input); int configure(PixelFormat inputFormat, const Size &inputSize, - StreamConfiguration *cfg); + const StreamConfiguration &outputCfg); int exportBuffers(unsigned int count, std::vector> *buffers); diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index b7aa3d034568..a97b8442d9a4 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -604,7 +604,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) if (useConverter_) { ret = converter_->configure(pipeConfig.pixelFormat, - pipeConfig.captureSize, &cfg); + pipeConfig.captureSize, cfg); if (ret < 0) { LOG(SimplePipeline, Error) << "Unable to configure converter";