From c4b75cb66c5671e6494ce9ec0aa661ce1b90572d Mon Sep 17 00:00:00 2001 From: Kaaira Gupta Date: Mon, 27 Jul 2020 21:51:41 +0530 Subject: libcamera: formats: PixelFormatInfo: Add name lookup function Add a function which returns PixelFormatInfo, given format name as a string. Signed-off-by: Kaaira Gupta Reviewed-by: Kieran Bingham Signed-off-by: Kieran Bingham --- 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 0bb15104..b8e47491 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 cd63c15c..a51e9681 100644 --- a/src/libcamera/formats.cpp +++ b/src/libcamera/formats.cpp @@ -703,6 +703,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 PixelFormat matching 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 -- cgit v1.2.1