diff options
author | Kaaira Gupta <kgupta@es.iitr.ac.in> | 2020-06-22 16:33:51 +0530 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-06-25 06:47:48 +0300 |
commit | 2129117df920699ad83bd231ebe83ca9f0a619da (patch) | |
tree | 14d3bd26119dde939f473e883e695e7fe1b28a32 /src/libcamera/pixel_format.cpp | |
parent | c2bfe003e788c2e7cc95fe9b273af0596f5d725f (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.cpp | 27 |
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 */ |