diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
index 4f47d85ed6382b36..4b24dd841dd64b64 100644
--- a/include/libcamera/stream.h
+++ b/include/libcamera/stream.h
@@ -13,6 +13,12 @@ class Stream final
 {
 };
 
+struct StreamConfiguration {
+	unsigned int width;
+	unsigned int height;
+	unsigned int pixelFormat;
+};
+
 } /* namespace libcamera */
 
 #endif /* __LIBCAMERA_STREAM_H__ */
diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
index 01f4e5008af8ac46..ef55f947574e241c 100644
--- a/src/libcamera/stream.cpp
+++ b/src/libcamera/stream.cpp
@@ -48,4 +48,30 @@ namespace libcamera {
  * optimal stream for the task.
  */
 
+/**
+ * \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.
+ */
+
 } /* namespace libcamera */
