Patch Detail
Show a patch.
GET /api/patches/23822/?format=api
{ "id": 23822, "url": "https://patchwork.libcamera.org/api/patches/23822/?format=api", "web_url": "https://patchwork.libcamera.org/patch/23822/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20250716142027.236277-2-uajain@igalia.com>", "date": "2025-07-16T14:20:21", "name": "[RFC,1/6] libcamera: simple: Set the number of software ISP streams to 2", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "8850fac6d1f424f66bd4402702666a3301f93bb8", "submitter": { "id": 232, "url": "https://patchwork.libcamera.org/api/people/232/?format=api", "name": "Umang Jain", "email": "uajain@igalia.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/23822/mbox/", "series": [ { "id": 5289, "url": "https://patchwork.libcamera.org/api/series/5289/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5289", "date": "2025-07-16T14:20:20", "name": "libcamera: simple: Enable Raw capture", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5289/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/23822/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/23822/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id A9367C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 16 Jul 2025 14:20:31 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4931B68F6A;\n\tWed, 16 Jul 2025 16:20:28 +0200 (CEST)", "from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D76DE68F35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 16 Jul 2025 16:20:23 +0200 (CEST)", "from [49.36.69.57] (helo=uajain) by fanzine2.igalia.com with\n\tesmtpsa \n\t(Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)\n\t(Exim) id 1uc2ze-00HLf5-Py; Wed, 16 Jul 2025 16:20:23 +0200" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=igalia.com header.i=@igalia.com\n\theader.b=\"TopTQ4Gh\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;\n\ts=20170329;\n\th=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:\n\tMessage-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID:\n\tContent-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc\n\t:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:\n\tList-Post:List-Owner:List-Archive;\n\tbh=9VZdOFfGmvs9e0K84SjEmfwrVV97MyVAnBjtT6x6T+8=;\n\tb=TopTQ4Gh4CvfEVjRiDWEW3esHM\n\tyqSuhcxrzfUVYlFAAS+pSQMA9DNBwE/TL8rkXfW7i16kflOhfkd71burz/6XVB8quZciiMr9GbLvZ\n\t0HJBPHGQyDW3pQtC8d0SOHJmSs7g5LNfmhlb3vPbSPTegNHFYPv2zsJ0aJFyes+DsBfAj+bc2o+an\n\tFZgdA6X98ZEYv/RUzEC075isgoou0GZJ/udiAIKRTOOrIgf65SDoIqf+jiV2T0iJwYHn85/TSG2Ww\n\tWRP67DP+f6A2RhPE2+l0Xn88MM7iCO3/K+YZRZPEwoJSfv6fXbnEwDxpIMRmXeervmAxfEujhIXG3\n\tR6IW2b1A==;", "From": "Umang Jain <uajain@igalia.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Milan Zamazal <mzamazal@redhat.com>,\n\tRobert Mader <robert.mader@collabora.com>, Umang Jain <uajain@igalia.com>", "Subject": "[RFC PATCH 1/6] libcamera: simple: Set the number of software ISP\n\tstreams to 2", "Date": "Wed, 16 Jul 2025 19:50:21 +0530", "Message-ID": "<20250716142027.236277-2-uajain@igalia.com>", "X-Mailer": "git-send-email 2.50.0", "In-Reply-To": "<20250716142027.236277-1-uajain@igalia.com>", "References": "<20250716142027.236277-1-uajain@igalia.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "From: Milan Zamazal <mzamazal@redhat.com>\n\nWhen software ISP is enabled, we want to be able to provide a raw stream\nin addition to the processed stream. For this purpose, we need two\nstreams. If only the processed stream is requested, it doesn't harm to\nallocate two.\n\nThis is a hack for the lack of a better easy option. The number of\nstreams is determined as a camera property in the pipeline matching.\nThe actual number of streams needed (one or two) is determined only when\nexamining roles in SimplePipelineHandler::generateConfiguration.\n\nIn theory, software ISP could produce multiple processed streams but\nthis is out of scope of this patch series. Hence two streams are\nsufficient at the moment.\n\nWhen software ISP is not enabled, the camera won't be able to produce\nmultiple streams (assuming there's no hardware converter) and only\nsingle stream should be allocated as before. The simple pipeline\nhandler assumes there's a linear pipeline from the camera sensor to a\nvideo capture device, and only supports a single stream. Branches in\nthe hardware pipeline that would allow capturing multiple streams from\nthe same camera sensor are not supported. We have no plan to change\nthat, as a device that can produce multiple streams will likely be\nbetter supported by a dedicated pipeline handler.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\nSigned-off-by: Umang Jain <uajain@igalia.com>\n---\n src/libcamera/pipeline/simple/simple.cpp | 13 +++++++++++--\n 1 file changed, 11 insertions(+), 2 deletions(-)", "diff": "diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex efb07051..de6b29ab 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -1265,7 +1265,7 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate()\n */\n \n SimplePipelineHandler::SimplePipelineHandler(CameraManager *manager)\n-\t: PipelineHandler(manager), converter_(nullptr)\n+\t: PipelineHandler(manager), converter_(nullptr), swIspEnabled_(false)\n {\n }\n \n@@ -1687,7 +1687,16 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator)\n \t\t}\n \t}\n \n-\tswIspEnabled_ = info->swIspEnabled;\n+\tif (info->swIspEnabled) {\n+\t\t/*\n+\t\t * When the software ISP is enabled, the simple pipeline handler\n+\t\t * exposes the raw stream, giving a total of two streams. This\n+\t\t * is mutally exclusive with the presence of a converter.\n+\t\t */\n+\t\tASSERT(!converter_);\n+\t\tnumStreams = 2;\n+\t\tswIspEnabled_ = true;\n+\t}\n \n \t/* Locate the sensors. */\n \tstd::vector<MediaEntity *> sensors = locateSensors(media);\n", "prefixes": [ "RFC", "1/6" ] }