From patchwork Fri Oct 23 10:58:29 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jai Luthra X-Patchwork-Id: 28591 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 54BBAC324C for ; Fri, 23 Oct 2026 11:00:39 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2237C68FE8; Fri, 23 Oct 2026 13:00:39 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Qajv8YTX"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id EF34568FE5 for ; Fri, 23 Oct 2026 13:00:37 +0200 (CEST) Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c30:59f6:be2b:2877:6bc4:392]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id CDA3D12D6; Fri, 23 Oct 2026 12:58:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1792753109; bh=fBQRv/f3Z6yDrO16DncjcYjMDZmFw8mwxKvou8oKYYE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Qajv8YTX7BrjIYp6PmhsEgdNDnFKjyem63b2F1PD1nwzMcrV/i5gUGj7E9KohWv5q CQ8Igwr7CwGRc1rOcsdhp0pHZ72TepQ1+ZoThSmiViWuavMtUBVa46/8kMzwQ59Zr7 753aOocUtlC11k91gcmiz74GSNR9XChOTIAXlfic= From: Jai Luthra Date: Fri, 23 Oct 2026 16:28:29 +0530 Subject: [PATCH WIP RFC 21/26] pipeline: rpi: Split bayerOrder from PixelFormat MIME-Version: 1.0 Message-Id: <20261023-b4-raw-model-v1-21-eadb9948901b@ideasonboard.com> References: <20261023-b4-raw-model-v1-0-eadb9948901b@ideasonboard.com> In-Reply-To: <20261023-b4-raw-model-v1-0-eadb9948901b@ideasonboard.com> To: libcamera-devel@lists.libcamera.org Cc: Laurent Pinchart , Kieran Bingham , Sakari Ailus , Naushir Patuck , Jai Luthra X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1997; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=fBQRv/f3Z6yDrO16DncjcYjMDZmFw8mwxKvou8oKYYE=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBq2z3XSREAo+ETi2vMEZQHeVH0hOQ16NsKWNeW7 WkwYgbWVzCJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCats91wAKCRBD3pH5JJpx RRz5D/4ulqOKnAyACyc23DwNbD7TbNax7zhtz6B0/DYd2l+lPe6P2NHU2fOVUcMLI0jSBDAhCXJ eXT7U0fbt+1cY/8cjwpiH8PkB703Dii2ZmQUw1Zds2mO/aFwFJ6KzhPmpc41DXvsHF9tpM6NmVO JX92atm0fQNKySpDxrVmKoM6qkTFYc1SrSW+ZW8rUaY8imBYgpX75MHMwmROKVhr4JKSwr+HCAz VxAnXYWp/x5cExsZlZf9OYdHmx0mv6cc292dXHcvVuVpyYOljdf2zeUjxPzKZB9aKFrhk78cSqE lFggWI5JXNLQar9xMaFcu7Jq/lPtJ3Nbsp9j5LoYjJpw3bMw2t0F8S1FiWDoUGbybwhQqr2mihB ajBGMbRLYltViztCcT0vMwLQ1fY+dh1tMSmP1kI6rHN+X0/MSqywwKK8Sy3XOf9FxKC000QhbSW ENwkq7kaQGAzMcQBCEUgop2hDSKb6/errCSTxM67059H1rGVYanvIZXBCLPb3XDSgUTxAs4gWO0 CXwnnprtQH9kILL/QQyXVeSfWWo6Tq1W1a0/u0JLDlnsKuLKAVUpkM8Vs9ebcla+pfSHOjmxzas 61t9RchX0u9Neb6AYzLbzAAtemOQmlhodLhdiJNFYlivCFf0ZK2wqZZb0+Lkre+YzBAi2KpQL4Q l+JMbioUowJITbw== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" With only generic (bayer-order independent) formats supported throughout libcamera now, ensure that we populate StreamConfiguration::bayerOrder when generating new configurations, and update them during validate() depending upon the combined flips and transforms. Signed-off-by: Jai Luthra --- src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp index 435f460bbf8c..8453c8668542 100644 --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp @@ -248,11 +248,10 @@ CameraConfiguration::Status RPiCameraConfiguration::validate() * to the user request. */ - BayerFormat cfgBayer = BayerFormat::fromPixelFormat(rawStream->pixelFormat); - cfgBayer.cfa = data_->sensor_->bayerOrder(combinedTransform_); + ColorFilterArray cfa = data_->sensor_->bayerOrder(combinedTransform_); - if (rawStream->pixelFormat != cfgBayer.toPixelFormat()) { - rawStream->pixelFormat = cfgBayer.toPixelFormat(); + if (!rawStream->bayerOrder || rawStream->bayerOrder.value() != cfa) { + rawStream->bayerOrder = cfa; status = Adjusted; } } @@ -500,6 +499,16 @@ PipelineHandlerBase::generateConfiguration(Camera *camera, std::spansensor_->bayerOrder(Transform::Identity); + config->addConfiguration(cfg); }