From patchwork Mon May 27 22:35:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 1318 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id AF0E460E9A for ; Tue, 28 May 2019 00:35:47 +0200 (CEST) Received: from localhost.localdomain (unknown [96.44.9.117]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D796CD85; Tue, 28 May 2019 00:35:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1558996547; bh=yOf3PXRtqMCJnxVprJ3DiabZs3uYoMIM7D5/S4apddc=; h=From:To:Cc:Subject:Date:From; b=DpZ6drJ0b+GdxnQbo6JHTyGUy5w//hKv9sShFaISHeAYb6Sa3zFIMOFcuoPRPBHjD THU5amfBerTB75TE8QRxvB4RU2Wk1z99TpZeNiO9K6J6zKhmw28KP6PUwXljG1r7bI ZKqR+lS9awylSfRGMCpRqiij2ls/9eHnNmKybJhY= From: Paul Elder To: libcamera-devel@lists.libcamera.org Date: Mon, 27 May 2019 18:35:32 -0400 Message-Id: <20190527223540.21855-1-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 0/8] Add IPAManager and IPAInterface X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 May 2019 22:35:47 -0000 Pipeline handlers need a way to acquire an IPA module. To achieve this, we use an IPA manager, that loads many IPA modules, after which a pipeline handler can ask the IPA manager for an IPA module that matches it. Each IPA can only be used with one pipeline handler, but a pipeline handler may work with many IPAs (not simultaneously). The pipeline handlers also need names and versions (previously only the factory had a name) to be matched with an IPA module. Each IPA module, in a shared object, implements an IPAInterface class, which defines the interface between a pipeline hander and an IPA implementation, hence the name. Paul Elder (8): libcamera: ipa_interface: add header libcamera: pipeline: add name, major version, and minor version libcamera: ipa_module_info: update struct to allow IPA matching libcamera: ipa_module: allow instantiation of IPAInterface libcamera: ipa_manager: implement class for managing IPA modules libcamera: ipa: add dummy IPA implementation libcamera: test: remove test IPA and use dummy IPA instead libcamera: pipeline: vimc: add dummy IPA Documentation/Doxyfile.in | 7 +- include/libcamera/ipa/ipa_interface.h | 22 ++++ include/libcamera/ipa/ipa_module_info.h | 11 +- include/libcamera/meson.build | 1 + src/ipa/ipa_dummy.cpp | 38 +++++++ src/ipa/meson.build | 10 ++ src/libcamera/include/ipa_manager.h | 40 +++++++ src/libcamera/include/ipa_module.h | 15 ++- src/libcamera/include/pipeline_handler.h | 20 +++- src/libcamera/ipa_interface.cpp | 27 +++++ src/libcamera/ipa_manager.cpp | 129 +++++++++++++++++++++++ src/libcamera/ipa_module.cpp | 128 ++++++++++++++++++++-- src/libcamera/meson.build | 6 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 6 +- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 6 +- src/libcamera/pipeline/uvcvideo.cpp | 6 +- src/libcamera/pipeline/vimc.cpp | 16 ++- src/libcamera/pipeline_handler.cpp | 20 ++++ src/meson.build | 1 + test/ipa/ipa_test.cpp | 51 ++++++--- test/ipa/meson.build | 11 -- test/ipa/shared_test.c | 6 -- test/ipa/shared_test.cpp | 4 +- 23 files changed, 527 insertions(+), 54 deletions(-) create mode 100644 include/libcamera/ipa/ipa_interface.h create mode 100644 src/ipa/ipa_dummy.cpp create mode 100644 src/ipa/meson.build create mode 100644 src/libcamera/include/ipa_manager.h create mode 100644 src/libcamera/ipa_interface.cpp create mode 100644 src/libcamera/ipa_manager.cpp delete mode 100644 test/ipa/shared_test.c