Show a patch.

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

{
    "id": 26370,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/26370/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/26370/",
    "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": "<20260325151416.2114564-29-stefan.klug@ideasonboard.com>",
    "date": "2026-03-25T15:14:00",
    "name": "[v2,28/32] pipeline: rkisp1: Fix buffer metadata when using the dewarper",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "766ecbaeb0161f65de45f52ede326d7c45026e9e",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/1.1/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/26370/mbox/",
    "series": [
        {
            "id": 5849,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5849/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5849",
            "date": "2026-03-25T15:13:32",
            "name": "rkisp1: pipeline rework for PFC",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/5849/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/26370/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/26370/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 90265C3308\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Mar 2026 15:16:01 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2D7FC62CDB;\n\tWed, 25 Mar 2026 16:16:01 +0100 (CET)",
            "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 CE69562CC8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Mar 2026 16:15:59 +0100 (CET)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:b16a:5ed9:4ada:a95a])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id D30C81BCF; \n\tWed, 25 Mar 2026 16:14:41 +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=\"OP+ahLJX\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774451682;\n\tbh=+hCmkz/cH1E3R82fgcxsAE8s8Do8XB2aeHYxJIngR2E=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=OP+ahLJXfI++Ji/ElYzazLhCI/Fzz82p/6dCSkpt+K5XLCskqDONmTx2z6+ytHRhh\n\tmvBRBxAg3Svw4KIIPws0z4ONYyKxCt9Bx2hXtogO/YMCfzVebwFFYist6lSaLWJkxl\n\t24k+KKH894oLCk5q/1Yw4VvwKtsK1LefCwR2BTvo=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Subject": "[PATCH v2 28/32] pipeline: rkisp1: Fix buffer metadata when using\n\tthe dewarper",
        "Date": "Wed, 25 Mar 2026 16:14:00 +0100",
        "Message-ID": "<20260325151416.2114564-29-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.51.0",
        "In-Reply-To": "<20260325151416.2114564-1-stefan.klug@ideasonboard.com>",
        "References": "<20260325151416.2114564-1-stefan.klug@ideasonboard.com>",
        "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": "When the dewarper is part of the pipeline, the output buffers shall\nstill carry status (in case of FrameError), timestamp and sequence from\nthe corresponding image buffer. Timestamp is automatically copied over\nby the m2m device. Manually transfer status and sequence.\n\nThis change also fixes an issue where frames with error status were\nmarked as successful after running through the dewarper.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\n---\n\nChanges in v2:\n- Added this patch\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 22 +++++++++++++++++-----\n 1 file changed, 17 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex c2af5ef8897f..b6592e87dcc4 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -163,6 +163,10 @@ struct ParamBufferInfo {\n \n struct DewarpBufferInfo {\n \tFrameBuffer *inputBuffer;\n+\tstruct {\n+\t\tFrameMetadata::Status status;\n+\t\tunsigned int sequence;\n+\t} inputMeta;\n \tFrameBuffer *outputBuffer;\n };\n \n@@ -1868,7 +1872,11 @@ void PipelineHandlerRkISP1::imageBufferReady(FrameBuffer *buffer)\n \t * for the dewarper are the buffers of the request, supplied by the\n \t * application.\n \t */\n-\tDewarpBufferInfo dewarpInfo{ buffer, reqInfo->request->findBuffer(&data->mainPathStream_) };\n+\tDewarpBufferInfo dewarpInfo{\n+\t\tbuffer,\n+\t\t{ metadata.status, metadata.sequence },\n+\t\treqInfo->request->findBuffer(&data->mainPathStream_)\n+\t};\n \tqueuedDewarpBuffers_.push_back(dewarpInfo);\n \tLOG(RkISP1Schedule, Debug) << \"Queue dewarper \" << dewarpInfo.inputBuffer\n \t\t\t\t   << \" \" << dewarpInfo.outputBuffer;\n@@ -1888,7 +1896,6 @@ void PipelineHandlerRkISP1::imageBufferReady(FrameBuffer *buffer)\n void PipelineHandlerRkISP1::dewarpBufferReady(FrameBuffer *buffer)\n {\n \tRequest *request = buffer->request();\n-\tconst FrameMetadata &metadata = buffer->metadata();\n \n \t/*\n \t * After stopping the dewarper, the buffers are returned out of order.\n@@ -1899,13 +1906,18 @@ void PipelineHandlerRkISP1::dewarpBufferReady(FrameBuffer *buffer)\n \t\tif (dwInfo.outputBuffer != buffer)\n \t\t\tcontinue;\n \n+\t\tFrameMetadata &outputMeta = buffer->_d()->metadata();\n+\n+\t\tif (outputMeta.status != FrameMetadata::FrameCancelled &&\n+\t\t    dwInfo.inputMeta.status == FrameMetadata::FrameError)\n+\t\t\toutputMeta.status = FrameMetadata::FrameError;\n+\n+\t\toutputMeta.sequence = dwInfo.inputMeta.sequence;\n+\n \t\tavailableMainPathBuffers_.push(dwInfo.inputBuffer);\n \t\tdwInfo.inputBuffer = nullptr;\n \t\tdwInfo.outputBuffer = nullptr;\n \n-\t\tif (metadata.status == FrameMetadata::FrameCancelled)\n-\t\t\tbuffer->_d()->cancel();\n-\n \t\tcompleteBuffer(request, buffer);\n \t}\n \n",
    "prefixes": [
        "v2",
        "28/32"
    ]
}