summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libcamera/internal/formats.h2
-rw-r--r--src/libcamera/formats.cpp18
2 files changed, 20 insertions, 0 deletions
diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h
index b8e47491..51a8a6b8 100644
--- a/include/libcamera/internal/formats.h
+++ b/include/libcamera/internal/formats.h
@@ -46,6 +46,8 @@ public:
unsigned int frameSize(const Size &size,
const std::array<unsigned int, 3> &strides) const;
+ unsigned int numPlanes() const;
+
/* \todo Add support for non-contiguous memory planes */
const char *name;
PixelFormat format;
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index a51e9681..ebaae9be 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -821,4 +821,22 @@ PixelFormatInfo::frameSize(const Size &size,
return sum;
}
+/**
+ * \brief Retrieve the number of planes represented by the format
+ * \return The number of planes used by the format
+ */
+unsigned int PixelFormatInfo::numPlanes() const
+{
+ unsigned int count = 0;
+
+ for (const PixelFormatPlaneInfo &p : planes) {
+ if (p.bytesPerGroup == 0)
+ break;
+
+ count++;
+ }
+
+ return count;
+}
+
} /* namespace libcamera */