Show a patch.

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

{
    "id": 2402,
    "url": "https://patchwork.libcamera.org/api/patches/2402/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/2402/",
    "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": "<20191205204350.28196-8-jacopo@jmondi.org>",
    "date": "2019-12-05T20:43:47",
    "name": "[libcamera-devel,v2,07/10] libcamera: pipeline_handler: Add Camera properties",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "55ec59c3e8f472560f84d02918fea178b06b141e",
    "submitter": {
        "id": 3,
        "url": "https://patchwork.libcamera.org/api/people/3/?format=api",
        "name": "Jacopo Mondi",
        "email": "jacopo@jmondi.org"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/2402/mbox/",
    "series": [
        {
            "id": 582,
            "url": "https://patchwork.libcamera.org/api/series/582/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=582",
            "date": "2019-12-05T20:43:40",
            "name": "Introduce camera properties",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/582/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/2402/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/2402/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<jacopo@jmondi.org>",
        "Received": [
            "from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 92DBF60BCA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  5 Dec 2019 21:41:56 +0100 (CET)",
            "from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id DE1A91BF207;\n\tThu,  5 Dec 2019 20:41:54 +0000 (UTC)"
        ],
        "X-Originating-IP": "2.224.242.101",
        "From": "Jacopo Mondi <jacopo@jmondi.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Thu,  5 Dec 2019 21:43:47 +0100",
        "Message-Id": "<20191205204350.28196-8-jacopo@jmondi.org>",
        "X-Mailer": "git-send-email 2.23.0",
        "In-Reply-To": "<20191205204350.28196-1-jacopo@jmondi.org>",
        "References": "<20191205204350.28196-1-jacopo@jmondi.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v2 07/10] libcamera: pipeline_handler: Add\n\tCamera properties",
        "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>",
        "X-List-Received-Date": "Thu, 05 Dec 2019 20:41:56 -0000"
    },
    "content": "Associate to each Camera a ControlList which contains the Camera\nproperties as created by pipeline handlers in the pipeline handler's\nCameraData and provide an operation to retrieve them.\n\nCollect properties from the camera sensor in all pipeline handlers that\nsupport one (IPU3, RKISP1 and VIMC).\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/libcamera/include/pipeline_handler.h |  2 ++\n src/libcamera/pipeline/ipu3/ipu3.cpp     |  3 +++\n src/libcamera/pipeline/rkisp1/rkisp1.cpp |  3 +++\n src/libcamera/pipeline/vimc.cpp          |  4 ++++\n src/libcamera/pipeline_handler.cpp       | 19 +++++++++++++++++++\n 5 files changed, 31 insertions(+)",
    "diff": "diff --git a/src/libcamera/include/pipeline_handler.h b/src/libcamera/include/pipeline_handler.h\nindex a02e6e77dc9c..68761cc473c4 100644\n--- a/src/libcamera/include/pipeline_handler.h\n+++ b/src/libcamera/include/pipeline_handler.h\n@@ -43,6 +43,7 @@ public:\n \tPipelineHandler *pipe_;\n \tstd::list<Request *> queuedRequests_;\n \tControlInfoMap controlInfo_;\n+\tControlList properties_;\n \tstd::unique_ptr<IPAInterface> ipa_;\n \n private:\n@@ -64,6 +65,7 @@ public:\n \tvoid unlock();\n \n \tconst ControlInfoMap &controls(Camera *camera);\n+\tconst ControlList &properties(Camera *camera);\n \n \tvirtual CameraConfiguration *generateConfiguration(Camera *camera,\n \t\tconst StreamRoles &roles) = 0;\ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 1c5fccf69428..536a63a30018 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -867,6 +867,9 @@ int PipelineHandlerIPU3::registerCameras()\n \t\tif (ret)\n \t\t\tcontinue;\n \n+\t\t/* Initialize the camera properties. */\n+\t\tdata->properties_ = cio2->sensor_->properties();\n+\n \t\t/**\n \t\t * \\todo Dynamically assign ImgU and output devices to each\n \t\t * stream and camera; as of now, limit support to two cameras\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 4a583a7a1d7e..e9a70755f4c5 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -888,6 +888,9 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n \tif (ret)\n \t\treturn ret;\n \n+\t/* Initialize the camera properties. */\n+\tdata->properties_ = data->sensor_->properties();\n+\n \tret = data->loadIPA();\n \tif (ret)\n \t\treturn ret;\ndiff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\nindex 06664fed42e7..f043cf55889e 100644\n--- a/src/libcamera/pipeline/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc.cpp\n@@ -454,6 +454,10 @@ int VimcCameraData::init(MediaDevice *media)\n \t}\n \n \tcontrolInfo_ = std::move(ctrls);\n+\n+\t/* Initialize the camera properties. */\n+\tproperties_ = sensor_->properties();\n+\n \treturn 0;\n }\n \ndiff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\nindex 4349ca8957e4..a023fa1001f5 100644\n--- a/src/libcamera/pipeline_handler.cpp\n+++ b/src/libcamera/pipeline_handler.cpp\n@@ -96,6 +96,14 @@ LOG_DEFINE_CATEGORY(Pipeline)\n  * creating the camera, and shall not be modified afterwards.\n  */\n \n+/**\n+ * \\var CameraData::properties_\n+ * \\brief The list of properties supported by the camera\n+ *\n+ * The list of camera properties shall be initialised by the pipeline handler\n+ * when creating the camera, and shall not be modified afterwards.\n+ */\n+\n /**\n  * \\var CameraData::ipa_\n  * \\brief The IPA module used by the camera\n@@ -244,6 +252,17 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera)\n \treturn data->controlInfo_;\n }\n \n+/**\n+ * \\brief Retrieve the list of properties for a camera\n+ * \\param[in] camera The camera\n+ * \\return A ControlList of properties supported by \\a camera\n+ */\n+const ControlList &PipelineHandler::properties(Camera *camera)\n+{\n+\tCameraData *data = cameraData(camera);\n+\treturn data->properties_;\n+}\n+\n /**\n  * \\fn PipelineHandler::generateConfiguration()\n  * \\brief Generate a camera configuration for a specified camera\n",
    "prefixes": [
        "libcamera-devel",
        "v2",
        "07/10"
    ]
}