Show a cover letter.

GET /api/covers/3552/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 3552,
    "url": "https://patchwork.libcamera.org/api/covers/3552/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/3552/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/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": "<20200427031713.14013-1-laurent.pinchart@ideasonboard.com>",
    "date": "2020-04-27T03:17:02",
    "name": "[libcamera-devel,00/11] libcamera: Add support for IPA configuration",
    "submitter": {
        "id": 2,
        "url": "https://patchwork.libcamera.org/api/people/2/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/3552/mbox/",
    "series": [
        {
            "id": 831,
            "url": "https://patchwork.libcamera.org/api/series/831/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=831",
            "date": "2020-04-27T03:17:02",
            "name": "libcamera: Add support for IPA configuration",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/831/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/3552/comments/",
    "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 31622601B8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 27 Apr 2020 05:17:33 +0200 (CEST)",
            "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 8BD7D72C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 27 Apr 2020 05:17:32 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"dYgnXWjE\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1587957452;\n\tbh=hVKYzvsOPbggvXoZKrnEuvrTPCJKJmh12rMoSexcwIc=;\n\th=From:To:Subject:Date:From;\n\tb=dYgnXWjEvfhW7MCq5JSauaimtLPEmZJ+YUtHlUcziqCM+uvfQRsp8PZd3rdt24wIK\n\tsxFhUakwMA/Q2Gxzq94JV3LnO9NmLnVC0NkP1iKgCVng0bw4nC0yK5k/ymnREZUpSh\n\teDvud7h/0ao0G/Cfrj15ZVOZTzu+0+OSxwJYvHZg=",
        "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Mon, 27 Apr 2020 06:17:02 +0300",
        "Message-Id": "<20200427031713.14013-1-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.25.3",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 00/11] libcamera: Add support for IPA\n\tconfiguration",
        "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": "Mon, 27 Apr 2020 03:17:33 -0000"
    },
    "content": "Hello,\n\nIt is expected that IPA will need configuration files. To standardize\nthe location of those files and avoid putting too much burden on\npipeline handlers and IPA modules, support for this features is needed\nin the libcamera core. This patch series is an attempt to do so.\n\nThe series starts in patch 01/11 by changing usage of the IPA module\nname, as stored in the IPAModuleInfo structure. The name was a\nfree-formed string, and is now required to match the directory name of\nthe IPA module in the source tree for modules part of libcamera. For\nexternal modules, the name is required to be usable as a directory\ncomponent.\n\nPatch 02/11 then adds a new function to retrieve the libcamera source\ntree directory. This is similar to the build tree directory retrieval\nthat is already used to locate IPA modules or proxy workers in the build\ntree, and will be used to locate configuration files in the source tree.\nThere's a small issue with that patch in that it hardcodes the path to\nthe source tree in the libcamera binary. I would like to strip that at\ninstall time, but haven't found a good way to do so yet.\n\nPatch 03/11 and 04/11 are small cleanups. Patch 05/11 starts the bulk of\nthe work by adding a function to the IPAProxy class to retrieve the\nabsolute path to a configuration file for an IPA module based on the\nname of the file. Please see the patch for more details.\n\nPatch 06/11 changes the IPAManager::createIPA() function to return an\nIPAProxy instead of an IPAInterface, giving the pipeline handlers a way\nto access the IPAProxy helper functions. This is fairly non-intrusive as\nthe IPAInterface returned by that function is actually an IPAProxy\ninstance already.\n\nPatch 07/11 extends the IPAInterface::init() function with an\nIPASettings argument, that only contains the configuration file path for\nnow. This is expected to be extended later with more initialization\ndata.\n\nPatches 08/11 to 11/11 then update the vimc IPA, and vimc pipeline\nhandler and the tests to add a (currently dummy) configuration file to\nthe source tree (08/11), pass it from the pipeline handler and tests to\nthe IPA (09/11 and 10/11), and verifying it in the IPA (11/11).\n\nExcept for the source tree path issue, I'm fairly happy with the result,\nbut I'm open to reconsidering the approach if needed. Any magic solution\nfor the source tree path issue will be highly appreciated :-)\n\nOn a side note, I've discovered a problem with IPA module signatures\nwhen installing the modules. Both the module and the signature files are\ninstalled in the right location, but the module is modified to strip the\nDT_RPATH and DT_RUNPATH tags, which renders the signature invalid. I can\nsee two options to fix this, regenerating the signature at install time,\nand ignoring the dynamic section when generating and verifying the\nsignature. I'm not sure yet whether the former is possible with meson.\nThe latter should ideally not ignore the whole dynamic section, as it\nmay contain data that should be signed, but strip the DT_RPATH and\nDT_RUNPATH tags exactly as done by meson when generating the signature\nand verifying it. This may however be fragile, so ignoring the whole\nsection may be the best option for now. I'm also open to ideas.\n\nLaurent Pinchart (11):\n  ipa: Name IPA modules after their source directory\n  libcamera: utils: Add a function to retrieve the libcamera source tree\n  libcamera: ipa_proxy: Add missing space in info message\n  libcamera: ipa_proxy: Don't include <iostream>\n  libcamera: ipa_proxy: Provide suport for IPA configuration files\n  libcamera: ipa_manager: Return an IPAProxy from createIPA()\n  ipa: Pass IPA initialization settings to IPAInterface::init()\n  ipa: vimc: Add a dummy configuration file to the vimc IPA\n  libcamera: pipeline: vimc: Pass configuration file to IPA init()\n  test: ipa: ipa_interface: Pass configuration file to IPA init()\n  ipa: vimc: Validate configuration file in init()\n\n include/ipa/ipa_interface.h                 | 13 ++-\n meson.build                                 |  2 +\n src/ipa/libipa/ipa_interface_wrapper.cpp    |  8 +-\n src/ipa/libipa/ipa_interface_wrapper.h      |  3 +-\n src/ipa/meson.build                         |  6 ++\n src/ipa/rkisp1/rkisp1.cpp                   |  4 +-\n src/ipa/vimc/data/meson.build               |  6 ++\n src/ipa/vimc/data/vimc.conf                 |  1 +\n src/ipa/vimc/meson.build                    |  2 +\n src/ipa/vimc/vimc.cpp                       | 17 +++-\n src/libcamera/include/ipa_context_wrapper.h |  2 +-\n src/libcamera/include/ipa_manager.h         |  6 +-\n src/libcamera/include/ipa_proxy.h           | 11 ++-\n src/libcamera/include/pipeline_handler.h    |  5 +-\n src/libcamera/include/utils.h               |  1 +\n src/libcamera/ipa_context_wrapper.cpp       |  9 +-\n src/libcamera/ipa_interface.cpp             | 32 +++++++\n src/libcamera/ipa_manager.cpp               | 14 +--\n src/libcamera/ipa_module.cpp                | 20 +++++\n src/libcamera/ipa_proxy.cpp                 | 95 +++++++++++++++++++--\n src/libcamera/pipeline/rkisp1/rkisp1.cpp    |  2 +-\n src/libcamera/pipeline/vimc/vimc.cpp        |  8 +-\n src/libcamera/proxy/ipa_proxy_linux.cpp     |  4 +-\n src/libcamera/proxy/ipa_proxy_thread.cpp    |  8 +-\n src/libcamera/utils.cpp                     | 37 +++++++-\n test/ipa/ipa_interface_test.cpp             | 10 ++-\n test/ipa/ipa_module_test.cpp                |  2 +-\n test/ipa/ipa_wrappers_test.cpp              | 13 ++-\n 28 files changed, 288 insertions(+), 53 deletions(-)\n create mode 100644 src/ipa/vimc/data/meson.build\n create mode 100644 src/ipa/vimc/data/vimc.conf"
}