[libcamera-devel] [PATCH v4 1/9] libcamera: stream: Add operator<<() to print StreamRole as a string

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Nov 24 03:51:25 CET 2022


libcamera prints stream role values in log messages. To be more
user-friendly, add a specialization of operator<<() to print the role
name as a string instead of a numerical value.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
---
 include/libcamera/stream.h |  3 +++
 src/libcamera/stream.cpp   | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
index f0ae7e62e0a3..efec695ad317 100644
--- a/include/libcamera/stream.h
+++ b/include/libcamera/stream.h
@@ -9,6 +9,7 @@
 
 #include <map>
 #include <memory>
+#include <ostream>
 #include <string>
 #include <vector>
 
@@ -70,6 +71,8 @@ enum StreamRole {
 
 using StreamRoles = std::vector<StreamRole>;
 
+std::ostream &operator<<(std::ostream &out, StreamRole role);
+
 class Stream
 {
 public:
diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
index 686e693bccba..67f308157fbf 100644
--- a/src/libcamera/stream.cpp
+++ b/src/libcamera/stream.cpp
@@ -417,6 +417,25 @@ std::string StreamConfiguration::toString() const
  * acceptable.
  */
 
+/**
+ * \brief Insert a text representation of a StreamRole into an output stream
+ * \param[in] out The output stream
+ * \param[in] role The StreamRole
+ * \return The output stream \a out
+ */
+std::ostream &operator<<(std::ostream &out, StreamRole role)
+{
+	static constexpr std::array<const char *, 4> names{
+		"Raw",
+		"StillCapture",
+		"VideoRecording",
+		"Viewfinder",
+	};
+
+	out << names[static_cast<std::underlying_type_t<StreamRole>>(role)];
+	return out;
+}
+
 /**
  * \typedef StreamRoles
  * \brief A vector of StreamRole
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list