Show a patch.

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

{
    "id": 26830,
    "url": "https://patchwork.libcamera.org/api/patches/26830/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/26830/",
    "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-10-mzamazal@redhat.com>",
    "date": "2026-06-04T09:50:51",
    "name": "[RFC,v3,06/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/26830/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/26830/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/26830/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 8CF0CC328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 Jun 2026 09:51:41 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4B0D66347A;\n\tThu,  4 Jun 2026 11:51:41 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 90BF063403\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 Jun 2026 11:51:38 +0200 (CEST)",
            "from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-77-QsGTM7gyNmaZHlmaQWMBDw-1;\n\tThu, 04 Jun 2026 05:51:36 -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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id 44035195608B; Thu,  4 Jun 2026 09:51:35 +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 49E5D30001A1; Thu,  4 Jun 2026 09:51:32 +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=\"iwauqoSQ\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1780566697;\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=iwauqoSQBFXYwPATwcAs78+rcc5bZnLJcHywSBmmo8t6iaKgdLO9HA6v4nC3/jcWiIuaq0\n\tLFGAXWUSuJjDB7n3Y0yJ9StphiPir80+oxF4GJZiBea5WvF3mdL02O0PuwBy4tanORWvv6\n\tOxNU2+FIcdRXUe2CuqS/M/QXBtSGsM0=",
        "X-MC-Unique": "QsGTM7gyNmaZHlmaQWMBDw-1",
        "X-Mimecast-MFC-AGG-ID": "QsGTM7gyNmaZHlmaQWMBDw_1780566695",
        "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 06/17] libcamera: software_isp: Handle queueBuffers\n\tfailure",
        "Date": "Thu,  4 Jun 2026 11:50:51 +0200",
        "Message-ID": "<20260604095105.68798-10-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": "5eKS6iPOvZs0AzcdvDduIlLpIlBZxrKNuFyynFvqh3M_1780566695",
        "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",
        "06/17"
    ]
}