[libcamera-devel] [PATCH v4 11/16] libcamera: stream: StreamConfiguration: Add StreamFormats information

Niklas Söderlund niklas.soderlund at ragnatech.se
Wed Jun 19 04:51:24 CEST 2019


Allow StreamFormats to be associated to a StreamConfiguration. The
intention is that pipeline handlers should associate formats to a
StreamConfiguration when it's created in generateConfiguration().

Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 include/libcamera/stream.h |  8 ++++----
 src/libcamera/stream.cpp   | 25 +++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
index 48daf5ac23f55d85..5b4fea324ce449b1 100644
--- a/include/libcamera/stream.h
+++ b/include/libcamera/stream.h
@@ -35,10 +35,8 @@ private:
 };
 
 struct StreamConfiguration {
-	StreamConfiguration()
-		: stream_(nullptr)
-	{
-	}
+	StreamConfiguration();
+	StreamConfiguration(const StreamFormats &formats);
 
 	unsigned int pixelFormat;
 	Size size;
@@ -47,11 +45,13 @@ struct StreamConfiguration {
 
 	Stream *stream() const { return stream_; }
 	void setStream(Stream *stream) { stream_ = stream; }
+	const StreamFormats &formats() const { return formats_; }
 
 	std::string toString() const;
 
 private:
 	Stream *stream_;
+	StreamFormats formats_;
 };
 
 enum StreamRole {
diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
index bfb072d691ae0e25..cfa7a327fdd0f1a8 100644
--- a/src/libcamera/stream.cpp
+++ b/src/libcamera/stream.cpp
@@ -270,6 +270,19 @@ SizeRange StreamFormats::range(unsigned int pixelformat) const
  * configured for a single video stream.
  */
 
+StreamConfiguration::StreamConfiguration()
+	: stream_(nullptr)
+{
+}
+
+/**
+ * \brief Construct a configuration with stream formats
+ */
+StreamConfiguration::StreamConfiguration(const StreamFormats &formats)
+	: stream_(nullptr), formats_(formats)
+{
+}
+
 /**
  * \var StreamConfiguration::size
  * \brief Stream size in pixels
@@ -310,6 +323,18 @@ SizeRange StreamFormats::range(unsigned int pixelformat) const
  * \param[in] stream The stream
  */
 
+/**
+ * \fn StreamConfiguration::formats()
+ * \brief Retrieve advisory stream format information
+ *
+ * This method retrieves information about the pixel formats and sizes supported
+ * by the stream configuration. The sizes are advisory and not all of them are
+ * guaranteed to be supported by the stream. Users shall always inspect the size
+ * in the stream configuration after calling CameraConfiguration::validate().
+ *
+ * \return Stream formats information
+ */
+
 /**
  * \brief Assemble and return a string describing the configuration
  *
-- 
2.21.0



More information about the libcamera-devel mailing list