summaryrefslogtreecommitdiff
path: root/src/libcamera/pixel_format.cpp
diff options
context:
space:
mode:
authorKaaira Gupta <kgupta@es.iitr.ac.in>2020-06-22 16:33:51 +0530
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-06-25 06:47:48 +0300
commit2129117df920699ad83bd231ebe83ca9f0a619da (patch)
tree14d3bd26119dde939f473e883e695e7fe1b28a32 /src/libcamera/pixel_format.cpp
parentc2bfe003e788c2e7cc95fe9b273af0596f5d725f (diff)
libcamera: pixel_format: Replace hex with format names
Print format names defined in formats namespace instead of the hex values in toString() as they are easier to comprehend. For this add a property of 'name' in PixelFormatInfo' so as to map the formats with their names. Print fourcc for formats which are not used in libcamera. Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pixel_format.cpp')
-rw-r--r--src/libcamera/pixel_format.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/libcamera/pixel_format.cpp b/src/libcamera/pixel_format.cpp
index f191851a..14addb51 100644
--- a/src/libcamera/pixel_format.cpp
+++ b/src/libcamera/pixel_format.cpp
@@ -8,6 +8,8 @@
#include <libcamera/formats.h>
#include <libcamera/pixel_format.h>
+#include "libcamera/internal/formats.h"
+
/**
* \file pixel_format.h
* \brief libcamera pixel format
@@ -104,9 +106,28 @@ bool PixelFormat::operator<(const PixelFormat &other) const
*/
std::string PixelFormat::toString() const
{
- char str[11];
- snprintf(str, 11, "0x%08x", fourcc_);
- return str;
+ const PixelFormatInfo &info = PixelFormatInfo::info(*this);
+
+ if (!info.isValid()) {
+ if (*this == PixelFormat())
+ return "<INVALID>";
+
+ char fourcc[7] = { '<',
+ static_cast<char>(fourcc_),
+ static_cast<char>(fourcc_ >> 8),
+ static_cast<char>(fourcc_ >> 16),
+ static_cast<char>(fourcc_ >> 24),
+ '>' };
+
+ for (unsigned int i = 1; i < 5; i++) {
+ if (!isprint(fourcc[i]))
+ fourcc[i] = '.';
+ }
+
+ return fourcc;
+ }
+
+ return info.name;
}
} /* namespace libcamera */