Show a patch.

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

{
    "id": 26826,
    "url": "https://patchwork.libcamera.org/api/patches/26826/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/26826/",
    "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": "<20260604095105.68798-6-mzamazal@redhat.com>",
    "date": "2026-06-04T09:50:47",
    "name": "[RFC,v3,04/17] libcamera: software_isp: Handle queueBuffers failure",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "3ead795cb68a746243b7d1130d6ab4f2b54c3854",
    "submitter": {
        "id": 177,
        "url": "https://patchwork.libcamera.org/api/people/177/?format=api",
        "name": "Milan Zamazal",
        "email": "mzamazal@redhat.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/26826/mbox/",
    "series": [
        {
            "id": 5976,
            "url": "https://patchwork.libcamera.org/api/series/5976/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5976",
            "date": "2026-06-04T09:50:42",
            "name": "Software ISP: Share params and stats buffers",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/5976/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/26826/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/26826/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 0DE12C328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 Jun 2026 09:51:32 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B644063405;\n\tThu,  4 Jun 2026 11:51:31 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AE70C63320\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 Jun 2026 11:51:30 +0200 (CEST)",
            "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-670-Ot8PRYpxOgS4cG1D1qoCZQ-1;\n\tThu, 04 Jun 2026 05:51:26 -0400",
            "from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id 20C6618002C1; Thu,  4 Jun 2026 09:51:25 +0000 (UTC)",
            "from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.34.156])\n\tby mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id 2887A30001A1; Thu,  4 Jun 2026 09:51:22 +0000 (UTC)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"eaiLraev\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1780566689;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=Pdj1d1iFnuLGusyDEGVbK/OY2aqBoDaArNpkJMmf3as=;\n\tb=eaiLraevCVRf719BQxfOa5nlPjFR+ryxlzbDeQdo3uoZqZNYo6HTXjyz5My+6Xqyk+WN8J\n\tzAykbOfnA49XA9MV/EVf53jPlyz9SHa+aRgsjz2n/AoInu2jw8eWqaXVyAnqgox8rMtiT7\n\t0gjSw3JTMxZxvqP++Ga3HVYD56S2GQo=",
        "X-MC-Unique": "Ot8PRYpxOgS4cG1D1qoCZQ-1",
        "X-Mimecast-MFC-AGG-ID": "Ot8PRYpxOgS4cG1D1qoCZQ_1780566685",
        "From": "Milan Zamazal <mzamazal@redhat.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Milan Zamazal <mzamazal@redhat.com>, =?utf-8?b?QmFybmFiw6FzIFDFkWN6?=\n\t=?utf-8?q?e?= <barnabas.pocze@ideasonboard.com>,\n\tjohannes.goede@oss.qualcomm.com",
        "Subject": "[RFC PATCH v3 04/17] libcamera: software_isp: Handle queueBuffers\n\tfailure",
        "Date": "Thu,  4 Jun 2026 11:50:47 +0200",
        "Message-ID": "<20260604095105.68798-6-mzamazal@redhat.com>",
        "In-Reply-To": "<20260604095105.68798-1-mzamazal@redhat.com>",
        "References": "<20260604095105.68798-1-mzamazal@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.4",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "ppc4LHw1lizz-X3BnQKkpbXpy9FOHsJC3FDUKAbio8I_1780566685",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "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": "Currently, if a call to queueBuffers fails, the error is ignored.  Which\nmeans buffers are not returned back, as would be the case at the end of\nnormal processing.  Let's cancel the request, which also returns the\noutput buffers.  The input buffer is returned as well in case of raw\nstreams and must be returned manually in case of non-raw streams.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\n---\n src/libcamera/pipeline/simple/simple.cpp | 28 +++++++++++++++++++-----\n 1 file changed, 23 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex c6fe12d65..93899699e 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -955,16 +955,34 @@ void SimpleCameraData::imageBufferReady(FrameBuffer *buffer)\n \t\t\treturn;\n \t\t}\n \n-\t\tif (converter_)\n-\t\t\tconverter_->queueBuffers(buffer, conversionQueue_.front().outputs);\n-\t\telse\n+\t\tint ret;\n+\t\tif (converter_) {\n+\t\t\tret = converter_->queueBuffers(buffer, conversionQueue_.front().outputs);\n+\t\t} else {\n \t\t\t/*\n \t\t\t * request->sequence() cannot be retrieved from `buffer' inside\n \t\t\t * queueBuffers because unique_ptr's make buffer->request() invalid\n \t\t\t * already here.\n \t\t\t */\n-\t\t\tswIsp_->queueBuffers(request->sequence(), buffer,\n-\t\t\t\t\t     conversionQueue_.front().outputs);\n+\t\t\tret = swIsp_->queueBuffers(request->sequence(), buffer,\n+\t\t\t\t\t\t   conversionQueue_.front().outputs);\n+\t\t}\n+\n+\t\tif (ret < 0) {\n+\t\t\tLOG(SimplePipeline, Error)\n+\t\t\t\t<< \"Failed to queue buffers for conversion: \"\n+\t\t\t\t<< strerror(-ret);\n+\t\t\t/*\n+\t\t\t * The buffers were rejected before starting any processing, so the\n+\t\t\t * output buffers will not be returned via the normal done\n+\t\t\t * signals. Cancel the request; this handles the output buffers and\n+\t\t\t * also the input buffer if it's a raw stream buffer. For non-raw\n+\t\t\t * streams, return the input buffer to the video device manually.\n+\t\t\t */\n+\t\t\tpipe->cancelRequest(request);\n+\t\t\tif (!rawStream_)\n+\t\t\t\tvideo_->queueBuffer(buffer);\n+\t\t}\n \n \t\tconversionQueue_.pop();\n \t\treturn;\n",
    "prefixes": [
        "RFC",
        "v3",
        "04/17"
    ]
}