Show a patch.

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

{
    "id": 18709,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/18709/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/18709/",
    "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": "<20230606103336.17782-2-jacopo.mondi@ideasonboard.com>",
    "date": "2023-06-06T10:33:33",
    "name": "[libcamera-devel,v5,1/4] libcamera: rkisp1: Generate config using main path",
    "commit_ref": "c6124d757cac2661108a806edc9b0a9b72b1abd3",
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "75065dd5ae263edcf16f8929de46af8dbc02d728",
    "submitter": {
        "id": 143,
        "url": "https://patchwork.libcamera.org/api/1.1/people/143/?format=api",
        "name": "Jacopo Mondi",
        "email": "jacopo.mondi@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/18709/mbox/",
    "series": [
        {
            "id": 3909,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3909/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3909",
            "date": "2023-06-06T10:33:32",
            "name": "libcamera: rkisp1: Fix generateConfiguration",
            "version": 5,
            "mbox": "https://patchwork.libcamera.org/series/3909/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/18709/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/18709/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 1A0FCC3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  6 Jun 2023 10:33:56 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0E1286289E;\n\tTue,  6 Jun 2023 12:33:54 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5F3BD62722\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  6 Jun 2023 12:33:52 +0200 (CEST)",
            "from uno.LocalDomain (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D74B76B5;\n\tTue,  6 Jun 2023 12:33:26 +0200 (CEST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1686047634;\n\tbh=29CLqUIJtUNbeJst7Mv1Xb+oxR7fwUW9vEEbTbKj7fI=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=jDS0oRcQGxkCafHBJDB30iExXQfxFmYQk86YVjKzKygptdyPpwz9DEwUSeHGb+VW1\n\t21sUEtxkvTJAPM4FFu4oqhHYLjSDp2hZfiEMVhswremSSLlVcwaE966wE+M5oUmzNS\n\tN0S7mQyYgHqSYzhySgj0iISbjz93dzCwoBunhBtod9kilNTtLqA4s+e3tDoApTv3VS\n\tMJpDPOrhifIJLLs3sVXLF9tpL2pKC+E2qqIKnZU7SzHbCqACmGdwPI8c7PNMScFsRO\n\tgpel5BMih+/z4CBSAbB3Eum5OHDHNEy/S82zgi3CYqe4pUwpAeCUE05bhaWwCQKnfg\n\tzbEZs8wZJCqNA==",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1686047607;\n\tbh=29CLqUIJtUNbeJst7Mv1Xb+oxR7fwUW9vEEbTbKj7fI=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=PT3hoogWDpE+y/I89kIRm2n8FT1H0bJBJxMjiF23+OVUuZya7GBY7MjdlIB86JJv9\n\tUd+ALtwEfoFd+FEoeGFprTHsrJXVJe+q6FMneNCcQp+xSVFgYfSmdfHtkY+3g9tJ7j\n\tjFg5OzgStlf2XwwbGPJGrhXjLRoSe3iwgRWMBPSI="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"PT3hoogW\"; dkim-atps=neutral",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Tue,  6 Jun 2023 12:33:33 +0200",
        "Message-Id": "<20230606103336.17782-2-jacopo.mondi@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.40.1",
        "In-Reply-To": "<20230606103336.17782-1-jacopo.mondi@ideasonboard.com>",
        "References": "<20230606103336.17782-1-jacopo.mondi@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v5 1/4] libcamera: rkisp1: Generate config\n\tusing main path",
        "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>",
        "From": "Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>",
        "Cc": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>, libcamera@luigi311.com",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The generateConfiguration() implementation in the Rockchip RkISP1\npipeline handler uses by default the self path (if available) for\nthe Viewfinder and VideoRecording StreamRoles.\n\nThe validate() implementation, at the contrary, prefers using the main\npath, when available, for all streams.\n\nAs the self-path is limited in output resolution to 1920x1920,\ngenerating a configuration using the self path limits the maximum\nstream size to 1920x1920, while higher resolutions can be obtained by\nusing the main path.\n\nAlign the generateConfiguration() implementation to the validate() one\nby using the main path by default if available.\n\nBug: https://bugs.libcamera.org/show_bug.cgi?id=180\nReported-by: libcamera@luigi311.com\nSigned-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 20 ++++++++++----------\n 1 file changed, 10 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 8a30fe061d04..78c4a6dd60a4 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -630,23 +630,18 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n \t * first stream and use it for all streams.\n \t */\n \tstd::optional<ColorSpace> colorSpace;\n-\n \tbool mainPathAvailable = true;\n-\tbool selfPathAvailable = data->selfPath_;\n \n \tfor (const StreamRole role : roles) {\n-\t\tbool useMainPath;\n \n \t\tswitch (role) {\n \t\tcase StreamRole::StillCapture:\n-\t\t\tuseMainPath = mainPathAvailable;\n \t\t\t/* JPEG encoders typically expect sYCC. */\n \t\t\tif (!colorSpace)\n \t\t\t\tcolorSpace = ColorSpace::Sycc;\n \t\t\tbreak;\n \n \t\tcase StreamRole::Viewfinder:\n-\t\t\tuseMainPath = !selfPathAvailable;\n \t\t\t/*\n \t\t\t * sYCC is the YCbCr encoding of sRGB, which is commonly\n \t\t\t * used by displays.\n@@ -656,7 +651,6 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n \t\t\tbreak;\n \n \t\tcase StreamRole::VideoRecording:\n-\t\t\tuseMainPath = !selfPathAvailable;\n \t\t\t/* Rec. 709 is a good default for HD video recording. */\n \t\t\tif (!colorSpace)\n \t\t\t\tcolorSpace = ColorSpace::Rec709;\n@@ -669,7 +663,6 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n \t\t\t\treturn nullptr;\n \t\t\t}\n \n-\t\t\tuseMainPath = true;\n \t\t\tcolorSpace = ColorSpace::Raw;\n \t\t\tbreak;\n \n@@ -679,14 +672,21 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n \t\t\treturn nullptr;\n \t\t}\n \n+\t\t/*\n+\t\t * Prefer the main path if available, as it supports higher\n+\t\t * resolutions.\n+\t\t *\n+\t\t * \\todo Using the main path unconditionally hides support for\n+\t\t * RGB (only available on the self path) in the streams formats\n+\t\t * exposed to applications. This likely calls for a better API\n+\t\t * to expose streams capabilities.\n+\t\t */\n \t\tRkISP1Path *path;\n-\n-\t\tif (useMainPath) {\n+\t\tif (mainPathAvailable) {\n \t\t\tpath = data->mainPath_;\n \t\t\tmainPathAvailable = false;\n \t\t} else {\n \t\t\tpath = data->selfPath_;\n-\t\t\tselfPathAvailable = false;\n \t\t}\n \n \t\tStreamConfiguration cfg =\n",
    "prefixes": [
        "libcamera-devel",
        "v5",
        "1/4"
    ]
}