Show a patch.

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

{
    "id": 24940,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/24940/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/24940/",
    "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": "<20251101193558.38279-7-mzamazal@redhat.com>",
    "date": "2025-11-01T19:35:55",
    "name": "[v14,6/8] libcamera: simple: Set the number of software ISP streams to 2",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "b7907ae7358bfdc3bf792f4e90494e32af269115",
    "submitter": {
        "id": 177,
        "url": "https://patchwork.libcamera.org/api/1.1/people/177/?format=api",
        "name": "Milan Zamazal",
        "email": "mzamazal@redhat.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/24940/mbox/",
    "series": [
        {
            "id": 5550,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5550/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5550",
            "date": "2025-11-01T19:35:49",
            "name": "Enable raw streams with software ISP",
            "version": 14,
            "mbox": "https://patchwork.libcamera.org/series/5550/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/24940/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/24940/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 D1923BDE4C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat,  1 Nov 2025 19:36:48 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8D5C660A9E;\n\tSat,  1 Nov 2025 20:36:48 +0100 (CET)",
            "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 B160D60A81\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat,  1 Nov 2025 20:36:46 +0100 (CET)",
            "from mx-prod-mc-03.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-263-ZAWvBuiANcuf4P6wico26Q-1;\n\tSat, 01 Nov 2025 15:36:27 -0400",
            "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n\t[10.30.177.17])\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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id C3AE519560B5; Sat,  1 Nov 2025 19:36:25 +0000 (UTC)",
            "from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.32.26])\n\tby mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id 1C7861955BE3; Sat,  1 Nov 2025 19:36: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=\"EkKExqlL\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1762025805;\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=N/DS8xW3eRVRJUxEbRYuZYNqDjL0TZaUL7LMJbpJf2k=;\n\tb=EkKExqlLRRPY8/lHkSddN7+cWTrQxKRfPo5S7Kva50bPJrqfK9NWjGgnRTAGlX+1CIVMdW\n\tD25eVlSrXUVcjnj46Op80qzQZdURILApvj4IbwQ/Tr2GaaV5WB7Gkiv7kOe/hh+FhsnLVU\n\tJ/zDMJuZJaOd9Gc+opFZjrR5lWkYY78=",
        "X-MC-Unique": "ZAWvBuiANcuf4P6wico26Q-1",
        "X-Mimecast-MFC-AGG-ID": "ZAWvBuiANcuf4P6wico26Q_1762025785",
        "From": "Milan Zamazal <mzamazal@redhat.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Milan Zamazal <mzamazal@redhat.com>, Laurent Pinchart\n\t<laurent.pinchart@ideasonboard.com>, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?=\n\t<barnabas.pocze@ideasonboard.com>, Paul Elder\n\t<paul.elder@ideasonboard.com>, Umang Jain <uajain@igalia.com>",
        "Subject": "[PATCH v14 6/8] libcamera: simple: Set the number of software ISP\n\tstreams to 2",
        "Date": "Sat,  1 Nov 2025 20:35:55 +0100",
        "Message-ID": "<20251101193558.38279-7-mzamazal@redhat.com>",
        "In-Reply-To": "<20251101193558.38279-1-mzamazal@redhat.com>",
        "References": "<20251101193558.38279-1-mzamazal@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "OPcaMY9J5GvQETn-Wktp-AMWJaGRSQwW3jtztA03Tcs_1762025785",
        "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": "When software ISP is enabled, we want to be able to provide a raw stream\nin addition to the processed stream.  For this purpose, we need two\nstreams.  If only the processed stream is requested, it doesn't harm to\nallocate two.\n\nThe number of streams is determined as a camera property in the pipeline\nmatching.  To be able to produce both raw and processed output, two\nstreams must be provided.  The actual number of streams needed (one or\ntwo) is determined only in SimplePipelineHandler::validate().\n\nIn theory, software ISP could produce multiple processed streams but\nthis is out of scope of this patch series.  Hence two streams are\nsufficient at the moment.\n\nWhen software ISP is not enabled, the camera won't be able to produce\nmultiple streams (assuming there's no hardware converter) and only\nsingle stream should be allocated as before.  The simple pipeline\nhandler assumes there's a linear pipeline from the camera sensor to a\nvideo capture device, and only supports a single stream.  Branches in\nthe hardware pipeline that would allow capturing multiple streams from\nthe same camera sensor are not supported.  We have no plan to change\nthat, as a device that can produce multiple streams will likely be\nbetter supported by a dedicated pipeline handler.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\nReviewed-by: Umang Jain <uajain@igalia.com>\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\n---\n src/libcamera/pipeline/simple/simple.cpp | 10 ++++++++++\n 1 file changed, 10 insertions(+)",
    "diff": "diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex eeb97ecdf..f2931d502 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -1809,6 +1809,16 @@ bool SimplePipelineHandler::matchDevice(MediaDevice *media,\n \t\t}\n \t}\n \n+\tif (info.swIspEnabled) {\n+\t\t/*\n+\t\t * When the software ISP is enabled, the simple pipeline handler\n+\t\t * exposes the raw stream, giving a total of two streams. This\n+\t\t * is mutually exclusive with the presence of a converter.\n+\t\t */\n+\t\tASSERT(!converter_);\n+\t\tnumStreams = 2;\n+\t}\n+\n \tswIspEnabled_ = info.swIspEnabled;\n \tconst GlobalConfiguration &configuration = cameraManager()->_d()->configuration();\n \tfor (GlobalConfiguration::Configuration entry :\n",
    "prefixes": [
        "v14",
        "6/8"
    ]
}