Patch Detail
Show a patch.
GET /api/patches/2622/?format=api
{ "id": 2622, "url": "https://patchwork.libcamera.org/api/patches/2622/?format=api", "web_url": "https://patchwork.libcamera.org/patch/2622/", "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": "<20200113164245.52535-8-jacopo@jmondi.org>", "date": "2020-01-13T16:42:29", "name": "[libcamera-devel,07/23] libcamera: pipeline_handler: Add Camera properties", "commit_ref": null, "pull_url": null, "state": "accepted", "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/2622/mbox/", "series": [ { "id": 618, "url": "https://patchwork.libcamera.org/api/series/618/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=618", "date": "2020-01-13T16:42:22", "name": "Properties and compound controls", "version": 1, "mbox": "https://patchwork.libcamera.org/series/618/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/2622/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/2622/checks/", "tags": {}, "headers": { "Return-Path": "<jacopo@jmondi.org>", "Received": [ "from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CC1B0606BD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Jan 2020 17:40:29 +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 relay11.mail.gandi.net (Postfix) with ESMTPSA id 0FABF10000B;\n\tMon, 13 Jan 2020 16:40:28 +0000 (UTC)" ], "From": "Jacopo Mondi <jacopo@jmondi.org>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Mon, 13 Jan 2020 17:42:29 +0100", "Message-Id": "<20200113164245.52535-8-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.24.0", "In-Reply-To": "<20200113164245.52535-1-jacopo@jmondi.org>", "References": "<20200113164245.52535-1-jacopo@jmondi.org>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 07/23] 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": "Mon, 13 Jan 2020 16:40:30 -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>\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\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 a6c1e1fbae38..789c5f928e6a 100644\n--- a/src/libcamera/include/pipeline_handler.h\n+++ b/src/libcamera/include/pipeline_handler.h\n@@ -44,6 +44,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@@ -65,6 +66,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 7894084a025e..13a3a2369f42 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -887,6 +887,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 389a99cf52bd..19b9c44208ec 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -906,6 +906,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 1700ac967299..2df5447177fa 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 669097f609ab..d93ee89c3855 100644\n--- a/src/libcamera/pipeline_handler.cpp\n+++ b/src/libcamera/pipeline_handler.cpp\n@@ -98,6 +98,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@@ -246,6 +254,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", "07/23" ] }