[libcamera-devel] [PATCH v3 1/3] libcamera: formats: PixelFormatInfo: Add name lookup function
Kaaira Gupta
kgupta at es.iitr.ac.in
Mon Jul 27 17:18:18 CEST 2020
Add a function which returns a format, given its 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 | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h
index 0bb1510..2589e88 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 PixelFormat &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..8ea5461 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -23,6 +23,8 @@ namespace libcamera {
LOG_DEFINE_CATEGORY(Formats)
+const PixelFormat invalidPixelFormat = PixelFormat();
+
/**
* \class PixelFormatPlaneInfo
* \brief Information about a single plane of a pixel format
@@ -663,6 +665,24 @@ const PixelFormatInfo &PixelFormatInfo::info(const V4L2PixelFormat &format)
return info->second;
}
+/**
+ * \brief Retrieve pixel format from its name
+ * \param[in] name The name of pixel format
+ * \return The pixel format corresponding to \a name if known, or an invalid
+ * pixel format otherwise
+ */
+const PixelFormat &PixelFormatInfo::info(const std::string &name)
+{
+ auto it = pixelFormatInfo.begin();
+ while (it != pixelFormatInfo.end()) {
+ if (it->second.name == name) {
+ return it->first;
+ }
+ it++;
+ }
+ return invalidPixelFormat;
+}
+
/**
* \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