{"id":2314,"url":"https://patchwork.libcamera.org/api/patches/2314/?format=json","web_url":"https://patchwork.libcamera.org/patch/2314/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20191108205409.18845-19-laurent.pinchart@ideasonboard.com>","date":"2019-11-08T20:54:03","name":"[libcamera-devel,v2,18/24] ipa: Pass ControlInfoMap references to IPAInterface::configure()","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"e613e4575d896980a8523fc8819ba8d81722cb0b","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/?format=json","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/2314/mbox/","series":[{"id":568,"url":"https://patchwork.libcamera.org/api/series/568/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=568","date":"2019-11-08T20:53:45","name":"Control serialization and IPA C API","version":2,"mbox":"https://patchwork.libcamera.org/series/568/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/2314/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/2314/checks/","tags":{},"headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D5D1B60180\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  8 Nov 2019 21:54:28 +0100 (CET)","from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 78B9A71D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  8 Nov 2019 21:54:28 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1573246468;\n\tbh=SeM3/DvuD4bWBGpBt9k2BU9LufAwUKx+ds7visS/VYI=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=qHlK4mXewdmo1Jm9nT4mw4eqB5s92DqNNA+cqCEyd2eC75NikNjgmABlA6fKqJpoL\n\tG6wxzjc7xzdomsu+Zq7JTohsGA6WVlq8j0PjxTdjtkTZLVTO5QTH9rQTvdOMAhv1tv\n\tDGlYewa7B5VbPE927oIfBzpmkQgDp5Yh8QUFeEHY=","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Fri,  8 Nov 2019 22:54:03 +0200","Message-Id":"<20191108205409.18845-19-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.23.0","In-Reply-To":"<20191108205409.18845-1-laurent.pinchart@ideasonboard.com>","References":"<20191108205409.18845-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v2 18/24] ipa: Pass ControlInfoMap\n\treferences to IPAInterface::configure()","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>","X-List-Received-Date":"Fri, 08 Nov 2019 20:54:29 -0000"},"content":"The IPAInterface::configure() operation receives a map of ControlInfoMap\ninstances. Pass const references instead to avoid copies when not\nrequired (the callee can still make manual copies), and to allow for the\nfuture serialization layer to keep references to the original object.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n include/ipa/ipa_interface.h              | 2 +-\n src/ipa/ipa_vimc.cpp                     | 2 +-\n src/ipa/rkisp1/rkisp1.cpp                | 4 ++--\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +-\n src/libcamera/proxy/ipa_proxy_linux.cpp  | 2 +-\n 5 files changed, 6 insertions(+), 6 deletions(-)","diff":"diff --git a/include/ipa/ipa_interface.h b/include/ipa/ipa_interface.h\nindex 8fd658af5fdb..35dc4b4e3165 100644\n--- a/include/ipa/ipa_interface.h\n+++ b/include/ipa/ipa_interface.h\n@@ -43,7 +43,7 @@ public:\n \tvirtual int init() = 0;\n \n \tvirtual void configure(const std::map<unsigned int, IPAStream> &streamConfig,\n-\t\t\t       const std::map<unsigned int, ControlInfoMap> &entityControls) = 0;\n+\t\t\t       const std::map<unsigned int, const ControlInfoMap &> &entityControls) = 0;\n \n \tvirtual void mapBuffers(const std::vector<IPABuffer> &buffers) = 0;\n \tvirtual void unmapBuffers(const std::vector<unsigned int> &ids) = 0;\ndiff --git a/src/ipa/ipa_vimc.cpp b/src/ipa/ipa_vimc.cpp\nindex 9fd5212b0381..50ca8dd805fb 100644\n--- a/src/ipa/ipa_vimc.cpp\n+++ b/src/ipa/ipa_vimc.cpp\n@@ -31,7 +31,7 @@ public:\n \n \tint init() override;\n \tvoid configure(const std::map<unsigned int, IPAStream> &streamConfig,\n-\t\t       const std::map<unsigned int, ControlInfoMap> &entityControls) override {}\n+\t\t       const std::map<unsigned int, const ControlInfoMap &> &entityControls) override {}\n \tvoid mapBuffers(const std::vector<IPABuffer> &buffers) override {}\n \tvoid unmapBuffers(const std::vector<unsigned int> &ids) override {}\n \tvoid processEvent(const IPAOperationData &event) override {}\ndiff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex d741d5677d0e..41babf0c4140 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -33,7 +33,7 @@ public:\n \tint init() override { return 0; }\n \n \tvoid configure(const std::map<unsigned int, IPAStream> &streamConfig,\n-\t\t       const std::map<unsigned int, ControlInfoMap> &entityControls) override;\n+\t\t       const std::map<unsigned int, const ControlInfoMap &> &entityControls) override;\n \tvoid mapBuffers(const std::vector<IPABuffer> &buffers) override;\n \tvoid unmapBuffers(const std::vector<unsigned int> &ids) override;\n \tvoid processEvent(const IPAOperationData &event) override;\n@@ -62,7 +62,7 @@ private:\n };\n \n void IPARkISP1::configure(const std::map<unsigned int, IPAStream> &streamConfig,\n-\t\t\t  const std::map<unsigned int, ControlInfoMap> &entityControls)\n+\t\t\t  const std::map<unsigned int, const ControlInfoMap &> &entityControls)\n {\n \tif (entityControls.empty())\n \t\treturn;\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex b21cf92435e7..4a583a7a1d7e 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -777,7 +777,7 @@ int PipelineHandlerRkISP1::start(Camera *camera)\n \t\t.size = data->stream_.configuration().size,\n \t};\n \n-\tstd::map<unsigned int, ControlInfoMap> entityControls;\n+\tstd::map<unsigned int, const ControlInfoMap &> entityControls;\n \tentityControls.emplace(0, data->sensor_->controls());\n \n \tdata->ipa_->configure(streamConfig, entityControls);\ndiff --git a/src/libcamera/proxy/ipa_proxy_linux.cpp b/src/libcamera/proxy/ipa_proxy_linux.cpp\nindex 27b6639d6312..c7218fb47249 100644\n--- a/src/libcamera/proxy/ipa_proxy_linux.cpp\n+++ b/src/libcamera/proxy/ipa_proxy_linux.cpp\n@@ -28,7 +28,7 @@ public:\n \n \tint init() override { return 0; }\n \tvoid configure(const std::map<unsigned int, IPAStream> &streamConfig,\n-\t\t       const std::map<unsigned int, ControlInfoMap> &entityControls) override {}\n+\t\t       const std::map<unsigned int, const ControlInfoMap &> &entityControls) override {}\n \tvoid mapBuffers(const std::vector<IPABuffer> &buffers) override {}\n \tvoid unmapBuffers(const std::vector<unsigned int> &ids) override {}\n \tvoid processEvent(const IPAOperationData &event) override {}\n","prefixes":["libcamera-devel","v2","18/24"]}