Patch Detail
Show a patch.
GET /api/patches/26849/?format=api
{ "id": 26849, "url": "https://patchwork.libcamera.org/api/patches/26849/?format=api", "web_url": "https://patchwork.libcamera.org/patch/26849/", "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": "<20260608150349.134371-5-mzamazal@redhat.com>", "date": "2026-06-08T15:03:33", "name": "[RFC,v4,04/17] libcamera: software_isp: Handle queueBuffers failure", "commit_ref": null, "pull_url": null, "state": "new", "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/26849/mbox/", "series": [ { "id": 5982, "url": "https://patchwork.libcamera.org/api/series/5982/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5982", "date": "2026-06-08T15:03:29", "name": "Software ISP: Share params and stats buffers", "version": 4, "mbox": "https://patchwork.libcamera.org/series/5982/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/26849/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/26849/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 9C44FC328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 8 Jun 2026 15:04:19 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1CAFA61EF3;\n\tMon, 8 Jun 2026 17:04:19 +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 4FCE861EF6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 8 Jun 2026 17:04:14 +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-286-1jf0U38kM5WMeqrQby5g2A-1;\n\tMon, 08 Jun 2026 11:04:08 -0400", "from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com\n\t[10.30.177.111])\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 B33591955F03; Mon, 8 Jun 2026 15:04:06 +0000 (UTC)", "from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.48.51])\n\tby mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id D384C18005B5; Mon, 8 Jun 2026 15:04:04 +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=\"HbS6sdxd\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1780931053;\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=HbS6sdxdvTQ5A+aSUskGMgsAewLPJ9B5KmHvW6Aq7TI/l4SXnAWYX21cz0V6YFPBHKRrUh\n\tz/lZ48DM11QqnaiV6lWJjFitZnPuZ8F9T5LP9rLhR/WpLWKQrEl38L7962+nG2vxlzdsCu\n\t579q9X2hvkUGugUAFlmgumbPXs/X0Xw=", "X-MC-Unique": "1jf0U38kM5WMeqrQby5g2A-1", "X-Mimecast-MFC-AGG-ID": "1jf0U38kM5WMeqrQby5g2A_1780931046", "From": "Milan Zamazal <mzamazal@redhat.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Milan Zamazal <mzamazal@redhat.com>, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?=\n\t<barnabas.pocze@ideasonboard.com>, johannes.goede@oss.qualcomm.com", "Subject": "[RFC PATCH v4 04/17] libcamera: software_isp: Handle queueBuffers\n\tfailure", "Date": "Mon, 8 Jun 2026 17:03:33 +0200", "Message-ID": "<20260608150349.134371-5-mzamazal@redhat.com>", "In-Reply-To": "<20260608150349.134371-1-mzamazal@redhat.com>", "References": "<20260608150349.134371-1-mzamazal@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.111", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "StRpZu8WNKayBTfgJTmhr2V8N1786L2W0__T5JVbLa4_1780931046", "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", "v4", "04/17" ] }