From patchwork Sun Jan 31 22:46:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 11082 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 28D2CBD808 for ; Sun, 31 Jan 2021 22:47:35 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id CE2D2683E3; Sun, 31 Jan 2021 23:47:34 +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="H9U+01Wh"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C4EE3683E1 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 40AA48B5; Sun, 31 Jan 2021 23:47:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1612133248; bh=eJODzAKRKevxslVtydpC+xCmvYO9E7TZ3nYawSGMLjk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H9U+01Whcbg4t64nUhrwi8KVaUOYaNJwydZaX1fyuHxDLOONaChsHY2GAn+Mufd+/ wwDPYViaNpv7TCyzAhucVgfkytkx1xQiWP+u1ED5NjGgVXXV1hbRcYZFXNHQ7wVJWf hqztL4QrUYK3797ClWq24Sm7X1CX1ULzTMq3RPF0= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Mon, 1 Feb 2021 00:46:45 +0200 Message-Id: <20210131224702.8838-4-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 03/20] libcamera: pipeline: simple: converter: Group query functions together 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 SimpleConverter class has different sets of functions, related to static queries, device configuration and runtime operation. Group the query functions together. While at it, swap the arguments to the strideAndFrameSize() function to match the order in which pixel format and size are usually specified. No functional change is included. Signed-off-by: Laurent Pinchart Reviewed-by: Paul Elder Reviewed-by: Kieran Bingham --- src/libcamera/pipeline/simple/converter.cpp | 30 ++++++++++----------- src/libcamera/pipeline/simple/converter.h | 5 ++-- src/libcamera/pipeline/simple/simple.cpp | 2 +- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp index 87d15c781ed8..8f54caaca983 100644 --- a/src/libcamera/pipeline/simple/converter.cpp +++ b/src/libcamera/pipeline/simple/converter.cpp @@ -133,6 +133,21 @@ SizeRange SimpleConverter::sizes(const Size &input) return sizes; } +std::tuple +SimpleConverter::strideAndFrameSize(const PixelFormat &pixelFormat, + const Size &size) +{ + V4L2DeviceFormat format; + format.fourcc = m2m_->capture()->toV4L2PixelFormat(pixelFormat); + format.size = size; + + int ret = m2m_->capture()->tryFormat(&format); + if (ret < 0) + return std::make_tuple(0, 0); + + return std::make_tuple(format.planes[0].bpl, format.planes[0].size); +} + int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, const StreamConfiguration &outputCfg) { @@ -254,19 +269,4 @@ void SimpleConverter::outputBufferReady(FrameBuffer *buffer) } } -std::tuple -SimpleConverter::strideAndFrameSize(const Size &size, - const PixelFormat &pixelFormat) -{ - V4L2DeviceFormat format; - format.fourcc = m2m_->capture()->toV4L2PixelFormat(pixelFormat); - format.size = size; - - int ret = m2m_->capture()->tryFormat(&format); - if (ret < 0) - return std::make_tuple(0, 0); - - return std::make_tuple(format.planes[0].bpl, format.planes[0].size); -} - } /* namespace libcamera */ diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h index 06d66f8caba7..07a632abd8f6 100644 --- a/src/libcamera/pipeline/simple/converter.h +++ b/src/libcamera/pipeline/simple/converter.h @@ -35,6 +35,8 @@ public: std::vector formats(PixelFormat input); SizeRange sizes(const Size &input); + std::tuple + strideAndFrameSize(const PixelFormat &pixelFormat, const Size &size); int configure(PixelFormat inputFormat, const Size &inputSize, const StreamConfiguration &outputCfg); @@ -46,9 +48,6 @@ public: int queueBuffers(FrameBuffer *input, FrameBuffer *output); - std::tuple - strideAndFrameSize(const Size &size, const PixelFormat &pixelFormat); - Signal bufferReady; private: diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index a97b8442d9a4..4e3127814b89 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -494,7 +494,7 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate() SimpleConverter *converter = pipe->converter(); std::tie(cfg.stride, cfg.frameSize) = - converter->strideAndFrameSize(cfg.size, cfg.pixelFormat); + converter->strideAndFrameSize(cfg.pixelFormat, cfg.size); if (cfg.stride == 0) return Invalid;