@@ -32,6 +32,7 @@ public:
};
bool isValid() const { return format.isValid(); }
+ bool isRaw() const { return colourEncoding == ColourEncodingRAW; }
static const PixelFormatInfo &info(const PixelFormat &format);
static const PixelFormatInfo &info(const V4L2PixelFormat &format);
@@ -993,6 +993,12 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
* \return True if the pixel format info is valid, false otherwise
*/
+/**
+ * \fn bool PixelFormatInfo::isRaw() const
+ * \brief Check if the colour encoding is raw
+ * \return True if the colour encoding is raw, false otherwise
+ */
+
/**
* \brief Retrieve information about a pixel format
* \param[in] format The pixel format
@@ -1222,8 +1228,7 @@ unsigned int PixelFormatInfo::numPlanes() const
*/
bool isFormatRaw(const libcamera::PixelFormat &pixFmt)
{
- return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==
- libcamera::PixelFormatInfo::ColourEncodingRAW;
+ return libcamera::PixelFormatInfo::info(pixFmt).isRaw();
}
} /* namespace libcamera */
@@ -452,9 +452,8 @@ ISICameraConfiguration::validateYuv(std::set<Stream *> &availableStreams,
/* If the stream is RAW or not supported default it to YUYV. */
const PixelFormatInfo &cfgInfo = PixelFormatInfo::info(cfg.pixelFormat);
- if (cfgInfo.colourEncoding == PixelFormatInfo::ColourEncodingRAW ||
- !formatsMap_.count(cfg.pixelFormat)) {
+ if (cfgInfo.isRaw() || !formatsMap_.count(cfg.pixelFormat)) {
LOG(ISI, Debug) << "Stream " << i << " format: "
<< cfg.pixelFormat << " adjusted to YUYV";
@@ -523,7 +522,7 @@ CameraConfiguration::Status ISICameraConfiguration::validate()
const PixelFormatInfo info = PixelFormatInfo::info(config_[0].pixelFormat);
Status validationStatus;
- if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)
+ if (info.isRaw())
validationStatus = validateRaw(availableStreams, maxResolution);
else
validationStatus = validateYuv(availableStreams, maxResolution);
@@ -651,7 +650,7 @@ StreamConfiguration PipelineHandlerISI::generateYUVConfiguration(Camera *camera,
for (const auto &[pixFmt, pipeFmt] : ISICameraConfiguration::formatsMap_) {
const PixelFormatInfo &info = PixelFormatInfo::info(pixFmt);
- if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)
+ if (info.isRaw())
continue;
streamFormats[pixFmt] = { { kMinISISize, sensorSize } };
@@ -218,7 +218,7 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
for (const StreamConfiguration &cfg : config_) {
const PixelFormatInfo &info = PixelFormatInfo::info(cfg.pixelFormat);
- if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) {
+ if (info.isRaw()) {
rawCount++;
rawSize = std::max(rawSize, cfg.size);
} else {
@@ -286,7 +286,7 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
LOG(IPU3, Debug) << "Validating stream: " << config_[i].toString();
- if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) {
+ if (info.isRaw()) {
/* Initialize the RAW stream with the CIO2 configuration. */
cfg->size = cio2Configuration_.size;
cfg->pixelFormat = cio2Configuration_.pixelFormat;
@@ -651,7 +651,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()
for (const StreamConfiguration &cfg : config_) {
const PixelFormatInfo &info = PixelFormatInfo::info(cfg.pixelFormat);
- if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)
+ if (info.isRaw())
rawFormat = cfg.pixelFormat;
maxSize = std::max(maxSize, cfg.size);
@@ -842,7 +842,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)
Rectangle outputCrop = inputCrop;
const PixelFormat &streamFormat = config->at(0).pixelFormat;
const PixelFormatInfo &info = PixelFormatInfo::info(streamFormat);
- isRaw_ = info.colourEncoding == PixelFormatInfo::ColourEncodingRAW;
+ isRaw_ = info.isRaw();
useDewarper_ = dewarper_ && !isRaw_;
/* YUYV8_2X8 is required on the ISP source path pad for YUV output. */
@@ -188,7 +188,7 @@ RkISP1Path::generateConfiguration(const CameraSensor *sensor, const Size &size,
const PixelFormatInfo &info = PixelFormatInfo::info(format);
/* Populate stream formats for non-RAW configurations. */
- if (info.colourEncoding != PixelFormatInfo::ColourEncodingRAW) {
+ if (!info.isRaw()) {
if (role == StreamRole::Raw)
continue;
@@ -279,7 +279,7 @@ RkISP1Path::validate(const CameraSensor *sensor,
for (const auto &format : streamFormats_) {
const PixelFormatInfo &info = PixelFormatInfo::info(format);
- if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) {
+ if (info.isRaw()) {
/* Skip raw formats not supported by the sensor. */
uint32_t mbusCode = formatToMediaBus.at(format);
if (std::find(mbusCodes.begin(), mbusCodes.end(), mbusCode) ==
@@ -310,8 +310,7 @@ RkISP1Path::validate(const CameraSensor *sensor,
if (sensorConfig && !rawFormat.isValid())
return CameraConfiguration::Invalid;
- bool isRaw = PixelFormatInfo::info(cfg->pixelFormat).colourEncoding ==
- PixelFormatInfo::ColourEncodingRAW;
+ bool isRaw = PixelFormatInfo::info(cfg->pixelFormat).isRaw();
/*
* If no raw format supported by the sensor has been found, use a
There is another common pattern checking for raw colour encoding, present in multiple places: pixelFormatInfo.colourEncoding == PixelFormatInfo::ColourEncodingRAW Let's extract it into a helper too. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> --- include/libcamera/internal/formats.h | 1 + src/libcamera/formats.cpp | 9 +++++++-- src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 7 +++---- src/libcamera/pipeline/ipu3/ipu3.cpp | 4 ++-- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 ++-- src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 7 +++---- 6 files changed, 18 insertions(+), 14 deletions(-)