{"id":1276,"url":"https://patchwork.libcamera.org/api/1.1/covers/1276/?format=json","web_url":"https://patchwork.libcamera.org/cover/1276/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/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":"<20190523164210.2105-1-paul.elder@ideasonboard.com>","date":"2019-05-23T16:42:05","name":"[libcamera-devel,RFC,v2,0/5] Add IPAManager","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/1.1/people/17/?format=json","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/1276/mbox/","series":[{"id":324,"url":"https://patchwork.libcamera.org/api/1.1/series/324/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=324","date":"2019-05-23T16:42:05","name":"Add IPAManager","version":2,"mbox":"https://patchwork.libcamera.org/series/324/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/1276/comments/","headers":{"Return-Path":"<paul.elder@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5624E60E9A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 23 May 2019 18:42:24 +0200 (CEST)","from localhost.localdomain (unknown [96.44.9.117])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8710E334;\n\tThu, 23 May 2019 18:42:23 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1558629743;\n\tbh=MDetvA1r4J7U+kkvKENYB9a7EkV2cZ8hSTXajqci7ew=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=fqLK3bdWdfjYkaHQ217p4VpOhYsK5Y9tnYprTaNaBL1UaxQELx8JkVCyXLA5p0m6b\n\tNvnJUSSwC1+k0r78MxkyZWpZ5l4Ec6OH3N/ElflMsjjzfH19MsP28K/VeDzwmYiaRE\n\t3IKdjSZvQfJEltwHg5Z0Ovu5NZsleWOnOkmioMaY=","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Thu, 23 May 2019 12:42:05 -0400","Message-Id":"<20190523164210.2105-1-paul.elder@ideasonboard.com>","X-Mailer":"git-send-email 2.20.1","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel]  [RFC PATCH v2 0/5] Add IPAManager","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Thu, 23 May 2019 16:42:24 -0000"},"content":"Pipeline handlers need a way to acquire an IPA module. To achieve this,\nwe use an IPA manager, that loads many IPA modules, after which a\npipeline handler can ask the IPA manager for an IPA module that matches\nit. Each IPA can only be used with one pipeline, but a pipeline may work\nwith many IPAs (not simultaneously).\n\nI took inspiration from the DeviceEnumerator, and went for one\nIPAManager, that scans a directory (or many) for IPA modules, and loads\nthem into a list, after which a pipeline handler can aquire one.\n5/5 \"libcamera: pipelines: add IPAManager\" shows how this might work.\nThe pipeline handler fills in parameters into a struct IPAModuleInfo\nwhich the IPA manager uses to find a matching IPA module.\n\nChanges in v2:\n- added documentation\n- made IPAManager into a real singleton (not my misunderstood one)\n- removed IPAManager as a parameter to PipelineHandler::match()\n- IPAManager returns non-const IPAModule\n\nPaul Elder (5):\n  libcamera: ipa_module_info: update struct to allow IPA matching\n  libcamera: ipa_module: add aquired attribute\n  libcamera: ipa_manager: implement class for managing IPA modules\n  test: ipa_manager: add test for IPAManager\n  libcamera: pipelines: uvcvideo: add IPAManager\n\n Documentation/Doxyfile.in               |   7 +-\n include/libcamera/ipa/ipa_module_info.h |   8 +-\n src/libcamera/include/ipa_manager.h     |  39 ++++++++\n src/libcamera/include/ipa_module.h      |   5 +\n src/libcamera/ipa_manager.cpp           | 122 ++++++++++++++++++++++++\n src/libcamera/ipa_module.cpp            |  62 ++++++++++--\n src/libcamera/meson.build               |   2 +\n src/libcamera/pipeline/uvcvideo.cpp     |  16 +++-\n test/ipa/ipa_manager_test.cpp           |  45 +++++++++\n test/ipa/ipa_test.cpp                   |  37 ++++---\n test/ipa/meson.build                    |   3 +-\n test/ipa/shared_test.c                  |   4 +-\n test/ipa/shared_test.cpp                |   6 +-\n 13 files changed, 328 insertions(+), 28 deletions(-)\n create mode 100644 src/libcamera/include/ipa_manager.h\n create mode 100644 src/libcamera/ipa_manager.cpp\n create mode 100644 test/ipa/ipa_manager_test.cpp"}