[RFC PATCH v1 17/23] [DNI] apps: cam: Use Camera::metadataAvailable signal

Barnabás Pőcze barnabas.pocze at ideasonboard.com
Fri Jun 6 18:41:50 CEST 2025


From: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

Handle the Camera::metadataAvailable signal and print the metadata
list.

Use the --metadata option of cam to validate that the metadata list
in Request::metadata() matches the accumulated results.
---
Original: https://patchwork.libcamera.org/patch/22234/
---
 src/apps/cam/camera_session.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp
index f6894340b..e50b26a5a 100644
--- a/src/apps/cam/camera_session.cpp
+++ b/src/apps/cam/camera_session.cpp
@@ -285,6 +285,17 @@ int CameraSession::start()
 
 	camera_->requestCompleted.connect(this, &CameraSession::requestComplete);
 
+	if (printMetadata_) {
+		camera_->metadataAvailable.connect(this, [](Request *r, MetadataList::Diff update) {
+			std::cout << ">> early metadata for " << r->sequence() << " with " << update.size() << " entries {\n";
+			for (auto &&[tag, v] : update) {
+				const auto *id = controls::controls.at(tag);
+				std::cout << '\t' << id->name() << " = " << v << '\n';
+			}
+			std::cout << "}" << std::endl;
+		});
+	}
+
 #ifdef HAVE_KMS
 	if (options_.isSet(OptDisplay))
 		sink_ = std::make_unique<KMSSink>(options_[OptDisplay].toString());
-- 
2.49.0



More information about the libcamera-devel mailing list