Show a patch.

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

{
    "id": 23332,
    "url": "https://patchwork.libcamera.org/api/patches/23332/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/23332/",
    "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": "<20250501141609.717148-4-kieran.bingham@ideasonboard.com>",
    "date": "2025-05-01T14:16:09",
    "name": "[3/3] apps: cam: Support full orientation options",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "30b9823a6578dc309321a4ac5ae81aff71ad1438",
    "submitter": {
        "id": 4,
        "url": "https://patchwork.libcamera.org/api/people/4/?format=api",
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/23332/mbox/",
    "series": [
        {
            "id": 5159,
            "url": "https://patchwork.libcamera.org/api/series/5159/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5159",
            "date": "2025-05-01T14:16:06",
            "name": "libcamera: rkisp1: Camera Sensor Mode Validation",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5159/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/23332/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/23332/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 864E3C327D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  1 May 2025 14:16:19 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CCA5A68B29;\n\tThu,  1 May 2025 16:16:16 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 064C2617D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  1 May 2025 16:16:14 +0200 (CEST)",
            "from Monstersaurus.lgs-net.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E757D886;\n\tThu,  1 May 2025 16:16:06 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"IDkZkDoH\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1746108967;\n\tbh=claqm905y/FT/D6Lf9qaKl2LB1Wjqb7c6PX2UpdCMC8=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=IDkZkDoHryVIaybtqAFnOkbZBpPFXgq7rGdFIafiVw2/6+mhMISIdXIOemeU0Lno/\n\tAtowqTWRhtmUEmOgBjmcavtxfGHvuHHXRACTacdVz3MnxFPLrPsKhbWmLCi9AIK6dh\n\t1oK1ZkswsOfAVbD84lZPQsMKU9/GhQcRfRws8gAc=",
        "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "To": "libcamera devel <libcamera-devel@lists.libcamera.org>",
        "Cc": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "Subject": "[PATCH 3/3] apps: cam: Support full orientation options",
        "Date": "Thu,  1 May 2025 15:16:09 +0100",
        "Message-ID": "<20250501141609.717148-4-kieran.bingham@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.48.1",
        "In-Reply-To": "<20250501141609.717148-1-kieran.bingham@ideasonboard.com>",
        "References": "<20250501141609.717148-1-kieran.bingham@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "The Orientation control was implemented in commit 7e5f1e1cedf5 \"apps:\ncam: Add option to set stream orientation\" but did not fully add all of\nthe supported Orientation types.\n\nThe upcoming dewarp support on RkISP1 will provide full rotation\nimplementation options, including previously difficult '90' degree\nrotations.\n\nExtend the cam application to support setting any of the valid options.\n\nThe existing 'mirror' and 'flip' options are not consistent with the\nrest of the option definitions, but maintain them as useful aliases to\ntheir corresponding type.\n\nFixes: 7e5f1e1cedf5 (\"apps: cam: Add option to set stream orientation\")\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n---\nIt might be debatable if this really is a 'Fixes' as the existing commit\nwasn't broken - just not fully implemented - however the full set of\nOrientation types were there at the time the patch was merged.\n\n src/apps/cam/camera_session.cpp | 9 +++++++++\n src/apps/cam/main.cpp           | 5 ++++-\n 2 files changed, 13 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp\nindex f63fcb228519..43188133d9cb 100644\n--- a/src/apps/cam/camera_session.cpp\n+++ b/src/apps/cam/camera_session.cpp\n@@ -97,7 +97,16 @@ CameraSession::CameraSession(CameraManager *cm,\n \t\tstd::string orientOpt = options_[OptOrientation].toString();\n \t\tstatic const std::map<std::string, libcamera::Orientation> orientations{\n \t\t\t{ \"rot0\", libcamera::Orientation::Rotate0 },\n+\t\t\t{ \"rot90\", libcamera::Orientation::Rotate90 },\n \t\t\t{ \"rot180\", libcamera::Orientation::Rotate180 },\n+\t\t\t{ \"rot270\", libcamera::Orientation::Rotate270 },\n+\n+\t\t\t{ \"rot0mirror\", libcamera::Orientation::Rotate0Mirror },\n+\t\t\t{ \"rot90mirror\", libcamera::Orientation::Rotate90Mirror },\n+\t\t\t{ \"rot180mirror\", libcamera::Orientation::Rotate180Mirror },\n+\t\t\t{ \"rot270mirror\", libcamera::Orientation::Rotate270Mirror },\n+\n+\t\t\t/* Helpful aliases */\n \t\t\t{ \"mirror\", libcamera::Orientation::Rotate0Mirror },\n \t\t\t{ \"flip\", libcamera::Orientation::Rotate180Mirror },\n \t\t};\ndiff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp\nindex fa266eca6d30..f1495a2db465 100644\n--- a/src/apps/cam/main.cpp\n+++ b/src/apps/cam/main.cpp\n@@ -136,7 +136,10 @@ int CamApp::parseOptions(int argc, char *argv[])\n \t\t\t OptCamera);\n \n \tparser.addOption(OptOrientation, OptionString,\n-\t\t\t \"Desired image orientation (rot0, rot180, mirror, flip)\",\n+\t\t\t \"Desired image orientation. Supported values:\\n\"\n+\t\t\t \"- rot0, rot90, rot180, rot270,\\n\"\n+\t\t\t \"- rot0mirror, rot90mirror, rot180mirror, rot270mirror,\\n\"\n+\t\t\t \"- mirror (alias for rot0mirror), flip (alias for rot180mirror)\",\n \t\t\t \"orientation\", ArgumentRequired, \"orientation\", false,\n \t\t\t OptCamera);\n #ifdef HAVE_KMS\n",
    "prefixes": [
        "3/3"
    ]
}