Show a patch.

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

{
    "id": 341,
    "url": "https://patchwork.libcamera.org/api/patches/341/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/341/",
    "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": "<20190122234505.32634-8-niklas.soderlund@ragnatech.se>",
    "date": "2019-01-22T23:45:04",
    "name": "[libcamera-devel,7/8] libcamera: camera: integrate streams and configuration",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "c81a831c9102081b0658b88bc565313330287197",
    "submitter": {
        "id": 5,
        "url": "https://patchwork.libcamera.org/api/people/5/?format=api",
        "name": "Niklas Söderlund",
        "email": "niklas.soderlund@ragnatech.se"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/341/mbox/",
    "series": [
        {
            "id": 118,
            "url": "https://patchwork.libcamera.org/api/series/118/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=118",
            "date": "2019-01-22T23:44:57",
            "name": "libcamera: add basic support for Streams and format configuration",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/118/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/341/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/341/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<niklas.soderlund@ragnatech.se>",
        "Received": [
            "from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net\n\t[195.74.38.228])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 19FE060C9A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 23 Jan 2019 00:46:44 +0100 (CET)",
            "from bismarck.berto.se (unknown [89.233.230.99])\n\tby bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA\n\tid ec281263-1e9f-11e9-911a-0050569116f7;\n\tWed, 23 Jan 2019 00:46:22 +0100 (CET)"
        ],
        "X-Halon-ID": "ec281263-1e9f-11e9-911a-0050569116f7",
        "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, 23 Jan 2019 00:45:04 +0100",
        "Message-Id": "<20190122234505.32634-8-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20190122234505.32634-1-niklas.soderlund@ragnatech.se>",
        "References": "<20190122234505.32634-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 7/8] libcamera: camera: integrate streams\n\tand configuration",
        "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": "Tue, 22 Jan 2019 23:46:44 -0000"
    },
    "content": "Add retrieval and configuration of streams information and\nconfiguration. The implementation in the Camera are minimalistic as the\nheavily lifting are done by the pipeline handler implementations.\n\nThe single most important thing for the helpers in the Camera object is\nto perform access control and making sure no request is forwarded to a\npipeline handler if the camera have been disconnected.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n include/libcamera/camera.h |  7 ++++++\n src/libcamera/camera.cpp   | 48 ++++++++++++++++++++++++++++++++++++++\n 2 files changed, 55 insertions(+)",
    "diff": "diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h\nindex 3cb1ab62b791ab87..9337fa970d26b0df 100644\n--- a/include/libcamera/camera.h\n+++ b/include/libcamera/camera.h\n@@ -9,10 +9,13 @@\n \n #include <memory>\n #include <string>\n+#include <vector>\n \n namespace libcamera {\n \n class PipelineHandler;\n+class Stream;\n+class StreamConfiguration;\n \n class Camera final\n {\n@@ -30,6 +33,10 @@ public:\n \tint acquire();\n \tvoid release();\n \n+\tstd::vector<Stream> streams() const;\n+\n+\tint configure(std::vector<StreamConfiguration *> &config);\n+\n private:\n \texplicit Camera(const std::string &name, class PipelineHandler *pipe);\n \t~Camera();\ndiff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex ee5e6dedb242a1fd..6cae82669e454e35 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -6,6 +6,9 @@\n  */\n \n #include <libcamera/camera.h>\n+#include <libcamera/stream.h>\n+\n+#include \"pipeline_handler.h\"\n \n #include \"log.h\"\n \n@@ -144,4 +147,49 @@ void Camera::release()\n \tacquired_ = false;\n }\n \n+/**\n+ * \\brief Retrieve the supported streams of the camera\n+ *\n+ * \\return An array of streams supported by the camera device\n+ */\n+std::vector<Stream> Camera::streams() const\n+{\n+\tstd::vector<Stream> streams;\n+\n+\tif (pipe_)\n+\t\tstreams = pipe_->streams(this);\n+\n+\treturn streams;\n+}\n+\n+/**\n+ * \\brief Configure the camera device prior to capture\n+ *\n+ * Prior to starting capture, the camera device must be configured to select a\n+ * set of streams.\n+ *\n+ * The requested configuration \\a config shall contain at least one stream and\n+ * may contain multiple streams. For each stream an associated StreamFormat\n+ * shall be supplied. Streams supported by the camera device not part of the\n+ * \\a config will be disabled.\n+ *\n+ * Exclusive access to the camera device shall be ensured by a call to\n+ * Camera::acquire() before calling this function, otherwise an -EACCES error\n+ * will be returned.\n+ *\n+ * \\param[in] config Array of stream configurations to setup\n+ *\n+ * \\return 0 on success or a negative error code on error.\n+ */\n+int Camera::configure(std::vector<StreamConfiguration *> &config)\n+{\n+\tif (!pipe_)\n+\t\treturn -ENODEV;\n+\n+\tif (!acquired_)\n+\t\treturn -EACCES;\n+\n+\treturn pipe_->configure(this, config);\n+}\n+\n } /* namespace libcamera */\n",
    "prefixes": [
        "libcamera-devel",
        "7/8"
    ]
}