camera_sensor: ipa: core: Add CFA pattern to IPACameraSensorInfo

Add a new cfaPattern field to the IPACameraSensorInfo to pass the
CFA/Bayer pattern for the current sensor configuration to the IPA.
This field takes a value from properties::draft::ColorFilterArrangementEnum.

Populate cfaPattern in CameraSensor::sensorInfo(), called by the
pipeline handler before it calls ipa->init() and ipa->config().

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Naushir Patuck 2023-06-05 09:26:04 +01:00 committed by Laurent Pinchart
parent f44df6f4fa
commit 54340ef70f
2 changed files with 16 additions and 0 deletions

View file

@ -140,6 +140,18 @@ module libcamera;
* image sensor * image sensor
*/ */
/**
* \var IPACameraSensorInfo::cfaPattern
* \brief The arrangement of colour filters on the image sensor
*
* This takes a value defined by properties::draft::ColorFilterArrangementEnum.
* For non-Bayer colour sensors, the cfaPattern will be set to
* properties::draft::ColorFilterArrangementEnum::RGB.
*
* \todo Make this variable optional once mojom supports it, instead of using
* RGB for sensors that don't have a CFA.
*/
/** /**
* \var IPACameraSensorInfo::activeAreaSize * \var IPACameraSensorInfo::activeAreaSize
* \brief The size of the pixel array active area of the sensor * \brief The size of the pixel array active area of the sensor
@ -229,6 +241,7 @@ struct IPACameraSensorInfo {
string model; string model;
uint32 bitsPerPixel; uint32 bitsPerPixel;
uint32 cfaPattern;
Size activeAreaSize; Size activeAreaSize;
Rectangle analogCrop; Rectangle analogCrop;

View file

@ -956,6 +956,9 @@ int CameraSensor::sensorInfo(IPACameraSensorInfo *info) const
info->bitsPerPixel = format.bitsPerPixel(); info->bitsPerPixel = format.bitsPerPixel();
info->outputSize = format.size; info->outputSize = format.size;
std::optional<int32_t> cfa = properties_.get(properties::draft::ColorFilterArrangement);
info->cfaPattern = cfa ? *cfa : properties::draft::RGB;
/* /*
* Retrieve the pixel rate, line length and minimum/maximum frame * Retrieve the pixel rate, line length and minimum/maximum frame
* duration through V4L2 controls. Support for the V4L2_CID_PIXEL_RATE, * duration through V4L2 controls. Support for the V4L2_CID_PIXEL_RATE,