Patch Detail
Show a patch.
GET /api/1.1/patches/9937/?format=api
{ "id": 9937, "url": "https://patchwork.libcamera.org/api/1.1/patches/9937/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9937/", "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": "<20201002143154.468162-30-paul.elder@ideasonboard.com>", "date": "2020-10-02T14:31:45", "name": "[libcamera-devel,v3,29/38] libcamera: pipeline, ipa: vimc: Support the new IPC mechanism", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "f4e688a2ca35809366c23e8313bd1962ade4c552", "submitter": { "id": 17, "url": "https://patchwork.libcamera.org/api/1.1/people/17/?format=api", "name": "Paul Elder", "email": "paul.elder@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/9937/mbox/", "series": [ { "id": 1348, "url": "https://patchwork.libcamera.org/api/1.1/series/1348/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1348", "date": "2020-10-02T14:31:16", "name": "IPA isolation implementation", "version": 3, "mbox": "https://patchwork.libcamera.org/series/1348/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9937/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9937/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 AACE4C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 2 Oct 2020 14:33:17 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 79D9063BE6;\n\tFri, 2 Oct 2020 16:33:17 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 704D463B98\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 2 Oct 2020 16:33:16 +0200 (CEST)", "from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B032B528;\n\tFri, 2 Oct 2020 16:33:14 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"LIGcDMpF\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1601649196;\n\tbh=18plUL17/5AwZRQMCkqwSWzUuA62UmxIhg6h6gwlEMs=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=LIGcDMpFwR4F1OCEzFov86rqw94vXymTD1VbV0pQa1xUjhClGt0ehFZza8aYyXU6Y\n\to9Sbwd2c/16RKNZW/H/Si3bjU4kenxhcz5CVmcYWx837PMVZAzPBeehTmMr2x6jRQA\n\tZpSI71rhb2N3ROAxoC1OryXQD6lVI9P8VQ1e7YNA=", "From": "Paul Elder <paul.elder@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Fri, 2 Oct 2020 23:31:45 +0900", "Message-Id": "<20201002143154.468162-30-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.27.0", "In-Reply-To": "<20201002143154.468162-1-paul.elder@ideasonboard.com>", "References": "<20201002143154.468162-1-paul.elder@ideasonboard.com>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v3 29/38] libcamera: pipeline,\n\tipa: vimc: Support the new IPC mechanism", "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>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Add support to vimc pipeline handler and IPA for the new IPC mechanism.\n\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\n---\nChanges in v3:\n- change namespacing of base ControlInfoMap structure\n\nNew in v2\n---\n include/libcamera/ipa/meson.build | 1 +\n include/libcamera/ipa/{ipa_vimc.h => vimc.h} | 8 ++++++++\n include/libcamera/ipa/vimc.mojom | 12 ++++++++++++\n src/ipa/vimc/meson.build | 2 +-\n src/ipa/vimc/vimc.cpp | 18 +++++-------------\n src/libcamera/pipeline/vimc/vimc.cpp | 8 +++++++-\n 6 files changed, 34 insertions(+), 15 deletions(-)\n rename include/libcamera/ipa/{ipa_vimc.h => vimc.h} (84%)\n create mode 100644 include/libcamera/ipa/vimc.mojom", "diff": "diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build\nindex 55c97fa5..886908ad 100644\n--- a/include/libcamera/ipa/meson.build\n+++ b/include/libcamera/ipa/meson.build\n@@ -26,6 +26,7 @@ ipa_mojom_core = custom_target(core_mojom_file.split('.')[0] + '_mojom_module',\n \n ipa_mojom_files = [\n 'raspberrypi.mojom',\n+ 'vimc.mojom',\n ]\n \n ipa_mojoms = []\ndiff --git a/include/libcamera/ipa/ipa_vimc.h b/include/libcamera/ipa/vimc.h\nsimilarity index 84%\nrename from include/libcamera/ipa/ipa_vimc.h\nrename to include/libcamera/ipa/vimc.h\nindex 8e82dd94..d93e10b8 100644\n--- a/include/libcamera/ipa/ipa_vimc.h\n+++ b/include/libcamera/ipa/vimc.h\n@@ -8,6 +8,8 @@\n #ifndef __LIBCAMERA_IPA_VIMC_H__\n #define __LIBCAMERA_IPA_VIMC_H__\n \n+#include <libcamera/controls.h>\n+\n namespace libcamera {\n \n #define VIMC_IPA_FIFO_PATH \"/tmp/libcamera_ipa_vimc_fifo\"\n@@ -19,6 +21,12 @@ enum IPAOperationCode {\n \tIPAOperationStop,\n };\n \n+namespace Vimc {\n+\n+static ControlInfoMap Controls;\n+\n+}\n+\n } /* namespace libcamera */\n \n #endif /* __LIBCAMERA_IPA_VIMC_H__ */\ndiff --git a/include/libcamera/ipa/vimc.mojom b/include/libcamera/ipa/vimc.mojom\nnew file mode 100644\nindex 00000000..9ab6d005\n--- /dev/null\n+++ b/include/libcamera/ipa/vimc.mojom\n@@ -0,0 +1,12 @@\n+/* SPDX-License-Identifier: LGPL-2.1-or-later */\n+\n+import \"include/libcamera/ipa/core.mojom\";\n+\n+interface IPAVimcInterface {\n+\tinit(IPASettings settings) => (int32 ret);\n+\tstart() => (int32 ret);\n+\tstop();\n+};\n+\n+interface IPAVimcCallbackInterface {\n+};\ndiff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build\nindex 8c9df854..b2b7a09d 100644\n--- a/src/ipa/vimc/meson.build\n+++ b/src/ipa/vimc/meson.build\n@@ -3,7 +3,7 @@\n ipa_name = 'ipa_vimc'\n \n mod = shared_module(ipa_name,\n- 'vimc.cpp',\n+ ['vimc.cpp', libcamera_generated_headers],\n name_prefix : '',\n include_directories : [ipa_includes, libipa_includes],\n dependencies : libcamera_dep,\ndiff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\nindex ef257762..00ec7b80 100644\n--- a/src/ipa/vimc/vimc.cpp\n+++ b/src/ipa/vimc/vimc.cpp\n@@ -5,7 +5,8 @@\n * ipa_vimc.cpp - Vimc Image Processing Algorithm module\n */\n \n-#include <libcamera/ipa/ipa_vimc.h>\n+#include <libcamera/ipa/vimc.h>\n+#include <libcamera/ipa/vimc_generated.h>\n \n #include <fcntl.h>\n #include <string.h>\n@@ -26,7 +27,7 @@ namespace libcamera {\n \n LOG_DEFINE_CATEGORY(IPAVimc)\n \n-class IPAVimc : public IPAInterface\n+class IPAVimc : public IPAVimcInterface\n {\n public:\n \tIPAVimc();\n@@ -37,15 +38,6 @@ public:\n \tint start() override;\n \tvoid stop() override;\n \n-\tvoid configure([[maybe_unused]] const CameraSensorInfo &sensorInfo,\n-\t\t [[maybe_unused]] const std::map<unsigned int, IPAStream> &streamConfig,\n-\t\t [[maybe_unused]] const std::map<unsigned int, const ControlInfoMap &> &entityControls,\n-\t\t [[maybe_unused]] const IPAOperationData &ipaConfig,\n-\t\t [[maybe_unused]] IPAOperationData *result) override {}\n-\tvoid mapBuffers([[maybe_unused]] const std::vector<IPABuffer> &buffers) override {}\n-\tvoid unmapBuffers([[maybe_unused]] const std::vector<unsigned int> &ids) override {}\n-\tvoid processEvent([[maybe_unused]] const IPAOperationData &event) override {}\n-\n private:\n \tvoid initTrace();\n \tvoid trace(enum IPAOperationCode operation);\n@@ -141,9 +133,9 @@ const struct IPAModuleInfo ipaModuleInfo = {\n \t\"vimc\",\n };\n \n-struct ipa_context *ipaCreate()\n+IPAInterface *ipaCreate()\n {\n-\treturn new IPAInterfaceWrapper(std::make_unique<IPAVimc>());\n+\treturn new IPAVimc();\n }\n }\n \ndiff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\nindex fc8085f1..146025c0 100644\n--- a/src/libcamera/pipeline/vimc/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc/vimc.cpp\n@@ -34,6 +34,10 @@\n #include \"libcamera/internal/v4l2_subdevice.h\"\n #include \"libcamera/internal/v4l2_videodevice.h\"\n \n+#include <libcamera/ipa/vimc.h>\n+#include <libcamera/ipa/vimc_generated.h>\n+#include <libcamera/ipa/ipa_proxy_vimc.h>\n+\n namespace libcamera {\n \n LOG_DEFINE_CATEGORY(VIMC)\n@@ -67,6 +71,8 @@ public:\n \tV4L2VideoDevice *video_;\n \tV4L2VideoDevice *raw_;\n \tStream stream_;\n+\n+\tstd::unique_ptr<IPAProxyVimc> ipa_;\n };\n \n class VimcCameraConfiguration : public CameraConfiguration\n@@ -428,7 +434,7 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)\n \n \tstd::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media);\n \n-\tdata->ipa_ = IPAManager::createIPA(this, 0, 0);\n+\tdata->ipa_ = IPAManager::createIPA<IPAProxyVimc>(this, 0, 0);\n \tif (data->ipa_ != nullptr) {\n \t\tstd::string conf = data->ipa_->configurationFile(\"vimc.conf\");\n \t\tdata->ipa_->init(IPASettings{ conf });\n", "prefixes": [ "libcamera-devel", "v3", "29/38" ] }