[libcamera-devel,v3,1/2] camera_sensor: ipa: core: Add CFA pattern to IPACameraSensorInfo
diff mbox series

Message ID 20230605082605.9993-2-naush@raspberrypi.com
State Accepted
Commit 54340ef70f7ece5354dd4b62cecf833da400fdd9
Headers show
Series
  • Mono sensor improvements
Related show

Commit Message

Naushir Patuck June 5, 2023, 8:26 a.m. UTC
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>
---
 include/libcamera/ipa/core.mojom | 13 +++++++++++++
 src/libcamera/camera_sensor.cpp  |  3 +++
 2 files changed, 16 insertions(+)

Patch
diff mbox series

diff --git a/include/libcamera/ipa/core.mojom b/include/libcamera/ipa/core.mojom
index 5cef340d014c..bce797245829 100644
--- a/include/libcamera/ipa/core.mojom
+++ b/include/libcamera/ipa/core.mojom
@@ -140,6 +140,18 @@  module libcamera;
  * 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
  * \brief The size of the pixel array active area of the sensor
@@ -229,6 +241,7 @@  struct IPACameraSensorInfo {
 	string model;
 
 	uint32 bitsPerPixel;
+	uint32 cfaPattern;
 
 	Size activeAreaSize;
 	Rectangle analogCrop;
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 06f315210240..60bf87b49e6e 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -956,6 +956,9 @@  int CameraSensor::sensorInfo(IPACameraSensorInfo *info) const
 	info->bitsPerPixel = format.bitsPerPixel();
 	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
 	 * duration through V4L2 controls. Support for the V4L2_CID_PIXEL_RATE,