From patchwork Wed Jul 16 14:20:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 23821 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 E2FBEC3237 for ; Wed, 16 Jul 2025 14:20:27 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id AD27168F75; Wed, 16 Jul 2025 16:20:26 +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="HjH9NF7C"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D3F9661518 for ; Wed, 16 Jul 2025 16:20:23 +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=GEbEf+D4JADd9Sa6zEHoGEdueMFSrGM27z3Ds2NgMLQ=; b=HjH9NF7CPHkONDdK97vgtjVa7W U4lqMoifbzVM1KZJDnxq+QCFyQxJ3462u5Xqwx8i2JTY/P9rWLJEtCopYPwdV4plkPB4Vfrcwq2E/ tgHnNsSV0ADETOYq0E6zkZ1Gc+XMN/l6KgXvVlxmjPLPAiWDvdenjW9K8tTf1Y2IJ7tuwo8IQHzIm kZJlRNEVb0iLQ/ZGxau10SCIRqwwtmNnLXafhvifxrFgrBtakqRx7L1BAGbDihy4n1NmNiYf4jeJI DnIW+SPP6PdWqMAAGVKD/rC+JRvgeIpLeF/486oNYNp7GUH2u4eJX0gxbS5GytGSwoP7kW2ocR1Cm fBq7+GCA==; 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 1uc2zd-00HLf5-Fk; Wed, 16 Jul 2025 16:20:21 +0200 From: Umang Jain To: libcamera-devel@lists.libcamera.org Cc: Milan Zamazal , Robert Mader , Umang Jain Subject: [RFC PATCH 0/6] libcamera: simple: Enable Raw capture Date: Wed, 16 Jul 2025 19:50:20 +0530 Message-ID: <20250716142027.236277-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" RFC series to enable raw capture on simple pipeline handler with SoftISP enabled. I had a few thoughts on design of the features when I was reviewing Milan's series [1]. Hence, I decided to crystallise my thoughts and posted as RFC to gather more feedback (and some real testing on supportedDevices[]). I have left few things to include from [1] for e.g. colorspace issues. My goal currently is to address the core issue of raw capture with this RFC. Testing branch [2] Setup: RPi 3b + IMX219 Cases tested with cam: - Single raw output - Single processed output - 1 Raw + 1 processed output One can propose more use-cases as part of their testing. If they turn out to be complex, we can probably document it as \todo, to get addressed at a later stage. cam Output: =========== uajain1@uajain:~/libcamera$ ./build-soft/src/apps/cam/cam -c1 -srole=raw,width=1920,height=1080 -C5 [27:26:59.248233501] [2384] INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/home/uajain1/libcamera/build-soft/src/ipa' to the IPA search path [27:26:59.262004021] [2384] INFO Camera camera_manager.cpp:326 libcamera v0.5.1+63-c33be195 [27:26:59.593703813] [2390] INFO IPAProxy ipa_proxy.cpp:151 libcamera is not installed. Loading IPA configuration from '/home/uajain1/libcamera/src/ipa/simple/data' [27:26:59.594050532] [2390] WARN IPAProxy ipa_proxy.cpp:177 Configuration file 'imx219.yaml' not found for IPA module 'simple', falling back to 'uncalibrated.yaml' [27:26:59.596620063] [2390] INFO IPAProxy ipa_proxy.cpp:151 libcamera is not installed. Loading IPA configuration from '/home/uajain1/libcamera/src/ipa/simple/data' Using camera /base/soc/i2c0mux/i2c@1/imx219@10 as cam0 [27:26:59.625957459] [2384] INFO Camera camera.cpp:1205 configuring streams: (0) 1920x1080-SRGGB10/RAW [27:26:59.627666834] [2390] INFO SimplePipeline simple.cpp:1471 data->useConversion_ : 0 cam0: Capture 5 frames 98819.750177 (0.00 fps) cam0-stream0 seq: 000000 bytesused: 4147200 98819.783504 (30.01 fps) cam0-stream0 seq: 000001 bytesused: 4147200 98819.816829 (30.01 fps) cam0-stream0 seq: 000002 bytesused: 4147200 98819.850156 (30.01 fps) cam0-stream0 seq: 000003 bytesused: 4147200 98819.883484 (30.00 fps) cam0-stream0 seq: 000004 bytesused: 4147200 uajain1@uajain:~/libcamera$ ./build-soft/src/apps/cam/cam -c1 -srole=viewfinder,width=1920,height=1080 -C5 [27:27:09.663699747] [2391] INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/home/uajain1/libcamera/build-soft/src/ipa' to the IPA search path [27:27:09.677708965] [2391] INFO Camera camera_manager.cpp:326 libcamera v0.5.1+63-c33be195 [27:27:09.933555736] [2392] INFO IPAProxy ipa_proxy.cpp:151 libcamera is not installed. Loading IPA configuration from '/home/uajain1/libcamera/src/ipa/simple/data' [27:27:09.933821778] [2392] WARN IPAProxy ipa_proxy.cpp:177 Configuration file 'imx219.yaml' not found for IPA module 'simple', falling back to 'uncalibrated.yaml' [27:27:09.936308080] [2392] INFO IPAProxy ipa_proxy.cpp:151 libcamera is not installed. Loading IPA configuration from '/home/uajain1/libcamera/src/ipa/simple/data' Camera configuration adjusted Using camera /base/soc/i2c0mux/i2c@1/imx219@10 as cam0 [27:27:09.965424746] [2391] INFO Camera camera.cpp:1205 configuring streams: (0) 1916x1080-XRGB8888/Unset [27:27:09.967118705] [2392] INFO SimplePipeline simple.cpp:1471 data->useConversion_ : 1 [27:27:09.970895528] [2392] INFO IPASoft soft_simple.cpp:264 IPASoft: Exposure 4-1759, gain 1-10.6667 (0.0966667) cam0: Capture 5 frames 98830.200120 (0.00 fps) cam0-stream0 seq: 000000 bytesused: 8277120 98830.233445 (30.01 fps) cam0-stream0 seq: 000001 bytesused: 8277120 98830.266770 (30.01 fps) cam0-stream0 seq: 000002 bytesused: 8277120 98831.033291 (1.30 fps) cam0-stream0 seq: 000025 bytesused: 8277120 98831.799810 (1.30 fps) cam0-stream0 seq: 000048 bytesused: 8277120 uajain1@uajain:~/libcamera$ ./build-soft/src/apps/cam/cam -c1 -srole=raw,width=1920,height=1080 -srole=viewfinder,width=1920,height=1080 -C10 [27:27:26.239476459] [2395] INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/home/uajain1/libcamera/build-soft/src/ipa' to the IPA search path [27:27:26.253694063] [2395] INFO Camera camera_manager.cpp:326 libcamera v0.5.1+63-c33be195 [27:27:26.572276146] [2396] INFO IPAProxy ipa_proxy.cpp:151 libcamera is not installed. Loading IPA configuration from '/home/uajain1/libcamera/src/ipa/simple/data' [27:27:26.572539792] [2396] WARN IPAProxy ipa_proxy.cpp:177 Configuration file 'imx219.yaml' not found for IPA module 'simple', falling back to 'uncalibrated.yaml' [27:27:26.574856667] [2396] INFO IPAProxy ipa_proxy.cpp:151 libcamera is not installed. Loading IPA configuration from '/home/uajain1/libcamera/src/ipa/simple/data' Camera configuration adjusted Using camera /base/soc/i2c0mux/i2c@1/imx219@10 as cam0 [27:27:26.603776146] [2395] INFO Camera camera.cpp:1205 configuring streams: (0) 1920x1080-SRGGB10/RAW (1) 1916x1080-XRGB8888/Unset [27:27:26.605656303] [2396] INFO SimplePipeline simple.cpp:1471 data->useConversion_ : 1 [27:27:26.609448803] [2396] INFO IPASoft soft_simple.cpp:264 IPASoft: Exposure 4-1759, gain 1-10.6667 (0.0966667) cam0: Capture 10 frames 98846.739621 (0.00 fps) cam0-stream0 seq: 000000 bytesused: 4147200 cam0-stream1 seq: 000000 bytesused: 8277120 98846.772946 (30.01 fps) cam0-stream0 seq: 000001 bytesused: 4147200 cam0-stream1 seq: 000001 bytesused: 8277120 98846.806274 (30.00 fps) cam0-stream0 seq: 000002 bytesused: 4147200 cam0-stream1 seq: 000002 bytesused: 8277120 98846.839601 (30.01 fps) cam0-stream0 seq: 000003 bytesused: 4147200 cam0-stream1 seq: 000003 bytesused: 8277120 98847.539465 (1.43 fps) cam0-stream0 seq: 000024 bytesused: 4147200 cam0-stream1 seq: 000024 bytesused: 8277120 98848.206006 (1.50 fps) cam0-stream0 seq: 000044 bytesused: 4147200 cam0-stream1 seq: 000044 bytesused: 8277120 98848.872546 (1.50 fps) cam0-stream0 seq: 000064 bytesused: 4147200 cam0-stream1 seq: 000064 bytesused: 8277120 98849.539084 (1.50 fps) cam0-stream0 seq: 000084 bytesused: 4147200 cam0-stream1 seq: 000084 bytesused: 8277120 98850.205624 (1.50 fps) cam0-stream0 seq: 000104 bytesused: 4147200 cam0-stream1 seq: 000104 bytesused: 8277120 98850.872164 (1.50 fps) cam0-stream0 seq: 000124 bytesused: 4147200 cam0-stream1 seq: 000124 bytesused: 8277120 [1]: https://patchwork.libcamera.org/project/libcamera/list/?series=5281 [2]: https://gitlab.freedesktop.org/uajain/libcamera/-/commits/uajain/simple/raw Milan Zamazal (3): libcamera: simple: Set the number of software ISP streams to 2 libcamera: simple: Exclude raw configurations from output conversions libcamera: simple: Require metadata only when software ISP is used Umang Jain (3): libcamera: simple: Support StreamRole::Raw in generateConfiguration() libcamera: simple: Validate raw streams if requested libcamera: simple: Enable capturing of raw streams src/libcamera/pipeline/simple/simple.cpp | 166 ++++++++++++++++++----- 1 file changed, 131 insertions(+), 35 deletions(-)