From 9f9c224c7bb91e0123b75901a7ccf54d1226504d Mon Sep 17 00:00:00 2001 From: Paul Elder Date: Wed, 8 Sep 2021 16:48:58 +0900 Subject: libcamera: v4l2_pixelformat: Add helper function to get the description Add a helper function to V4L2PixelFormat for retrieving the V4L2 description string. Signed-off-by: Paul Elder Reviewed-by: Laurent Pinchart Reviewed-by: Jean-Michel Hautbois --- include/libcamera/internal/v4l2_pixelformat.h | 1 + src/libcamera/v4l2_pixelformat.cpp | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/libcamera/internal/v4l2_pixelformat.h b/include/libcamera/internal/v4l2_pixelformat.h index 87872542..e3cda699 100644 --- a/include/libcamera/internal/v4l2_pixelformat.h +++ b/include/libcamera/internal/v4l2_pixelformat.h @@ -40,6 +40,7 @@ public: operator uint32_t() const { return fourcc_; } std::string toString() const; + const char *description() const; PixelFormat toPixelFormat() const; static V4L2PixelFormat fromPixelFormat(const PixelFormat &pixelFormat, diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp index 2c8167a7..3649c600 100644 --- a/src/libcamera/v4l2_pixelformat.cpp +++ b/src/libcamera/v4l2_pixelformat.cpp @@ -250,6 +250,28 @@ std::string V4L2PixelFormat::toString() const return ss; } +/** + * \brief Retrieve the V4L2 description for the format + * + * The description matches the value used by the kernel, as would be reported + * by the VIDIOC_ENUM_FMT ioctl. + * + * \return The V4L2 description corresponding to the V4L2 format, or a + * placeholder description if not found + */ +const char *V4L2PixelFormat::description() const +{ + const auto iter = vpf2pf.find(*this); + if (iter == vpf2pf.end()) { + LOG(V4L2, Warning) + << "Unsupported V4L2 pixel format " + << toString(); + return "Unsupported format"; + } + + return iter->second.description; +} + /** * \brief Convert the V4L2 pixel format to the corresponding PixelFormat * \return The PixelFormat corresponding to the V4L2 pixel format -- cgit v1.2.1