Patch Detail
Show a patch.
GET /api/patches/9162/?format=api
{ "id": 9162, "url": "https://patchwork.libcamera.org/api/patches/9162/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9162/", "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": "<20200803211733.1037019-9-niklas.soderlund@ragnatech.se>", "date": "2020-08-03T21:17:32", "name": "[libcamera-devel,v6,8/9] libcamera: camera: Rename name() to id()", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "4e35816f7a1469fbed39d1b8ea806f62790e2dc3", "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/9162/mbox/", "series": [ { "id": 1185, "url": "https://patchwork.libcamera.org/api/series/1185/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1185", "date": "2020-08-03T21:17:24", "name": "libcamera: Generate unique and stable camera IDs", "version": 6, "mbox": "https://patchwork.libcamera.org/series/1185/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9162/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9162/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id A63D7BD87A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 3 Aug 2020 21:18:08 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8499A61AC3;\n\tMon, 3 Aug 2020 23:18:08 +0200 (CEST)", "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 168F360905\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 3 Aug 2020 23:18:06 +0200 (CEST)", "from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de\n\t[84.172.82.168]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA\n\tid 9fd4e5cc-d5ce-11ea-86ee-0050569116f7;\n\tMon, 03 Aug 2020 23:16:41 +0200 (CEST)" ], "X-Halon-ID": "9fd4e5cc-d5ce-11ea-86ee-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": "Mon, 3 Aug 2020 23:17:32 +0200", "Message-Id": "<20200803211733.1037019-9-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.28.0", "In-Reply-To": "<20200803211733.1037019-1-niklas.soderlund@ragnatech.se>", "References": "<20200803211733.1037019-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v6 8/9] libcamera: camera: Rename name()\n\tto id()", "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>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Rename Camera::name() to camera::id() to better describe what it\nrepresents, a unique and stable ID for the camera. While at it improve\nthe documentation for the camera ID to describe it needs to be stable\nfor a camera between resets of the system.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n include/libcamera/camera.h | 6 +--\n src/android/camera_device.cpp | 4 +-\n src/cam/main.cpp | 8 ++--\n src/gstreamer/gstlibcameraprovider.cpp | 4 +-\n src/gstreamer/gstlibcamerasrc.cpp | 6 +--\n src/libcamera/camera.cpp | 40 ++++++++++++-------\n src/libcamera/camera_controls.cpp | 2 +-\n src/libcamera/camera_manager.cpp | 16 ++++----\n src/libcamera/framebuffer_allocator.cpp | 2 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 5 +--\n .../pipeline/raspberrypi/raspberrypi.cpp | 4 +-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 14 +++----\n src/qcam/dng_writer.cpp | 4 +-\n src/qcam/main_window.cpp | 18 ++++-----\n src/v4l2/v4l2_camera_proxy.cpp | 2 +-\n test/pipeline/ipu3/ipu3_pipeline_test.cpp | 2 +-\n test/pipeline/rkisp1/rkisp1_pipeline_test.cpp | 2 +-\n 17 files changed, 74 insertions(+), 65 deletions(-)", "diff": "diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h\nindex 7dd23d75864ef2db..48d88d64a0a94050 100644\n--- a/include/libcamera/camera.h\n+++ b/include/libcamera/camera.h\n@@ -71,13 +71,13 @@ class Camera final : public Object, public std::enable_shared_from_this<Camera>\n {\n public:\n \tstatic std::shared_ptr<Camera> create(PipelineHandler *pipe,\n-\t\t\t\t\t const std::string &name,\n+\t\t\t\t\t const std::string &id,\n \t\t\t\t\t const std::set<Stream *> &streams);\n \n \tCamera(const Camera &) = delete;\n \tCamera &operator=(const Camera &) = delete;\n \n-\tconst std::string &name() const;\n+\tconst std::string &id() const;\n \n \tSignal<Request *, FrameBuffer *> bufferCompleted;\n \tSignal<Request *> requestCompleted;\n@@ -100,7 +100,7 @@ public:\n \tint stop();\n \n private:\n-\tCamera(PipelineHandler *pipe, const std::string &name,\n+\tCamera(PipelineHandler *pipe, const std::string &id,\n \t const std::set<Stream *> &streams);\n \t~Camera();\n \ndiff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex b49d6681e5a52d32..c3f24dbd9d540648 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -1012,7 +1012,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n \tint ret = camera_->configure(config_.get());\n \tif (ret) {\n \t\tLOG(HAL, Error) << \"Failed to configure camera '\"\n-\t\t\t\t<< camera_->name() << \"'\";\n+\t\t\t\t<< camera_->id() << \"'\";\n \t\treturn ret;\n \t}\n \n@@ -1180,7 +1180,7 @@ void CameraDevice::requestComplete(Request *request)\n \n std::string CameraDevice::logPrefix() const\n {\n-\treturn \"'\" + camera_->name() + \"'\";\n+\treturn \"'\" + camera_->id() + \"'\";\n }\n \n void CameraDevice::notifyShutter(uint32_t frameNumber, uint64_t timestamp)\ndiff --git a/src/cam/main.cpp b/src/cam/main.cpp\nindex ec59e9eaf1176a94..6791e57bfdea05b2 100644\n--- a/src/cam/main.cpp\n+++ b/src/cam/main.cpp\n@@ -118,7 +118,7 @@ int CamApp::init(int argc, char **argv)\n \t\t\treturn -EINVAL;\n \t\t}\n \n-\t\tstd::cout << \"Using camera \" << camera_->name() << std::endl;\n+\t\tstd::cout << \"Using camera \" << camera_->id() << std::endl;\n \n \t\tret = prepareConfig();\n \t\tif (ret)\n@@ -322,12 +322,12 @@ int CamApp::infoConfiguration()\n \n void CamApp::cameraAdded(std::shared_ptr<Camera> cam)\n {\n-\tstd::cout << \"Camera Added: \" << cam->name() << std::endl;\n+\tstd::cout << \"Camera Added: \" << cam->id() << std::endl;\n }\n \n void CamApp::cameraRemoved(std::shared_ptr<Camera> cam)\n {\n-\tstd::cout << \"Camera Removed: \" << cam->name() << std::endl;\n+\tstd::cout << \"Camera Removed: \" << cam->id() << std::endl;\n }\n \n int CamApp::run()\n@@ -339,7 +339,7 @@ int CamApp::run()\n \n \t\tunsigned int index = 1;\n \t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras()) {\n-\t\t\tstd::cout << index << \": \" << cam->name() << std::endl;\n+\t\t\tstd::cout << index << \": \" << cam->id() << std::endl;\n \t\t\tindex++;\n \t\t}\n \t}\ndiff --git a/src/gstreamer/gstlibcameraprovider.cpp b/src/gstreamer/gstlibcameraprovider.cpp\nindex 914ed4fb1612b8c9..840e87a3d8daeae4 100644\n--- a/src/gstreamer/gstlibcameraprovider.cpp\n+++ b/src/gstreamer/gstlibcameraprovider.cpp\n@@ -127,7 +127,7 @@ static GstDevice *\n gst_libcamera_device_new(const std::shared_ptr<Camera> &camera)\n {\n \tg_autoptr(GstCaps) caps = gst_caps_new_empty();\n-\tconst gchar *name = camera->name().c_str();\n+\tconst gchar *name = camera->id().c_str();\n \tStreamRoles roles;\n \n \troles.push_back(StreamRole::VideoRecording);\n@@ -189,7 +189,7 @@ gst_libcamera_provider_probe(GstDeviceProvider *provider)\n \t}\n \n \tfor (const std::shared_ptr<Camera> &camera : cm->cameras()) {\n-\t\tGST_INFO_OBJECT(self, \"Found camera '%s'\", camera->name().c_str());\n+\t\tGST_INFO_OBJECT(self, \"Found camera '%s'\", camera->id().c_str());\n \t\tdevices = g_list_append(devices,\n \t\t\t\t\tg_object_ref_sink(gst_libcamera_device_new(camera)));\n \t}\ndiff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\nindex 9755922ad59b22f6..0c28ae3f28529df2 100644\n--- a/src/gstreamer/gstlibcamerasrc.cpp\n+++ b/src/gstreamer/gstlibcamerasrc.cpp\n@@ -241,12 +241,12 @@ gst_libcamera_src_open(GstLibcameraSrc *self)\n \t\tcam = cm->cameras()[0];\n \t}\n \n-\tGST_INFO_OBJECT(self, \"Using camera named '%s'\", cam->name().c_str());\n+\tGST_INFO_OBJECT(self, \"Using camera '%s'\", cam->id().c_str());\n \n \tret = cam->acquire();\n \tif (ret) {\n \t\tGST_ELEMENT_ERROR(self, RESOURCE, BUSY,\n-\t\t\t\t (\"Camera name '%s' is already in use.\", cam->name().c_str()),\n+\t\t\t\t (\"Camera '%s' is already in use.\", cam->id().c_str()),\n \t\t\t\t (\"libcamera::Camera::acquire() failed: %s\", g_strerror(ret)));\n \t\treturn false;\n \t}\n@@ -495,7 +495,7 @@ gst_libcamera_src_close(GstLibcameraSrc *self)\n \tret = state->cam_->release();\n \tif (ret) {\n \t\tGST_ELEMENT_WARNING(self, RESOURCE, BUSY,\n-\t\t\t\t (\"Camera name '%s' is still in use.\", state->cam_->name().c_str()),\n+\t\t\t\t (\"Camera '%s' is still in use.\", state->cam_->id().c_str()),\n \t\t\t\t (\"libcamera::Camera.release() failed: %s\", g_strerror(-ret)));\n \t}\n \ndiff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex 99cb5048ee06e3d3..a547542d1b67cc2b 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -265,7 +265,7 @@ public:\n \t\tCameraRunning,\n \t};\n \n-\tPrivate(PipelineHandler *pipe, const std::string &name,\n+\tPrivate(PipelineHandler *pipe, const std::string &id,\n \t\tconst std::set<Stream *> &streams);\n \t~Private();\n \n@@ -277,7 +277,7 @@ public:\n \tvoid setState(State state);\n \n \tstd::shared_ptr<PipelineHandler> pipe_;\n-\tstd::string name_;\n+\tstd::string id_;\n \tstd::set<Stream *> streams_;\n \tstd::set<Stream *> activeStreams_;\n \n@@ -286,9 +286,9 @@ private:\n \tstd::atomic<State> state_;\n };\n \n-Camera::Private::Private(PipelineHandler *pipe, const std::string &name,\n+Camera::Private::Private(PipelineHandler *pipe, const std::string &id,\n \t\t\t const std::set<Stream *> &streams)\n-\t: pipe_(pipe->shared_from_this()), name_(name), streams_(streams),\n+\t: pipe_(pipe->shared_from_this()), id_(id), streams_(streams),\n \t disconnected_(false), state_(CameraAvailable)\n {\n }\n@@ -450,15 +450,25 @@ void Camera::Private::setState(State state)\n /**\n * \\brief Create a camera instance\n * \\param[in] pipe The pipeline handler responsible for the camera device\n- * \\param[in] name The name of the camera device\n+ * \\param[in] id The ID of the camera device\n * \\param[in] streams Array of streams the camera provides\n *\n- * The caller is responsible for guaranteeing unicity of the camera name.\n+ * The caller is responsible for guaranteeing a stable and unique camera ID. For\n+ * an ID to be stable it must be the same each time the pipeline handler creates\n+ * it, even between system resets. Parameters that are enumerated at system\n+ * startup such as bus parameters which might be enumerated differently are\n+ * therefor not possible to use in the ID. For an ID to be unique no pipeline\n+ * should generate an ID that could conflict, either with IDs from the same\n+ * pipeline handle or any other.\n+ *\n+ * Pipeline handlers that use a CameraSensor may use the CameraSensor::id() to\n+ * generate and ID which satisfies the criteria of a stable and unique camera\n+ * ID.\n *\n * \\return A shared pointer to the newly created camera object\n */\n std::shared_ptr<Camera> Camera::create(PipelineHandler *pipe,\n-\t\t\t\t const std::string &name,\n+\t\t\t\t const std::string &id,\n \t\t\t\t const std::set<Stream *> &streams)\n {\n \tstruct Deleter : std::default_delete<Camera> {\n@@ -468,19 +478,19 @@ std::shared_ptr<Camera> Camera::create(PipelineHandler *pipe,\n \t\t}\n \t};\n \n-\tCamera *camera = new Camera(pipe, name, streams);\n+\tCamera *camera = new Camera(pipe, id, streams);\n \n \treturn std::shared_ptr<Camera>(camera, Deleter());\n }\n \n /**\n- * \\brief Retrieve the name of the camera\n+ * \\brief Retrieve the ID of the camera\n * \\context This function is \\threadsafe.\n- * \\return Name of the camera device\n+ * \\return ID of the camera device\n */\n-const std::string &Camera::name() const\n+const std::string &Camera::id() const\n {\n-\treturn p_->name_;\n+\treturn p_->id_;\n }\n \n /**\n@@ -506,9 +516,9 @@ const std::string &Camera::name() const\n * application API calls by returning errors immediately.\n */\n \n-Camera::Camera(PipelineHandler *pipe, const std::string &name,\n+Camera::Camera(PipelineHandler *pipe, const std::string &id,\n \t const std::set<Stream *> &streams)\n-\t: p_(new Private(pipe, name, streams))\n+\t: p_(new Private(pipe, id, streams))\n {\n }\n \n@@ -530,7 +540,7 @@ Camera::~Camera()\n */\n void Camera::disconnect()\n {\n-\tLOG(Camera, Debug) << \"Disconnecting camera \" << name();\n+\tLOG(Camera, Debug) << \"Disconnecting camera \" << id();\n \n \tp_->disconnect();\n \tdisconnected.emit(this);\ndiff --git a/src/libcamera/camera_controls.cpp b/src/libcamera/camera_controls.cpp\nindex 371f6d079e2d877c..cabdcf75c223fc3e 100644\n--- a/src/libcamera/camera_controls.cpp\n+++ b/src/libcamera/camera_controls.cpp\n@@ -36,7 +36,7 @@ CameraControlValidator::CameraControlValidator(Camera *camera)\n \n const std::string &CameraControlValidator::name() const\n {\n-\treturn camera_->name();\n+\treturn camera_->id();\n }\n \n /**\ndiff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\nindex c45bf33fdc1ef01b..76543b6aac8df9c4 100644\n--- a/src/libcamera/camera_manager.cpp\n+++ b/src/libcamera/camera_manager.cpp\n@@ -181,10 +181,10 @@ void CameraManager::Private::addCamera(std::shared_ptr<Camera> camera,\n \tMutexLocker locker(mutex_);\n \n \tfor (std::shared_ptr<Camera> c : cameras_) {\n-\t\tif (c->name() == camera->name()) {\n+\t\tif (c->id() == camera->id()) {\n \t\t\tLOG(Camera, Warning)\n-\t\t\t\t<< \"Registering camera with duplicate name '\"\n-\t\t\t\t<< camera->name() << \"'\";\n+\t\t\t\t<< \"Registering camera with duplicate ID '\"\n+\t\t\t\t<< camera->id() << \"'\";\n \t\t\tbreak;\n \t\t}\n \t}\n@@ -208,7 +208,7 @@ void CameraManager::Private::removeCamera(Camera *camera)\n \t\treturn;\n \n \tLOG(Camera, Debug)\n-\t\t<< \"Unregistering camera '\" << camera->name() << \"'\";\n+\t\t<< \"Unregistering camera '\" << camera->id() << \"'\";\n \n \tauto iter_d = std::find_if(camerasByDevnum_.begin(), camerasByDevnum_.end(),\n \t\t\t\t [camera](const std::pair<dev_t, std::weak_ptr<Camera>> &p) {\n@@ -329,8 +329,8 @@ std::vector<std::shared_ptr<Camera>> CameraManager::cameras() const\n }\n \n /**\n- * \\brief Get a camera based on name\n- * \\param[in] name Name of camera to get\n+ * \\brief Get a camera based on ID\n+ * \\param[in] id ID of camera to get\n *\n * Before calling this function the caller is responsible for ensuring that\n * the camera manager is running.\n@@ -339,12 +339,12 @@ std::vector<std::shared_ptr<Camera>> CameraManager::cameras() const\n *\n * \\return Shared pointer to Camera object or nullptr if camera not found\n */\n-std::shared_ptr<Camera> CameraManager::get(const std::string &name)\n+std::shared_ptr<Camera> CameraManager::get(const std::string &id)\n {\n \tMutexLocker locker(p_->mutex_);\n \n \tfor (std::shared_ptr<Camera> camera : p_->cameras_) {\n-\t\tif (camera->name() == name)\n+\t\tif (camera->id() == id)\n \t\t\treturn camera;\n \t}\n \ndiff --git a/src/libcamera/framebuffer_allocator.cpp b/src/libcamera/framebuffer_allocator.cpp\nindex 252191ba234c5450..2fbba37a1b0b7254 100644\n--- a/src/libcamera/framebuffer_allocator.cpp\n+++ b/src/libcamera/framebuffer_allocator.cpp\n@@ -95,7 +95,7 @@ int FrameBufferAllocator::allocate(Stream *stream)\n \tint ret = camera_->exportFrameBuffers(stream, &buffers_[stream]);\n \tif (ret == -EINVAL)\n \t\tLOG(Allocator, Error)\n-\t\t\t<< \"Stream is not part of \" << camera_->name()\n+\t\t\t<< \"Stream is not part of \" << camera_->id()\n \t\t\t<< \" active configuration\";\n \treturn ret;\n }\ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex c300f570d727e03e..25f890947b660ecc 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -629,7 +629,7 @@ int PipelineHandlerIPU3::start(Camera *camera)\n \n error:\n \tfreeBuffers(camera);\n-\tLOG(IPU3, Error) << \"Failed to start camera \" << camera->name();\n+\tLOG(IPU3, Error) << \"Failed to start camera \" << camera->id();\n \n \treturn ret;\n }\n@@ -642,8 +642,7 @@ void PipelineHandlerIPU3::stop(Camera *camera)\n \tret |= data->imgu_->stop();\n \tret |= data->cio2_.stop();\n \tif (ret)\n-\t\tLOG(IPU3, Warning) << \"Failed to stop camera \"\n-\t\t\t\t << camera->name();\n+\t\tLOG(IPU3, Warning) << \"Failed to stop camera \" << camera->id();\n \n \tfreeBuffers(camera);\n }\ndiff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\nindex c55d7325cd44d6cb..eeaf335cbcd2f93f 100644\n--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n@@ -643,7 +643,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \tif (ret)\n \t\treturn ret;\n \n-\tLOG(RPI, Info) << \"Sensor: \" << camera->name()\n+\tLOG(RPI, Info) << \"Sensor: \" << camera->id()\n \t\t << \" - Selected mode: \" << sensorFormat.toString();\n \n \t/*\n@@ -793,7 +793,7 @@ int PipelineHandlerRPi::start(Camera *camera)\n \tret = data->ipa_->start();\n \tif (ret) {\n \t\tLOG(RPI, Error)\n-\t\t\t<< \"Failed to start IPA for \" << camera->name();\n+\t\t\t<< \"Failed to start IPA for \" << camera->id();\n \t\tstop(camera);\n \t\treturn ret;\n \t}\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 94561062c2b9d4fc..b7609cbc8f363135 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -798,7 +798,7 @@ int PipelineHandlerRkISP1::start(Camera *camera)\n \tif (ret) {\n \t\tfreeBuffers(camera);\n \t\tLOG(RkISP1, Error)\n-\t\t\t<< \"Failed to start IPA \" << camera->name();\n+\t\t\t<< \"Failed to start IPA \" << camera->id();\n \t\treturn ret;\n \t}\n \n@@ -809,7 +809,7 @@ int PipelineHandlerRkISP1::start(Camera *camera)\n \t\tdata->ipa_->stop();\n \t\tfreeBuffers(camera);\n \t\tLOG(RkISP1, Error)\n-\t\t\t<< \"Failed to start parameters \" << camera->name();\n+\t\t\t<< \"Failed to start parameters \" << camera->id();\n \t\treturn ret;\n \t}\n \n@@ -819,7 +819,7 @@ int PipelineHandlerRkISP1::start(Camera *camera)\n \t\tdata->ipa_->stop();\n \t\tfreeBuffers(camera);\n \t\tLOG(RkISP1, Error)\n-\t\t\t<< \"Failed to start statistics \" << camera->name();\n+\t\t\t<< \"Failed to start statistics \" << camera->id();\n \t\treturn ret;\n \t}\n \n@@ -831,7 +831,7 @@ int PipelineHandlerRkISP1::start(Camera *camera)\n \t\tfreeBuffers(camera);\n \n \t\tLOG(RkISP1, Error)\n-\t\t\t<< \"Failed to start camera \" << camera->name();\n+\t\t\t<< \"Failed to start camera \" << camera->id();\n \t}\n \n \tactiveCamera_ = camera;\n@@ -870,17 +870,17 @@ void PipelineHandlerRkISP1::stop(Camera *camera)\n \tret = video_->streamOff();\n \tif (ret)\n \t\tLOG(RkISP1, Warning)\n-\t\t\t<< \"Failed to stop camera \" << camera->name();\n+\t\t\t<< \"Failed to stop camera \" << camera->id();\n \n \tret = stat_->streamOff();\n \tif (ret)\n \t\tLOG(RkISP1, Warning)\n-\t\t\t<< \"Failed to stop statistics \" << camera->name();\n+\t\t\t<< \"Failed to stop statistics \" << camera->id();\n \n \tret = param_->streamOff();\n \tif (ret)\n \t\tLOG(RkISP1, Warning)\n-\t\t\t<< \"Failed to stop parameters \" << camera->name();\n+\t\t\t<< \"Failed to stop parameters \" << camera->id();\n \n \tdata->ipa_->stop();\n \ndiff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp\nindex 8fb9681c2b4fb5e8..65fbd409cfe72bf4 100644\n--- a/src/qcam/dng_writer.cpp\n+++ b/src/qcam/dng_writer.cpp\n@@ -386,8 +386,8 @@ int DNGWriter::write(const char *filename, const Camera *camera,\n \tTIFFSetField(tif, TIFFTAG_DNGBACKWARDVERSION, version);\n \tTIFFSetField(tif, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);\n \tTIFFSetField(tif, TIFFTAG_MAKE, \"libcamera\");\n-\tTIFFSetField(tif, TIFFTAG_MODEL, camera->name().c_str());\n-\tTIFFSetField(tif, TIFFTAG_UNIQUECAMERAMODEL, camera->name().c_str());\n+\tTIFFSetField(tif, TIFFTAG_MODEL, camera->id().c_str());\n+\tTIFFSetField(tif, TIFFTAG_UNIQUECAMERAMODEL, camera->id().c_str());\n \tTIFFSetField(tif, TIFFTAG_SOFTWARE, \"qcam\");\n \tTIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);\n \ndiff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\nindex 13a4fefe89ae7525..526e50f48fd36577 100644\n--- a/src/qcam/main_window.cpp\n+++ b/src/qcam/main_window.cpp\n@@ -169,7 +169,7 @@ int MainWindow::createToolbars()\n \t\tthis, &MainWindow::switchCamera);\n \n \tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n-\t\tcameraCombo_->addItem(QString::fromStdString(cam->name()));\n+\t\tcameraCombo_->addItem(QString::fromStdString(cam->id()));\n \n \ttoolbar_->addWidget(cameraCombo_);\n \n@@ -241,11 +241,11 @@ void MainWindow::switchCamera(int index)\n \tconst std::shared_ptr<Camera> &cam = cameras[index];\n \n \tif (cam->acquire()) {\n-\t\tqInfo() << \"Failed to acquire camera\" << cam->name().c_str();\n+\t\tqInfo() << \"Failed to acquire camera\" << cam->id().c_str();\n \t\treturn;\n \t}\n \n-\tqInfo() << \"Switching to camera\" << cam->name().c_str();\n+\tqInfo() << \"Switching to camera\" << cam->id().c_str();\n \n \t/*\n \t * Stop the capture session, release the current camera, replace it with\n@@ -266,11 +266,11 @@ std::string MainWindow::chooseCamera()\n \n \t/* If only one camera is available, use it automatically. */\n \tif (cm_->cameras().size() == 1)\n-\t\treturn cm_->cameras()[0]->name();\n+\t\treturn cm_->cameras()[0]->id();\n \n \t/* Present a dialog box to pick a camera. */\n \tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n-\t\tcameras.append(QString::fromStdString(cam->name()));\n+\t\tcameras.append(QString::fromStdString(cam->id()));\n \n \tQString name = QInputDialog::getItem(this, \"Select Camera\",\n \t\t\t\t\t \"Camera:\", cameras, 0,\n@@ -582,7 +582,7 @@ void MainWindow::processHotplug(HotplugEvent *e)\n \tHotplugEvent::PlugEvent event = e->hotplugEvent();\n \n \tif (event == HotplugEvent::HotPlug) {\n-\t\tcameraCombo_->addItem(QString::fromStdString(camera->name()));\n+\t\tcameraCombo_->addItem(QString::fromStdString(camera->id()));\n \t} else if (event == HotplugEvent::HotUnplug) {\n \t\t/* Check if the currently-streaming camera is removed. */\n \t\tif (camera == camera_.get()) {\n@@ -592,14 +592,14 @@ void MainWindow::processHotplug(HotplugEvent *e)\n \t\t\tcameraCombo_->setCurrentIndex(0);\n \t\t}\n \n-\t\tint camIndex = cameraCombo_->findText(QString::fromStdString(camera->name()));\n+\t\tint camIndex = cameraCombo_->findText(QString::fromStdString(camera->id()));\n \t\tcameraCombo_->removeItem(camIndex);\n \t}\n }\n \n void MainWindow::addCamera(std::shared_ptr<Camera> camera)\n {\n-\tqInfo() << \"Adding new camera:\" << camera->name().c_str();\n+\tqInfo() << \"Adding new camera:\" << camera->id().c_str();\n \tQCoreApplication::postEvent(this,\n \t\t\t\t new HotplugEvent(std::move(camera),\n \t\t\t\t\t\t HotplugEvent::HotPlug));\n@@ -607,7 +607,7 @@ void MainWindow::addCamera(std::shared_ptr<Camera> camera)\n \n void MainWindow::removeCamera(std::shared_ptr<Camera> camera)\n {\n-\tqInfo() << \"Removing camera:\" << camera->name().c_str();\n+\tqInfo() << \"Removing camera:\" << camera->id().c_str();\n \tQCoreApplication::postEvent(this,\n \t\t\t\t new HotplugEvent(std::move(camera),\n \t\t\t\t\t\t HotplugEvent::HotUnplug));\ndiff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp\nindex 50ab7e66cdc02fb1..63affaeec1b3af11 100644\n--- a/src/v4l2/v4l2_camera_proxy.cpp\n+++ b/src/v4l2/v4l2_camera_proxy.cpp\n@@ -189,7 +189,7 @@ void V4L2CameraProxy::querycap(std::shared_ptr<Camera> camera)\n \n \tutils::strlcpy(reinterpret_cast<char *>(capabilities_.driver), driver.c_str(),\n \t\t sizeof(capabilities_.driver));\n-\tutils::strlcpy(reinterpret_cast<char *>(capabilities_.card), camera->name().c_str(),\n+\tutils::strlcpy(reinterpret_cast<char *>(capabilities_.card), camera->id().c_str(),\n \t\t sizeof(capabilities_.card));\n \tutils::strlcpy(reinterpret_cast<char *>(capabilities_.bus_info), bus_info.c_str(),\n \t\t sizeof(capabilities_.bus_info));\ndiff --git a/test/pipeline/ipu3/ipu3_pipeline_test.cpp b/test/pipeline/ipu3/ipu3_pipeline_test.cpp\nindex 34998f8f6d04473f..9e647af5fdf8ee7f 100644\n--- a/test/pipeline/ipu3/ipu3_pipeline_test.cpp\n+++ b/test/pipeline/ipu3/ipu3_pipeline_test.cpp\n@@ -106,7 +106,7 @@ int IPU3PipelineTest::run()\n {\n \tauto cameras = cameraManager_->cameras();\n \tfor (const std::shared_ptr<Camera> &cam : cameras)\n-\t\tcout << \"Found camera '\" << cam->name() << \"'\" << endl;\n+\t\tcout << \"Found camera '\" << cam->id() << \"'\" << endl;\n \n \tif (cameras.size() != sensors_) {\n \t\tcerr << cameras.size() << \" cameras registered, but \" << sensors_\ndiff --git a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp\nindex b6678ce76e9af193..acaf3c33b529d31d 100644\n--- a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp\n+++ b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp\n@@ -95,7 +95,7 @@ int RKISP1PipelineTest::run()\n {\n \tauto cameras = cameraManager_->cameras();\n \tfor (const std::shared_ptr<Camera> &cam : cameras)\n-\t\tcout << \"Found camera '\" << cam->name() << \"'\" << endl;\n+\t\tcout << \"Found camera '\" << cam->id() << \"'\" << endl;\n \n \tif (cameras.size() != sensors_) {\n \t\tcerr << cameras.size() << \" cameras registered, but \" << sensors_\n", "prefixes": [ "libcamera-devel", "v6", "8/9" ] }