Show a cover letter.

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

{
    "id": 22346,
    "url": "https://patchwork.libcamera.org/api/covers/22346/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/22346/",
    "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": "<20241216154124.203650-1-stefan.klug@ideasonboard.com>",
    "date": "2024-12-16T15:40:40",
    "name": "[v4,00/20] rkisp1: Fix aspect ratio and ScalerCrop",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/22346/mbox/",
    "series": [
        {
            "id": 4896,
            "url": "https://patchwork.libcamera.org/api/series/4896/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4896",
            "date": "2024-12-16T15:40:40",
            "name": "rkisp1: Fix aspect ratio and ScalerCrop",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/4896/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/22346/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 54DE8C32DA\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Dec 2024 15:41:49 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9C91867F6D;\n\tMon, 16 Dec 2024 16:41:48 +0100 (CET)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4B4BA67F56\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Dec 2024 16:41:47 +0100 (CET)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:bfdf:3a3c:e45:66e3])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 83191675;\n\tMon, 16 Dec 2024 16:41:10 +0100 (CET)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"vDBNLcyd\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1734363670;\n\tbh=4D5vZjVz0cJ8hBf+TbTkOrDq34HCf+TAbwXpIoOLR/I=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=vDBNLcydr7rOQLabfzY/46/zDkgcRkx5ZyuznA3bI3TCVD/kGsUDJ1DjrCAHMzsr3\n\t3nsMhg43PRBXOPKihlaGoBSl8nwbGFsERq1I/CsnUJWwec/sGLv+Nhs/FzFZPJSb87\n\tqa7+QsnM75M6bF92O+2k7BjVTptz1Amr9FWp1V3o=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Subject": "[PATCH v4 00/20] rkisp1: Fix aspect ratio and ScalerCrop",
        "Date": "Mon, 16 Dec 2024 16:40:40 +0100",
        "Message-ID": "<20241216154124.203650-1-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "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\nThis series contains fixes for a few issues on the imx8mp that I'd like\nto get in before the next release.\n\nVersion 3 is a major extension which is described in the last paragraph.\n\nPatch 1 is a drive by fix\n\nPatch 2 Fixes the aspect ratio on the imx8mp. There is code to keep the\naspect ratio in the rkisp1 pipeline that adjust the input crop on the\nresizer stage. On the imx8mp however the resizer hardware is missing\nthat functionality and cropping needs to be done on the ISP output.\nPatch 2 implements that.\n\nPatches 3-12 fix the ScalerCrop control. The existing implementation\nimplements ScalerCrop in dewarper coordinates (After scaling down).\nThis is incorrect as ScalerCrop is specified to be in sensor\ncoordinates. To fix that, patches 3-10 do preparatory changes and patch\n11 implements the correct ScalerCrop control. Patch 12 adds\nScalerMaximumCrop for completeness sake.\n\nNote that this solution while being correct on the numbers is still not\nideal, because the aspect ratio preserving crop on the ISP output is\nstill applied unconditionally. That will get fixed in an upcoming\nseries, where the full sensor size get's passed to the dewarper and all\ncropping/scaling gets handled there.\n\nPatches 12-20 were added after version 2 because it got clear that the\ncurrent master is completely missing the dewarper size validation and\nthat requires fixing. So patches 12-18 do the necessary plumbing and\nimplementation of the validation. Thanks Jacopo for helping with that.\nPatches 19-20 fix another bug found during that work where the sensor\nmight get configured to a size not supported by the isp.\n\nBest regards,\nStefan\n\nChanges in v4:\n- Added override specifiers to converter_v4l2_m2m (patch 6)\n- Split former patch 6 libcamera: converter_v4l2_m2m: Improve crop\n  bounds support into 3 patches with applied review feedback\n- Renamed a few title prefixes from \"libcamera: rkisp1:\" to \"pipeline:\n  rkisp1:\"\n- Applied fixups from mailing list\n- Collected tags\n\nChanges in v3:\n- Fixes from review (see individual changelogs)\n- Added pipeline validation for the dewarper\n- Fixed bug where sensor might be configured to a format incompatible\n  with the isp\n\nChanges in v2:\n- Some smaller fixes from review (see individual changelogs)\n- Added [PATCH v2 6/8] libcamera: converter_v4l2_m2m: Improve crop\n  bounds support to be able to provide sane default values for\nScalerCrop before configure()\n\nJacopo Mondi (1):\n  libcamera: converter: Add functions to adjust config\n\nStefan Klug (19):\n  pipeline: rkisp1: Fix scope of dewarper stop() exit action\n  pipeline: rkisp1: Keep aspect ratio on imx8mp\n  libcamera: geometry: Add Rectangle::transformedBetween()\n  pipeline: rkisp1: Split inputCrop and outputCrop\n  pipeline: rkisp1: Reorder sensorInfo collection code\n  libcamera: converter_v4l2_m2m: Add missing override specifier\n  libcamera: converter_v4l2_m2m: Refactor get crop bounds code\n  libcamera: converter: Add function to query crop bounds\n  libcamera: converter: Add function to check if a stream was configured\n  pipeline: rkisp1: Query dewarper crop bounds if no stream configured\n  pipeline: rkisp1: Fix ScalerCrop to be in sensor coordinates\n  pipeline: rkisp1: Add ScalerMaximumCrop property\n  pipeline: rkisp1: Refactor path validation\n  pipeline: rkisp1: Enable the dewarper unconditionally\n  libcamera: camera: Add a const version of the pipe() function\n  pipeline: rkisp1: make RkISP1CameraConfiguration a friend of the\n    pipeline handler\n  pipeline: rkisp1: Fix config validation when dewarper is used\n  libcamera: camera_sensor: Add parameter to limit returned sensor size\n  pipeline: rkisp1: Limit sensor size to max resolution\n\n include/libcamera/geometry.h                  |   3 +\n include/libcamera/internal/camera.h           |   1 +\n include/libcamera/internal/camera_sensor.h    |   2 +-\n include/libcamera/internal/converter.h        |  17 +\n .../internal/converter/converter_v4l2_m2m.h   |  39 ++-\n src/libcamera/camera.cpp                      |   5 +\n src/libcamera/converter.cpp                   |  60 ++++\n .../converter/converter_v4l2_m2m.cpp          | 295 ++++++++++++++----\n src/libcamera/geometry.cpp                    |  49 +++\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 189 ++++++++---\n src/libcamera/pipeline/rkisp1/rkisp1_path.cpp |  13 +-\n src/libcamera/pipeline/rkisp1/rkisp1_path.h   |   1 +\n src/libcamera/sensor/camera_sensor.cpp        |   3 +\n src/libcamera/sensor/camera_sensor_legacy.cpp |   9 +-\n test/geometry.cpp                             |  11 +\n 15 files changed, 576 insertions(+), 121 deletions(-)"
}