Patch Detail
Show a patch.
GET /api/1.1/patches/21403/?format=api
{ "id": 21403, "url": "https://patchwork.libcamera.org/api/1.1/patches/21403/?format=api", "web_url": "https://patchwork.libcamera.org/patch/21403/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/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": "<20240927134624.801004-11-mzamazal@redhat.com>", "date": "2024-09-27T13:46:16", "name": "[v8,10/18] libcamera: software_isp: Call Algorithm::queueRequest", "commit_ref": "04d171e6b2997ee2f10c13495cb82521f689d76b", "pull_url": null, "state": "accepted", "archived": false, "hash": "dc47842229eaaa4ac06b87c9fbe5c03c85cdfd8d", "submitter": { "id": 177, "url": "https://patchwork.libcamera.org/api/1.1/people/177/?format=api", "name": "Milan Zamazal", "email": "mzamazal@redhat.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/21403/mbox/", "series": [ { "id": 4634, "url": "https://patchwork.libcamera.org/api/1.1/series/4634/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4634", "date": "2024-09-27T13:46:06", "name": "Software ISP refactoring", "version": 8, "mbox": "https://patchwork.libcamera.org/series/4634/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/21403/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/21403/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 CB6FEC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 27 Sep 2024 13:47:07 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3E3106352B;\n\tFri, 27 Sep 2024 15:47:07 +0200 (CEST)", "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C130163527\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 27 Sep 2024 15:47:02 +0200 (CEST)", "from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-584-wXna-7t_OmiHyDTS5PuHPA-1;\n\tFri, 27 Sep 2024 09:46:58 -0400", "from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (unknown\n\t[10.30.177.40])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id 19DC8190346C; Fri, 27 Sep 2024 13:46:56 +0000 (UTC)", "from nuthatch.redhat.com (unknown [10.45.224.123])\n\tby mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id 45E6E1956054; Fri, 27 Sep 2024 13:46:54 +0000 (UTC)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"PdYxU9wQ\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1727444821;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=z8SmziKMuT+/1BrafnPB34Fy4Jqlr/dIcJhgF3Rhnpg=;\n\tb=PdYxU9wQzGl8tlBaA++OtLR6fHNpPKEbN+xBQLaODnZRzJUBeJUBPxKe7Lpk8hCMYO6P/h\n\tFtBzXbyKTcUF1OqY9zNn3/G041DkaFYrJ0uhbL6ZTcg1AFkHZdNhmzY3KrbISrFZAcmsGi\n\thC2Vky0ZvctlQRzS2xn43K5TUoL3MrU=", "X-MC-Unique": "wXna-7t_OmiHyDTS5PuHPA-1", "From": "Milan Zamazal <mzamazal@redhat.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Milan Zamazal <mzamazal@redhat.com>,\n\tUmang Jain <umang.jain@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tDaniel Scally <dan.scally@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>", "Subject": "[PATCH v8 10/18] libcamera: software_isp: Call\n\tAlgorithm::queueRequest", "Date": "Fri, 27 Sep 2024 15:46:16 +0200", "Message-ID": "<20240927134624.801004-11-mzamazal@redhat.com>", "In-Reply-To": "<20240927134624.801004-1-mzamazal@redhat.com>", "References": "<20240927134624.801004-1-mzamazal@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.40", "X-Mimecast-Spam-Score": "0", "X-Mimecast-Originator": "redhat.com", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain; charset=\"US-ASCII\"; x-default=true", "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": "This patch adds Algorithm::queueRequest call for the defined algorithms.\nAs there are currently no control knobs in software ISP nor the\ncorresponding queueRequest call chain, the patch also introduces the\nqueueRequest methods and calls from the pipeline to the IPA.\n\nThis is preparation only since there are currently no Algorithm based\nalgorithms defined and no current software ISP algorithms support\ncontrol knobs.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\nReviewed-by: Daniel Scally <dan.scally@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n include/libcamera/internal/software_isp/software_isp.h | 1 +\n include/libcamera/ipa/soft.mojom | 1 +\n src/ipa/simple/soft_simple.cpp | 9 +++++++++\n src/libcamera/pipeline/simple/simple.cpp | 5 ++++-\n src/libcamera/software_isp/software_isp.cpp | 10 ++++++++++\n 5 files changed, 25 insertions(+), 1 deletion(-)", "diff": "diff --git a/include/libcamera/internal/software_isp/software_isp.h b/include/libcamera/internal/software_isp/software_isp.h\nindex c5d5a46ff..a3e3a9da4 100644\n--- a/include/libcamera/internal/software_isp/software_isp.h\n+++ b/include/libcamera/internal/software_isp/software_isp.h\n@@ -73,6 +73,7 @@ public:\n \tint start();\n \tvoid stop();\n \n+\tvoid queueRequest(const uint32_t frame, const ControlList &controls);\n \tint queueBuffers(uint32_t frame, FrameBuffer *input,\n \t\t\t const std::map<const Stream *, FrameBuffer *> &outputs);\n \ndiff --git a/include/libcamera/ipa/soft.mojom b/include/libcamera/ipa/soft.mojom\nindex 88a35a48d..ddccd154d 100644\n--- a/include/libcamera/ipa/soft.mojom\n+++ b/include/libcamera/ipa/soft.mojom\n@@ -23,6 +23,7 @@ interface IPASoftInterface {\n \tconfigure(IPAConfigInfo configInfo)\n \t\t=> (int32 ret);\n \n+\t[async] queueRequest(uint32 frame, libcamera.ControlList sensorControls);\n \t[async] processStats(uint32 frame,\n \t\t\t uint32 bufferId,\n \t\t\t libcamera.ControlList sensorControls);\ndiff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\nindex 0ea622663..eb3bbd920 100644\n--- a/src/ipa/simple/soft_simple.cpp\n+++ b/src/ipa/simple/soft_simple.cpp\n@@ -78,6 +78,7 @@ public:\n \tint start() override;\n \tvoid stop() override;\n \n+\tvoid queueRequest(const uint32_t frame, const ControlList &controls) override;\n \tvoid processStats(const uint32_t frame, const uint32_t bufferId,\n \t\t\t const ControlList &sensorControls) override;\n \n@@ -270,6 +271,14 @@ void IPASoftSimple::stop()\n {\n }\n \n+void IPASoftSimple::queueRequest(const uint32_t frame, const ControlList &controls)\n+{\n+\tIPAFrameContext &frameContext = context_.frameContexts.alloc(frame);\n+\n+\tfor (auto const &algo : algorithms())\n+\t\talgo->queueRequest(context_, frame, frameContext, controls);\n+}\n+\n void IPASoftSimple::processStats([[maybe_unused]] const uint32_t frame,\n \t\t\t\t [[maybe_unused]] const uint32_t bufferId,\n \t\t\t\t const ControlList &sensorControls)\ndiff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex ddc4102b1..61157fe6d 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -1421,8 +1421,11 @@ int SimplePipelineHandler::queueRequestDevice(Camera *camera, Request *request)\n \t\t}\n \t}\n \n-\tif (data->useConversion_)\n+\tif (data->useConversion_) {\n \t\tdata->conversionQueue_.push(std::move(buffers));\n+\t\tif (data->swIsp_)\n+\t\t\tdata->swIsp_->queueRequest(request->sequence(), request->controls());\n+\t}\n \n \treturn 0;\n }\ndiff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\nindex eed433e07..3a01bdccc 100644\n--- a/src/libcamera/software_isp/software_isp.cpp\n+++ b/src/libcamera/software_isp/software_isp.cpp\n@@ -277,6 +277,16 @@ int SoftwareIsp::exportBuffers(const Stream *stream, unsigned int count,\n \treturn count;\n }\n \n+/**\n+ * \\brief Queue a request and process the control list from the application\n+ * \\param[in] frame The number of the frame which will be processed next\n+ * \\param[in] controls The controls for the \\a frame\n+ */\n+void SoftwareIsp::queueRequest(const uint32_t frame, const ControlList &controls)\n+{\n+\tipa_->queueRequest(frame, controls);\n+}\n+\n /**\n * \\brief Queue buffers to Software ISP\n * \\param[in] frame The frame number\n", "prefixes": [ "v8", "10/18" ] }