Show a patch.

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

{
    "id": 1307,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/1307/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/1307/",
    "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": "<20190527001543.13593-17-niklas.soderlund@ragnatech.se>",
    "date": "2019-05-27T00:15:42",
    "name": "[libcamera-devel,16/17] cam: Add --info option to print information about stream(s)",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "c75d9951cf4209a3ccdc23c39e3f6cad6ad5f071",
    "submitter": {
        "id": 5,
        "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api",
        "name": "Niklas Söderlund",
        "email": "niklas.soderlund@ragnatech.se"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/1307/mbox/",
    "series": [
        {
            "id": 328,
            "url": "https://patchwork.libcamera.org/api/1.1/series/328/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=328",
            "date": "2019-05-27T00:15:28",
            "name": "libcamera: Add support for format information and validation",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/328/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/1307/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/1307/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<niklas.soderlund@ragnatech.se>",
        "Received": [
            "from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net\n\t[195.74.38.227])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 359CB61903\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 27 May 2019 02:16:14 +0200 (CEST)",
            "from bismarck.berto.se (unknown [89.233.230.99])\n\tby bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA\n\tid a150a5df-8014-11e9-8ab4-005056917a89;\n\tMon, 27 May 2019 02:16:10 +0200 (CEST)"
        ],
        "X-Halon-ID": "a150a5df-8014-11e9-8ab4-005056917a89",
        "Authorized-sender": "niklas@soderlund.pp.se",
        "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Mon, 27 May 2019 02:15:42 +0200",
        "Message-Id": "<20190527001543.13593-17-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20190527001543.13593-1-niklas.soderlund@ragnatech.se>",
        "References": "<20190527001543.13593-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 16/17] cam: Add --info option to print\n\tinformation about stream(s)",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.23",
        "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>",
        "X-List-Received-Date": "Mon, 27 May 2019 00:16:15 -0000"
    },
    "content": "Add a new option to cam tool which prints information about the\nconfiguration supplied by the user. If specified information is printed\nabout the configuration after its been verified and possibly adjusted by\nthe camera and information about each stream in the camera\nconfiguration.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n src/cam/info.cpp    | 44 ++++++++++++++++++++++++++++++++++++++++++++\n src/cam/info.h      | 18 ++++++++++++++++++\n src/cam/main.cpp    |  8 ++++++++\n src/cam/main.h      |  1 +\n src/cam/meson.build |  1 +\n 5 files changed, 72 insertions(+)\n create mode 100644 src/cam/info.cpp\n create mode 100644 src/cam/info.h",
    "diff": "diff --git a/src/cam/info.cpp b/src/cam/info.cpp\nnew file mode 100644\nindex 0000000000000000..35271942600494c7\n--- /dev/null\n+++ b/src/cam/info.cpp\n@@ -0,0 +1,44 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+/*\n+ * Copyright (C) 2019, Google Inc.\n+ *\n+ * info.cpp - Displat stream information\n+ */\n+\n+#include <iomanip>\n+#include <iostream>\n+\n+#include \"info.h\"\n+\n+using namespace libcamera;\n+\n+int Info::run(const CameraConfiguration *config)\n+{\n+\tif (!config) {\n+\t\tstd::cout\n+\t\t\t<< \"Can't display information, no configuration\"\n+\t\t\t<< std::endl;\n+\t\treturn -ENODEV;\n+\t}\n+\n+\tunsigned int index = 0;\n+\tfor (const StreamConfiguration cfg : *config) {\n+\t\tstd::cout << index << \": \" << cfg.toString() << std::endl;\n+\n+\t\tconst StreamFormats &formats = cfg.formats();\n+\t\tfor (unsigned int pixelformat : formats.pixelformats()) {\n+\t\t\tstd::cout << \" * Pixelformat: 0x\" << std::hex\n+\t\t\t\t  << std::setw(8) << pixelformat << \" \"\n+\t\t\t\t  << formats.range(pixelformat).toString()\n+\t\t\t\t  << std::endl;\n+\n+\t\t\tfor (const Size &size : formats.sizes(pixelformat))\n+\t\t\t\tstd::cout << \"  - \" << size.toString()\n+\t\t\t\t\t  << std::endl;\n+\t\t}\n+\n+\t\tindex++;\n+\t}\n+\n+\treturn 0;\n+}\ndiff --git a/src/cam/info.h b/src/cam/info.h\nnew file mode 100644\nindex 0000000000000000..72fd446491f95033\n--- /dev/null\n+++ b/src/cam/info.h\n@@ -0,0 +1,18 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+/*\n+ * Copyright (C) 2019, Google Inc.\n+ *\n+ * info.h - Displat stream information\n+ */\n+#ifndef __CAM_INFO_H__\n+#define __CAM_INFO_H__\n+\n+#include <libcamera/camera.h>\n+\n+class Info\n+{\n+public:\n+\tint run(const libcamera::CameraConfiguration *config);\n+};\n+\n+#endif /* __CAM_INFO_H__ */\ndiff --git a/src/cam/main.cpp b/src/cam/main.cpp\nindex 25538f5ba95552d6..bf7a92b51d27c890 100644\n--- a/src/cam/main.cpp\n+++ b/src/cam/main.cpp\n@@ -13,6 +13,7 @@\n \n #include \"capture.h\"\n #include \"event_loop.h\"\n+#include \"info.h\"\n #include \"main.h\"\n #include \"options.h\"\n \n@@ -162,6 +163,8 @@ int CamApp::parseOptions(int argc, char *argv[])\n \t\t\t \"Set configuration of a camera stream\", \"stream\", true);\n \tparser.addOption(OptHelp, OptionNone, \"Display this help message\",\n \t\t\t \"help\");\n+\tparser.addOption(OptInfo, OptionNone,\n+\t\t\t \"Display information about stream(s)\", \"info\");\n \tparser.addOption(OptList, OptionNone, \"List all cameras\", \"list\");\n \n \toptions_ = parser.parse(argc, argv);\n@@ -259,6 +262,11 @@ int CamApp::run()\n \t\t\tstd::cout << \"- \" << cam->name() << std::endl;\n \t}\n \n+\tif (options_.isSet(OptInfo)) {\n+\t\tInfo info;\n+\t\tinfo.run(config_.get());\n+\t}\n+\n \tif (options_.isSet(OptCapture)) {\n \t\tCapture capture(camera_.get(), config_.get());\n \t\treturn capture.run(loop_, options_);\ndiff --git a/src/cam/main.h b/src/cam/main.h\nindex fff81b1f6c860b57..6324c042f89e7396 100644\n--- a/src/cam/main.h\n+++ b/src/cam/main.h\n@@ -12,6 +12,7 @@ enum {\n \tOptCapture = 'C',\n \tOptFile = 'F',\n \tOptHelp = 'h',\n+\tOptInfo = 'i',\n \tOptList = 'l',\n \tOptStream = 's',\n };\ndiff --git a/src/cam/meson.build b/src/cam/meson.build\nindex 478346c59590631d..ee5b28421e4c1235 100644\n--- a/src/cam/meson.build\n+++ b/src/cam/meson.build\n@@ -2,6 +2,7 @@ cam_sources = files([\n     'buffer_writer.cpp',\n     'capture.cpp',\n     'event_loop.cpp',\n+    'info.cpp',\n     'main.cpp',\n     'options.cpp',\n ])\n",
    "prefixes": [
        "libcamera-devel",
        "16/17"
    ]
}