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>
This commit is contained in:
Kaaira Gupta
2020-06-22 16:33:51 +05:30
committed by Laurent Pinchart
parent c2bfe003e7
commit 2129117df9
5 changed files with 125 additions and 5 deletions

View File

@@ -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 */