From patchwork Tue Jul 15 02:30:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 23806 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 2EC09C3237 for ; Tue, 15 Jul 2025 02:30:11 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1251868F51; Tue, 15 Jul 2025 04:30:10 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=igalia.com header.i=@igalia.com header.b="Z9YMERTE"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1EC176150E for ; Tue, 15 Jul 2025 04:30:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject: Cc:To:From:Sender:Reply-To:Content-Type:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=TQ7UORyXH2fv777JiE6oKZSfRGLyw1dEGXMiVklfqkw=; b=Z9YMERTEgqg9p1RxC1U1/UhRX+ I1TmqgvtjgMtOKRlPEjWE378e46Bleua94gJdHeejDtLit83wQ/Zk4av1PoI1JxN1TfXkUh1hA3/B aePkPE5CWz3LYDrTEzTpjEP5KB1lPGBwS5cB8ZCYo3M5gPAH0GgRxOStfNYbpoHKPWSqH7ZwI48Fu uKT4RjGbH50HHcNe4UNw55V130ObE35nYNJFO3N95NCjE7WlyHLragkOR09DPaDBQoTiuAR4MAogX ISMFW3SAYx/hYv8ya75hzQm6UF6V+q/mkwsh9h7ENbVJqu/BVJ+h5eVmkJGrxFU31PVxfEwnh3SUa lpWfmkaQ==; Received: from [49.36.69.57] (helo=uajain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1ubVQj-00Geqv-Nl; Tue, 15 Jul 2025 04:30:06 +0200 From: Umang Jain To: libcamera-devel@lists.libcamera.org Cc: Umang Jain Subject: [PATCH] libcamera: pipeline: Always generate valid camera configurations Date: Tue, 15 Jul 2025 08:00:13 +0530 Message-ID: <20250715023013.16435-1-uajain@igalia.com> X-Mailer: git-send-email 2.50.0 MIME-Version: 1.0 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" PipelineHandler::generateConfiguration() documentation states the following: * \return A valid CameraConfiguration if the requested roles can be * satisfied, or a null pointer otherwise. */ Hence, always check the return status of config->validate(), during generateConfiguration() call in each pipeline handler. Signed-off-by: Umang Jain Reviewed-by: Milan Zamazal --- src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 3 ++- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 3 ++- src/libcamera/pipeline/simple/simple.cpp | 3 ++- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 3 ++- src/libcamera/pipeline/vimc/vimc.cpp | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp index f4014b95..c96fefa4 100644 --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp @@ -798,7 +798,8 @@ PipelineHandlerISI::generateConfiguration(Camera *camera, config->addConfiguration(cfg); } - config->validate(); + if (config->validate() == CameraConfiguration::Invalid) + return nullptr; return config; } diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 675f0a74..fca1c74e 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -787,7 +787,8 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera, config->addConfiguration(cfg); } - config->validate(); + if (config->validate() == CameraConfiguration::Invalid) + return nullptr; return config; } diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index efb07051..f994106e 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -1322,7 +1322,8 @@ SimplePipelineHandler::generateConfiguration(Camera *camera, SpanaddConfiguration(cfg); } - config->validate(); + if (config->validate() == CameraConfiguration::Invalid) + return nullptr; return config; } diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp index 4b5816df..9ed85f3b 100644 --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp @@ -250,7 +250,8 @@ PipelineHandlerUVC::generateConfiguration(Camera *camera, config->addConfiguration(cfg); - config->validate(); + if (config->validate() == CameraConfiguration::Invalid) + return nullptr; return config; } diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index 07273bd2..56719fa3 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -245,7 +245,8 @@ PipelineHandlerVimc::generateConfiguration(Camera *camera, config->addConfiguration(cfg); - config->validate(); + if (config->validate() == CameraConfiguration::Invalid) + return nullptr; return config; }