[libcamera-devel] [PATCH 4/6] libcamera: PixelFormatInfo: Add methods bytesPerLine and imageSize
Paul Elder
paul.elder at ideasonboard.com
Mon Jun 29 17:14:09 CEST 2020
Add instance methods to PixelFormatInfo for calculating bytes-per-line
and image size. This will simplify existing code that calculates these
things.
Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
include/libcamera/internal/formats.h | 3 +++
src/libcamera/formats.cpp | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h
index 3c7440a..1372a43 100644
--- a/include/libcamera/internal/formats.h
+++ b/include/libcamera/internal/formats.h
@@ -46,6 +46,9 @@ public:
static const PixelFormatInfo &info(const PixelFormat &format);
static const PixelFormatInfo &info(const V4L2PixelFormat &format);
+ unsigned int bytesPerLine(unsigned int width);
+ unsigned int imageSize(unsigned int width, unsigned int height);
+
const char *name;
PixelFormat format;
V4L2PixelFormat v4l2Format;
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index 7029a94..dc1d348 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -7,12 +7,16 @@
#include "libcamera/internal/formats.h"
+#include <algorithm>
#include <errno.h>
#include <libcamera/formats.h>
#include "libcamera/internal/log.h"
+
+#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+
/**
* \file internal/formats.h
* \brief Types and helper methods to handle libcamera image formats
@@ -670,4 +674,21 @@ const PixelFormatInfo &PixelFormatInfo::info(const V4L2PixelFormat &format)
return info->second;
}
+unsigned int PixelFormatInfo::bytesPerLine(unsigned int width)
+{
+ if (!isValid())
+ return 0;
+
+ return DIV_ROUND_UP(width, pixelsPerGroup) * bytesPerGroup;
+
+}
+
+unsigned int PixelFormatInfo::imageSize(unsigned int width, unsigned int height)
+{
+ if (!isValid())
+ return 0;
+
+ return height * bytesPerLine(width);
+}
+
} /* namespace libcamera */
--
2.27.0
More information about the libcamera-devel
mailing list