Show a patch.

GET /api/patches/12164/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 12164,
    "url": "https://patchwork.libcamera.org/api/patches/12164/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/12164/",
    "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": "<20210503092705.15562-4-jacopo@jmondi.org>",
    "date": "2021-05-03T09:27:01",
    "name": "[libcamera-devel,v2,3/7] libcamera: ipu3: imgu: Fix BDS height calculation",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "24e1ea21e2f17805a9448de162bad6247741e889",
    "submitter": {
        "id": 3,
        "url": "https://patchwork.libcamera.org/api/people/3/?format=api",
        "name": "Jacopo Mondi",
        "email": "jacopo@jmondi.org"
    },
    "delegate": {
        "id": 15,
        "url": "https://patchwork.libcamera.org/api/users/15/?format=api",
        "username": "jmondi",
        "first_name": "Jacopo",
        "last_name": "Mondi",
        "email": "jacopo@jmondi.org"
    },
    "mbox": "https://patchwork.libcamera.org/patch/12164/mbox/",
    "series": [
        {
            "id": 1993,
            "url": "https://patchwork.libcamera.org/api/series/1993/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1993",
            "date": "2021-05-03T09:26:58",
            "name": "ipu3: imgu: Improve ImgU calculation procedure",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/1993/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/12164/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/12164/checks/",
    "tags": {},
    "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 92A25BDE78\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  3 May 2021 09:26:30 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DE86B6892B;\n\tMon,  3 May 2021 11:26:26 +0200 (CEST)",
            "from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net\n\t[217.70.183.196])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AB0EF602C0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 May 2021 11:26:25 +0200 (CEST)",
            "from uno.lan (93-34-118-233.ip49.fastwebnet.it [93.34.118.233])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 77ECCE0009\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 May 2021 09:26:25 +0000 (UTC)"
        ],
        "X-Originating-IP": "93.34.118.233",
        "From": "Jacopo Mondi <jacopo@jmondi.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Mon,  3 May 2021 11:27:01 +0200",
        "Message-Id": "<20210503092705.15562-4-jacopo@jmondi.org>",
        "X-Mailer": "git-send-email 2.31.1",
        "In-Reply-To": "<20210503092705.15562-1-jacopo@jmondi.org>",
        "References": "<20210503092705.15562-1-jacopo@jmondi.org>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v2 3/7] libcamera: ipu3: imgu: Fix BDS\n\theight calculation",
        "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>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The IF rectangle height is iteratively computed by first subtracting\nthe scaling factor to the estimated height, then in a successive loop\nby adding the same scaling factor until the maximum IF size is not\nreached.\n\nAs the computed IF height is not cached in any variable, the second\nloop over-writes the result of the first one, even if the BDS alignment\ncondition is not satisfied.\n\nFix this by caching the result of the two iterations, and use the one\nthat produced any result, with a preference for the one produced by the\nsecond loop, as implemented in the reference python script.\n\nTested-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\nReviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/libcamera/pipeline/ipu3/imgu.cpp | 13 +++++++++----\n 1 file changed, 9 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp\nindex 36fee31c1962..ea654e57b0e7 100644\n--- a/src/libcamera/pipeline/ipu3/imgu.cpp\n+++ b/src/libcamera/pipeline/ipu3/imgu.cpp\n@@ -129,10 +129,10 @@ void calculateBDSHeight(ImgUDevice::Pipe *pipe, const Size &iif, const Size &gdc\n \tfloat bdsHeight;\n \n \tif (!isSameRatio(pipe->input, gdc)) {\n+\t\tunsigned int foundIfHeights[2] = { 0, 0 };\n \t\tfloat estIFHeight = (iif.width * gdc.height) /\n \t\t\t\t    static_cast<float>(gdc.width);\n \t\testIFHeight = std::clamp<float>(estIFHeight, minIFHeight, iif.height);\n-\t\tbool found = false;\n \n \t\tifHeight = utils::alignUp(estIFHeight, IF_ALIGN_H);\n \t\twhile (ifHeight >= minIFHeight && ifHeight / bdsSF >= minBDSHeight) {\n@@ -142,7 +142,7 @@ void calculateBDSHeight(ImgUDevice::Pipe *pipe, const Size &iif, const Size &gdc\n \t\t\t\tunsigned int bdsIntHeight = static_cast<unsigned int>(bdsHeight);\n \n \t\t\t\tif (!(bdsIntHeight % BDS_ALIGN_H)) {\n-\t\t\t\t\tfound = true;\n+\t\t\t\t\tfoundIfHeights[0] = ifHeight;\n \t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t}\n@@ -158,7 +158,7 @@ void calculateBDSHeight(ImgUDevice::Pipe *pipe, const Size &iif, const Size &gdc\n \t\t\t\tunsigned int bdsIntHeight = static_cast<unsigned int>(bdsHeight);\n \n \t\t\t\tif (!(bdsIntHeight % BDS_ALIGN_H)) {\n-\t\t\t\t\tfound = true;\n+\t\t\t\t\tfoundIfHeights[1] = ifHeight;\n \t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t}\n@@ -166,7 +166,12 @@ void calculateBDSHeight(ImgUDevice::Pipe *pipe, const Size &iif, const Size &gdc\n \t\t\tifHeight += IF_ALIGN_H;\n \t\t}\n \n-\t\tif (found) {\n+\t\tif (foundIfHeights[0])\n+\t\t\tifHeight = foundIfHeights[0];\n+\t\tif (foundIfHeights[1])\n+\t\t\tifHeight = foundIfHeights[1];\n+\n+\t\tif (foundIfHeights[0] || foundIfHeights[1]) {\n \t\t\tunsigned int bdsIntHeight = static_cast<unsigned int>(bdsHeight);\n \n \t\t\tpipeConfigs.push_back({ bdsSF, { iif.width, ifHeight },\n",
    "prefixes": [
        "libcamera-devel",
        "v2",
        "3/7"
    ]
}