[libcamera-devel] [PATCH/RFC 04/11] libcamera: pixel_format: Make PixelFormat usable as a constexpr

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri May 22 16:54:52 CEST 2020


The PixelFormat class is a lightweight wrapper around a 32-bit FourCC
and a 64-bit modifier. Make is usable as a constexpr.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 include/libcamera/pixel_format.h | 19 +++++++++++++------
 src/libcamera/pixel_format.cpp   | 10 ++--------
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/include/libcamera/pixel_format.h b/include/libcamera/pixel_format.h
index e3b371ef92bb..8dfeb8922418 100644
--- a/include/libcamera/pixel_format.h
+++ b/include/libcamera/pixel_format.h
@@ -18,18 +18,25 @@ namespace libcamera {
 class PixelFormat
 {
 public:
-	PixelFormat();
-	explicit PixelFormat(uint32_t fourcc, uint64_t modifier = 0);
+	constexpr PixelFormat()
+		: fourcc_(0), modifier_(0)
+	{
+	}
+
+	explicit constexpr PixelFormat(uint32_t fourcc, uint64_t modifier = 0)
+		: fourcc_(fourcc), modifier_(modifier)
+	{
+	}
 
 	bool operator==(const PixelFormat &other) const;
 	bool operator!=(const PixelFormat &other) const { return !(*this == other); }
 	bool operator<(const PixelFormat &other) const;
 
-	bool isValid() const { return fourcc_ != 0; }
+	constexpr bool isValid() const { return fourcc_ != 0; }
 
-	operator uint32_t() const { return fourcc_; }
-	uint32_t fourcc() const { return fourcc_; }
-	uint64_t modifier() const { return modifier_; }
+	constexpr operator uint32_t() const { return fourcc_; }
+	constexpr uint32_t fourcc() const { return fourcc_; }
+	constexpr uint64_t modifier() const { return modifier_; }
 
 	std::string toString() const;
 
diff --git a/src/libcamera/pixel_format.cpp b/src/libcamera/pixel_format.cpp
index d8718739152d..d501c5f09c6b 100644
--- a/src/libcamera/pixel_format.cpp
+++ b/src/libcamera/pixel_format.cpp
@@ -25,25 +25,19 @@ namespace libcamera {
  */
 
 /**
+ * \fn PixelFormat::PixelFormat()
  * \brief Construct a PixelFormat with an invalid format
  *
  * PixelFormat instances constructed with the default constructor are
  * invalid, calling the isValid() function returns false.
  */
-PixelFormat::PixelFormat()
-	: fourcc_(0)
-{
-}
 
 /**
+ * \fn PixelFormat::PixelFormat(uint32_t fourcc, uint64_t modifier)
  * \brief Construct a PixelFormat from a DRM FourCC and a modifier
  * \param[in] fourcc A DRM FourCC
  * \param[in] modifier A DRM FourCC modifier
  */
-PixelFormat::PixelFormat(uint32_t fourcc, uint64_t modifier)
-	: fourcc_(fourcc), modifier_(modifier)
-{
-}
 
 /**
  * \brief Compare pixel formats for equality
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list