diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
index 580f2cc8d3a3ad59..e7597dd5a9492c2a 100644
--- a/include/libcamera/stream.h
+++ b/include/libcamera/stream.h
@@ -20,6 +20,16 @@ private:
 	unsigned int id_;
 };
 
+class StreamConfiguration final
+{
+public:
+	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 307de3710d0ac6b1..530668a478a79c94 100644
--- a/src/libcamera/stream.cpp
+++ b/src/libcamera/stream.cpp
@@ -64,4 +64,35 @@ Stream::Stream(unsigned int id)
  * \return The stream ID
  */
 
+/**
+ * \class StreamConfiguration
+ * \brief Configuration parameters for a stream
+ *
+ * The StreamConfiguration class is a model of all information which can be
+ * configured for a single video stream.
+ */
+
+StreamConfiguration::StreamConfiguration()
+	: width(0), height(0), pixelFormat(0)
+{
+}
+
+/**
+ * \var StreamConfiguration::width
+ * \brief Stream width in pixels
+ */
+
+/**
+ * \var StreamConfiguration::height
+ * \brief Stream height in pixels
+ */
+
+/**
+ * \var StreamConfiguration::pixelFormat
+ * \brief Stream pixel format or type of compression
+ *
+ * This is a little endian four character code representation of the pixel
+ * format described in V4L2 using the V4L2_PIX_FMT_* definitions.
+ */
+
 } /* namespace libcamera */
