diff --git a/include/libcamera/orientation.h b/include/libcamera/orientation.h
index a3b40e63..f0ef8f1c 100644
--- a/include/libcamera/orientation.h
+++ b/include/libcamera/orientation.h
@@ -24,6 +24,7 @@ enum class Orientation {
 };
 
 Orientation orientationFromRotation(int angle, bool *success = nullptr);
+std::string orientationToString(const Orientation &orientation);
 
 std::ostream &operator<<(std::ostream &out, const Orientation &orientation);
 
diff --git a/src/libcamera/orientation.cpp b/src/libcamera/orientation.cpp
index 7d7d21ae..f5493673 100644
--- a/src/libcamera/orientation.cpp
+++ b/src/libcamera/orientation.cpp
@@ -8,6 +8,7 @@
 #include <libcamera/orientation.h>
 
 #include <array>
+#include <sstream>
 
 /**
  * \file orientation.h
@@ -91,6 +92,19 @@ Orientation orientationFromRotation(int angle, bool *success)
 	return Orientation::Rotate0;
 }
 
+/**
+ * \brief Generate a string representation of \a orientation item
+ * \param[in] orientation The Orientation item
+ * \return A std::string representation for \a orientation
+ */
+std::string orientationToString(const Orientation &orientation)
+{
+	std::stringstream ss;
+	ss << orientation;
+
+	return ss.str();
+}
+
 /**
  * \brief Prints human-friendly names for Orientation items
  * \param[in] out The output stream
