[libcamera-devel] [PATCH v4 1/3] libcamera: formats: PixelFormatInfo: Add name lookup function

Kaaira Gupta kgupta at es.iitr.ac.in
Mon Jul 27 18:21:41 CEST 2020


Add a function which returns PixelFormatInfo, given format name as
a string.

Signed-off-by: Kaaira Gupta <kgupta at es.iitr.ac.in>
---
 include/libcamera/internal/formats.h |  1 +
 src/libcamera/formats.cpp            | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h
index 0bb1510..b8e4749 100644
--- a/include/libcamera/internal/formats.h
+++ b/include/libcamera/internal/formats.h
@@ -38,6 +38,7 @@ public:
 
 	static const PixelFormatInfo &info(const PixelFormat &format);
 	static const PixelFormatInfo &info(const V4L2PixelFormat &format);
+	static const PixelFormatInfo &info(const std::string &name);
 
 	unsigned int stride(unsigned int width, unsigned int plane,
 			    unsigned int align = 1) const;
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index 11774b0..5f14281 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -663,6 +663,22 @@ const PixelFormatInfo &PixelFormatInfo::info(const V4L2PixelFormat &format)
 	return info->second;
 }
 
+/**
+ * \brief Retrieve information about a pixel format
+ * \param[in] name The name of pixel format
+ * \return The PixelFormatInfo describing the \a name if known, or an
+ * invalid PixelFormatInfo otherwise
+ */
+const PixelFormatInfo &PixelFormatInfo::info(const std::string &name)
+{
+	for (const auto &info : pixelFormatInfo) {
+		if (info.second.name == name)
+			return info.second;
+	}
+
+	return pixelFormatInfoInvalid;
+}
+
 /**
  * \brief Compute the stride
  * \param[in] width The width of the line, in pixels
-- 
2.17.1



More information about the libcamera-devel mailing list