Show a patch.

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

{
    "id": 1465,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/1465/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/1465/",
    "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": "<20190619025129.21164-16-niklas.soderlund@ragnatech.se>",
    "date": "2019-06-19T02:51:28",
    "name": "[libcamera-devel,v4,15/16] cam: Add --info option to print information about stream(s)",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "0958236cca3a3272566106d338caf8ce542a04f9",
    "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/1465/mbox/",
    "series": [
        {
            "id": 361,
            "url": "https://patchwork.libcamera.org/api/1.1/series/361/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=361",
            "date": "2019-06-19T02:51:13",
            "name": "libcamera: Add support for format information and validation",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/361/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/1465/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/1465/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<niklas.soderlund@ragnatech.se>",
        "Received": [
            "from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net\n\t[195.74.38.229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CB9A161A31\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Jun 2019 04:52:33 +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 41478f34-923d-11e9-8ab4-005056917a89;\n\tWed, 19 Jun 2019 04:52:20 +0200 (CEST)"
        ],
        "X-Halon-ID": "41478f34-923d-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": "Wed, 19 Jun 2019 04:51:28 +0200",
        "Message-Id": "<20190619025129.21164-16-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20190619025129.21164-1-niklas.soderlund@ragnatech.se>",
        "References": "<20190619025129.21164-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v4 15/16] 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": "Wed, 19 Jun 2019 02:52:34 -0000"
    },
    "content": "Add a new option to the cam tool that prints information about the\nconfiguration supplied by the user. If the option is specified,\ninformation about the configuration is printed after the configuration\nhas been verified and possibly adjusted by the camera.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/cam/main.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++\n src/cam/main.h   |  1 +\n 2 files changed, 43 insertions(+)",
    "diff": "diff --git a/src/cam/main.cpp b/src/cam/main.cpp\nindex 4e9abf666fedf211..77bb20e9622ec857 100644\n--- a/src/cam/main.cpp\n+++ b/src/cam/main.cpp\n@@ -5,6 +5,7 @@\n  * main.cpp - cam - The libcamera swiss army knife\n  */\n \n+#include <iomanip>\n #include <iostream>\n #include <signal.h>\n #include <string.h>\n@@ -34,6 +35,7 @@ public:\n private:\n \tint parseOptions(int argc, char *argv[]);\n \tint prepareConfig();\n+\tint infoConfiguration();\n \tint run();\n \n \tstatic CamApp *app_;\n@@ -169,6 +171,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@@ -258,8 +262,40 @@ int CamApp::prepareConfig()\n \treturn 0;\n }\n \n+int CamApp::infoConfiguration()\n+{\n+\tif (!config_) {\n+\t\tstd::cout << \"Cannot print stream information without a camera\"\n+\t\t\t  << std::endl;\n+\t\treturn -EINVAL;\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+}\n+\n int CamApp::run()\n {\n+\tint ret;\n+\n \tif (options_.isSet(OptList)) {\n \t\tstd::cout << \"Available cameras:\" << std::endl;\n \n@@ -270,6 +306,12 @@ int CamApp::run()\n \t\t}\n \t}\n \n+\tif (options_.isSet(OptInfo)) {\n+\t\tret = infoConfiguration();\n+\t\tif (ret)\n+\t\t\treturn ret;\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..0997476bb335e446 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 };\n",
    "prefixes": [
        "libcamera-devel",
        "v4",
        "15/16"
    ]
}