Show a cover letter.

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

{
    "id": 24497,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/24497/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/24497/",
    "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": "<20250930122726.1837524-1-stefan.klug@ideasonboard.com>",
    "date": "2025-09-30T12:26:21",
    "name": "[v1,00/33] Full dewarper support on imx8mp",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/1.1/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/24497/mbox/",
    "series": [
        {
            "id": 5468,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5468/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5468",
            "date": "2025-09-30T12:26:21",
            "name": "Full dewarper support on imx8mp",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5468/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/24497/comments/",
    "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 A2E1EC328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 30 Sep 2025 12:29:48 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 73FDD6B5F0;\n\tTue, 30 Sep 2025 14:29:47 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5332469367\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 30 Sep 2025 14:29:45 +0200 (CEST)",
            "from ideasonboard.com (unknown [94.31.94.171])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id E50A1220;\n\tTue, 30 Sep 2025 14:28:16 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"UQs0lQLR\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1759235297;\n\tbh=xuy9oppEIGd/AUxS7BACUQVZ6LpiJlvRcmmCs7s6KRM=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=UQs0lQLR7idbh8mmy3tMrxM17V8K0mNReNMY1TCBY/4HYNR+JjbKOPdG5qcLFoRNH\n\tJ+8t7wawAySYEtH+Cro7P/6zk/vTZgyT9g38iTh4xTDOFV1e8RFhvuwXk6bhgP08Jt\n\th6pCQ3JVlV3PBzQQGQbZpnroQ3PFTBLpFk/jmEoU=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Subject": "[PATCH v1 00/33] Full dewarper support on imx8mp",
        "Date": "Tue, 30 Sep 2025 14:26:21 +0200",
        "Message-ID": "<20250930122726.1837524-1-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.48.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Hi all,\n\nthe imx8mp has a very flexible dewarper that can be used to implement\ncropping, digital zoom, pan, rotate, flip and actual lens dewarping. This\nseries implements all these features for libcamera.\n\nControl wise, the functionality is split into multiple aspects.\nScalerCrop is now implemented using the vertex map, because that\nprovides pixel perfect control for arbitrary rectangles which is an\nimprovement over the current solution that only supports a limited set\nof scaling factors. On top of that a few specific Dw100 specific\ncontrols are added to implement the other functions. Lens dewarp is\nbased on calibration data in the tuning file and can be enabled/disabled\nat runtime.\n\nAs prerequisite it requires an updated kernel driver that supports\nprogramming the vertex map at runtime. The corresponding implementation\nis well underway, but not yet upstream.\n\nYou can find the current version of the kernel driver here:\nhttps://git.uk.ideasonboard.com/sklug/linux/src/branch/sklug/v6.16/topic/dw100-v2\n\nNow to the series. Patches 2-4 replace plain pointers to media devices\nby shared pointers. The patches were already posted here:\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=5113 and\nreview should continue there.\n\nPatches 5-10 contain more plumbing and add support for V4L2 requests in\nlibcamera.\n\nPatches 11-32 contain the actual implementation and I guess it is best\nto read the individual patches.\n\nPatch 33 shall not be mainlined and is only there to keep compatibility\nwith prior versions of the kernel driver that didn't use V4L2 requests.\n\nAs always there are things to improve but functionality wise it is well\ntested. So I think it is a good time to get more eyes on the code.\n\nBest regards,\nStefan\n\n\n\nKieran Bingham (4):\n  libcamera: rkisp1: Only connect delayed controls at start/stop\n  libcamera: v4l2: Support fromEntityName with shared_ptr<MediaDevice>\n  libcamera: pipeline: utilise shared MediaDevice pointers\n  libcamera: v4l2: Remove fromEntityName(MediaDevice*)\n\nStefan Klug (26):\n  libcamera: converter: Utilise shared MediaDevice pointers\n  libcamera: Add support for V4L2 requests\n  libcamera: converter: Add V4L2 request support\n  libcamera: converter_v4l2_m2m: Add suport for V4L2 requests\n  libcamera: converter_v4l2_m2m: Always set stride\n  pipeline: rkisp1: Use V4L2 requests for the dewarper\n  libcamera: rkisp1: Properly cancel buffers in dewarp case\n  libcamera: converter_v4l2_m2m: Add debug logging for formats\n  libcamera: rkisp1: Move useDewarper_ flag into RkISP1CameraData\n  libcamera: rkisp1: Scale down in dewarper instead of resizer\n  libcamera: rkisp1: Allow upscaling when the dewarper is present\n  libcamera: converter: converter_v4l2_m2m: Add makeStream() function\n  libcamera: converter: Add dw100 vertex map class\n  libcamera: converter_dw100: Use vertex map\n  libcamera: rkisp1: Use the dw100 class instead of the generic v4l2\n    converter\n  libcamera: rkisp1: Implement dw100 specific features\n  libcamera: rkisp1: Use vertex map to implement ScalerCrop\n  libcamera: internal: camera_sensor: Add accessor for\n    mountingOrientation_\n  libcamera: Add transpose() function to size\n  libcamera: rkisp1: Handle requested orientation using dewarper\n  libcamera: dw100_vertexmap:  Implement parametric dewarping\n  pipeline: rkisp1: Enable the dewarper based on the tuning file\n  pipeline: rkisp1: Load dewarp parameters from tuning file\n  libcamera: Add LensDewarpEnable control\n  libcamera: rkisp1: Implement LensDewarpEnable control\n  DNI pipeline: rkisp1: Workaround for customer kernels without requests\n\nUmang Jain (2):\n  libcamera: converter_v4l2_m2m: Add helper to apply controls\n  libcamera: converter: Add dw100 converter class\n\nXavier Roumegue (1):\n  include: linux: Update headers for Dw100 dewarper engine\n\n include/libcamera/geometry.h                  |   6 +\n include/libcamera/internal/camera_sensor.h    |   1 +\n include/libcamera/internal/converter.h        |  13 +-\n .../internal/converter/converter_dw100.h      |  45 ++\n .../converter/converter_dw100_vertexmap.h     |  97 ++++\n .../internal/converter/converter_v4l2_m2m.h   |  28 +-\n .../libcamera/internal/converter/meson.build  |   2 +\n include/libcamera/internal/media_device.h     |   7 +\n include/libcamera/internal/meson.build        |   1 +\n include/libcamera/internal/pipeline_handler.h |   8 +-\n include/libcamera/internal/v4l2_device.h      |   5 +-\n include/libcamera/internal/v4l2_request.h     |  49 ++\n include/libcamera/internal/v4l2_subdevice.h   |   2 +-\n include/libcamera/internal/v4l2_videodevice.h |   5 +-\n include/linux/dw100.h                         |  14 +\n src/ipa/libipa/module.h                       |   4 +\n src/libcamera/control_ids_core.yaml           |   6 +\n src/libcamera/control_ids_draft.yaml          |  39 +-\n src/libcamera/converter.cpp                   |   8 +-\n src/libcamera/converter/converter_dw100.cpp   |  99 ++++\n .../converter/converter_dw100_vertexmap.cpp   | 449 +++++++++++++++\n .../converter/converter_v4l2_m2m.cpp          |  80 ++-\n src/libcamera/converter/meson.build           |   2 +\n src/libcamera/geometry.cpp                    |  10 +\n src/libcamera/media_device.cpp                |  47 ++\n src/libcamera/meson.build                     |   1 +\n src/libcamera/pipeline/imx8-isi/imx8-isi.cpp  |   2 +-\n src/libcamera/pipeline/ipu3/cio2.cpp          |   2 +-\n src/libcamera/pipeline/ipu3/cio2.h            |   2 +-\n src/libcamera/pipeline/ipu3/imgu.cpp          |   3 +-\n src/libcamera/pipeline/ipu3/imgu.h            |   4 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp          |   4 +-\n src/libcamera/pipeline/mali-c55/mali-c55.cpp  |   2 +-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 523 ++++++++++++++----\n src/libcamera/pipeline/rkisp1/rkisp1_path.cpp |   2 +-\n src/libcamera/pipeline/rkisp1/rkisp1_path.h   |   2 +-\n .../pipeline/rpi/common/pipeline_base.cpp     |   6 +-\n .../pipeline/rpi/common/pipeline_base.h       |   9 +-\n src/libcamera/pipeline/rpi/pisp/pisp.cpp      |  10 +-\n src/libcamera/pipeline/rpi/vc4/vc4.cpp        |  13 +-\n src/libcamera/pipeline/simple/simple.cpp      |  15 +-\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  |   6 +-\n src/libcamera/pipeline/vimc/vimc.cpp          |   6 +-\n src/libcamera/pipeline_handler.cpp            |  14 +-\n src/libcamera/sensor/camera_sensor_legacy.cpp |   1 +\n src/libcamera/sensor/camera_sensor_raw.cpp    |   1 +\n src/libcamera/v4l2_device.cpp                 |  28 +-\n src/libcamera/v4l2_request.cpp                | 107 ++++\n src/libcamera/v4l2_subdevice.cpp              |   2 +-\n src/libcamera/v4l2_videodevice.cpp            |  12 +-\n test/delayed_controls.cpp                     |   2 +-\n test/libtest/buffer_source.cpp                |   2 +-\n 52 files changed, 1606 insertions(+), 202 deletions(-)\n create mode 100644 include/libcamera/internal/converter/converter_dw100.h\n create mode 100644 include/libcamera/internal/converter/converter_dw100_vertexmap.h\n create mode 100644 include/libcamera/internal/v4l2_request.h\n create mode 100644 include/linux/dw100.h\n create mode 100644 src/libcamera/converter/converter_dw100.cpp\n create mode 100644 src/libcamera/converter/converter_dw100_vertexmap.cpp\n create mode 100644 src/libcamera/v4l2_request.cpp"
}