diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
index 111f2c933efa..3e8e83a2ff24 100644
--- a/include/libcamera/stream.h
+++ b/include/libcamera/stream.h
@@ -11,23 +11,31 @@
 
 namespace libcamera {
 
+class Camera;
+
+struct StreamConfiguration {
+	unsigned int width;
+	unsigned int height;
+	unsigned int pixelFormat;
+
+	unsigned int bufferCount;
+};
+
 class Stream final
 {
 public:
 	Stream();
 	BufferPool &bufferPool() { return bufferPool_; }
+	const StreamConfiguration &configuration() const { return configuration_; }
 
 private:
+	friend Camera;
+
 	BufferPool bufferPool_;
+	StreamConfiguration configuration_;
 };
 
-struct StreamConfiguration {
-	unsigned int width;
-	unsigned int height;
-	unsigned int pixelFormat;
 
-	unsigned int bufferCount;
-};
 
 } /* namespace libcamera */
 
diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
index b6238946a8d5..c4943c91b2e6 100644
--- a/src/libcamera/stream.cpp
+++ b/src/libcamera/stream.cpp
@@ -29,6 +29,37 @@
 
 namespace libcamera {
 
+/**
+ * \struct StreamConfiguration
+ * \brief Configuration parameters for a stream
+ *
+ * The StreamConfiguration structure models all information which can be
+ * configured for a single video stream.
+ */
+
+/**
+ * \var StreamConfiguration::width
+ * \brief Stream width in pixels
+ */
+
+/**
+ * \var StreamConfiguration::height
+ * \brief Stream height in pixels
+ */
+
+/**
+ * \var StreamConfiguration::pixelFormat
+ * \brief Stream pixel format
+ *
+ * This is a little endian four character code representation of the pixel
+ * format described in V4L2 using the V4L2_PIX_FMT_* definitions.
+ */
+
+/**
+ * \var StreamConfiguration::bufferCount
+ * \brief Requested number of buffers to allocate for the stream
+ */
+
 /**
  * \class Stream
  * \brief Video stream for a camera
@@ -66,34 +97,9 @@ Stream::Stream()
  */
 
 /**
- * \struct StreamConfiguration
- * \brief Configuration parameters for a stream
- *
- * The StreamConfiguration structure models all information which can be
- * configured for a single video stream.
- */
-
-/**
- * \var StreamConfiguration::width
- * \brief Stream width in pixels
- */
-
-/**
- * \var StreamConfiguration::height
- * \brief Stream height in pixels
- */
-
-/**
- * \var StreamConfiguration::pixelFormat
- * \brief Stream pixel format
- *
- * This is a little endian four character code representation of the pixel
- * format described in V4L2 using the V4L2_PIX_FMT_* definitions.
- */
-
-/**
- * \var StreamConfiguration::bufferCount
- * \brief Requested number of buffers to allocate for the stream
+ * \fn Stream::configuration()
+ * \brief Retrieve the active configuration of the stream
+ * \return The active configuration of the stream
  */
 
 } /* namespace libcamera */
