[libcamera-devel] [PATCH v1 1/6] ipa: mojom: Move CameraSensorInfo struct exclusively to IPA IPC

Umang Jain umang.jain at ideasonboard.com
Fri May 14 09:58:03 CEST 2021


CameraSensorInfo structure is designed to pass in camera sensor related
information from pipeline-handler to IPA. Since the pipeline-hander
and IPA are connected via mojom IPC IPA interface, the interface
itself provides a more suitable placement of CameraSensorInfo,
instead of camera_sensor.h (which is a libcamera internal header
ultimately, at this point).

As CameraSensorInfo is already defined in core.mojom, it is just
a matter of removing [skipHeader] tag to allow code-generation
of CameraSensorInfo. To be consistent with naming scheme, the
existing CameraSensorInfo is renamed to IPACameraSensorInfo.

Since doxygen cannot directly generate documentation from the .mojom
files, the core.mojom documentation is also moved to a new .cpp file.

Finally, update header paths to include IPACameraSensorInfo definition
from IPA interfaces instead of "libcamera/internal/camera_sensor.h".

Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
---
 Documentation/Doxyfile.in                     |   4 +-
 Documentation/meson.build                     |   1 +
 include/libcamera/internal/camera_sensor.h    |  19 +-
 include/libcamera/ipa/core.mojom              |   2 +-
 include/libcamera/ipa/core_ipa_interface.cpp  | 190 ++++++++++++++++++
 include/libcamera/ipa/ipa_interface.h         |   2 -
 include/libcamera/ipa/meson.build             |   4 +
 include/libcamera/ipa/raspberrypi.mojom       |   2 +-
 include/libcamera/ipa/rkisp1.mojom            |   2 +-
 src/ipa/ipu3/ipu3_agc.cpp                     |   2 +-
 src/ipa/raspberrypi/raspberrypi.cpp           |   9 +-
 src/ipa/rkisp1/rkisp1.cpp                     |   6 +-
 src/libcamera/camera_sensor.cpp               | 117 +----------
 src/libcamera/pipeline/ipu3/ipu3.cpp          |   4 +-
 .../pipeline/raspberrypi/raspberrypi.cpp      |   4 +-
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      |   2 +-
 16 files changed, 218 insertions(+), 152 deletions(-)
 create mode 100644 include/libcamera/ipa/core_ipa_interface.cpp

diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in
index af006724..213adb9b 100644
--- a/Documentation/Doxyfile.in
+++ b/Documentation/Doxyfile.in
@@ -844,7 +844,6 @@ EXCLUDE                = @TOP_SRCDIR@/include/libcamera/span.h \
 			 @TOP_SRCDIR@/src/libcamera/pipeline/ \
 			 @TOP_SRCDIR@/src/libcamera/tracepoints.cpp \
 			 @TOP_BUILDDIR@/include/libcamera/internal/tracepoints.h \
-			 @TOP_BUILDDIR@/include/libcamera/ipa/ \
 			 @TOP_BUILDDIR@/src/libcamera/proxy/
 
 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
@@ -861,7 +860,8 @@ EXCLUDE_SYMLINKS       = NO
 # Note that the wildcards are matched against the file with absolute path, so to
 # exclude all test directories for example use the pattern */test/*
 
-EXCLUDE_PATTERNS       =
+EXCLUDE_PATTERNS       = @TOP_BUILDDIR@/include/libcamera/ipa/*_serializer.h \
+			 @TOP_BUILDDIR@/include/libcamera/ipa/*_proxy.h
 
 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
 # (namespaces, classes, functions, etc.) that should be excluded from the
diff --git a/Documentation/meson.build b/Documentation/meson.build
index c8521574..86f1134b 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -23,6 +23,7 @@ if doxygen.found() and dot.found()
                   input : [
                       doxyfile,
                       libcamera_internal_headers,
+                      libcamera_ipa_docs,
                       libcamera_ipa_headers,
                       libcamera_public_headers,
                       libcamera_sources,
diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
index 2a5c51a1..cf6c1c1e 100644
--- a/include/libcamera/internal/camera_sensor.h
+++ b/include/libcamera/internal/camera_sensor.h
@@ -14,6 +14,7 @@
 #include <libcamera/class.h>
 #include <libcamera/controls.h>
 #include <libcamera/geometry.h>
+#include <libcamera/ipa/core_ipa_interface.h>
 
 #include "libcamera/internal/formats.h"
 #include "libcamera/internal/log.h"
@@ -24,22 +25,6 @@ namespace libcamera {
 class BayerFormat;
 class MediaEntity;
 
-struct CameraSensorInfo {
-	std::string model;
-
-	uint32_t bitsPerPixel;
-
-	Size activeAreaSize;
-	Rectangle analogCrop;
-	Size outputSize;
-
-	uint64_t pixelRate;
-	uint32_t lineLength;
-
-	uint32_t minFrameLength;
-	uint32_t maxFrameLength;
-};
-
 class CameraSensor : protected Loggable
 {
 public:
@@ -66,7 +51,7 @@ public:
 	V4L2Subdevice *device() { return subdev_.get(); }
 
 	const ControlList &properties() const { return properties_; }
-	int sensorInfo(CameraSensorInfo *info) const;
+	int sensorInfo(IPACameraSensorInfo *info) const;
 
 	void updateControlInfo();
 
diff --git a/include/libcamera/ipa/core.mojom b/include/libcamera/ipa/core.mojom
index 6caaa63e..06ca87c7 100644
--- a/include/libcamera/ipa/core.mojom
+++ b/include/libcamera/ipa/core.mojom
@@ -78,7 +78,7 @@ module libcamera;
 	uint32 height;
 };
 
-[skipHeader] struct CameraSensorInfo {
+struct IPACameraSensorInfo {
 	string model;
 
 	uint32 bitsPerPixel;
diff --git a/include/libcamera/ipa/core_ipa_interface.cpp b/include/libcamera/ipa/core_ipa_interface.cpp
new file mode 100644
index 00000000..19f769ce
--- /dev/null
+++ b/include/libcamera/ipa/core_ipa_interface.cpp
@@ -0,0 +1,190 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+namespace libcamera {
+
+/**
+ * \struct IPACameraSensorInfo
+ * \brief Report the image sensor characteristics
+ *
+ * The structure reports image sensor characteristics used by IPA modules to
+ * tune their algorithms based on the image sensor model currently in use and
+ * its configuration.
+ *
+ * The reported information describes the sensor's intrinsics characteristics,
+ * such as its pixel array size and the sensor model name, as well as
+ * information relative to the currently configured mode, such as the produced
+ * image size and the bit depth of the requested image format.
+ *
+ * Instances of this structure are meant to be assembled by the CameraSensor
+ * class by inspecting the sensor static properties as well as information
+ * relative to the current configuration.
+ */
+
+/**
+ * \var IPACameraSensorInfo::model
+ * \brief The image sensor model name
+ *
+ * The sensor model name is a free-formed string that uniquely identifies the
+ * sensor model.
+ */
+
+/**
+ * \var IPACameraSensorInfo::bitsPerPixel
+ * \brief The number of bits per pixel of the image format produced by the
+ * image sensor
+ */
+
+/**
+ * \var IPACameraSensorInfo::activeAreaSize
+ * \brief The size of the pixel array active area of the sensor
+ */
+
+/**
+ * \var IPACameraSensorInfo::analogCrop
+ * \brief The portion of the pixel array active area which is read-out and
+ * processed
+ *
+ * The analog crop rectangle top-left corner is defined as the displacement
+ * from the top-left corner of the pixel array active area. The rectangle
+ * horizontal and vertical sizes define the portion of the pixel array which
+ * is read-out and provided to the sensor's internal processing pipeline, before
+ * any pixel sub-sampling method, such as pixel binning, skipping and averaging
+ * take place.
+ */
+
+/**
+ * \var IPACameraSensorInfo::outputSize
+ * \brief The size of the images produced by the camera sensor
+ *
+ * The output image size defines the horizontal and vertical sizes of the images
+ * produced by the image sensor. The output image size is defined as the end
+ * result of the sensor's internal image processing pipeline stages, applied on
+ * the pixel array portion defined by the analog crop rectangle. Each image
+ * processing stage that performs pixel sub-sampling techniques, such as pixel
+ * binning or skipping, or perform any additional digital scaling concur in the
+ * definition of the output image size.
+ */
+
+/**
+ * \var IPACameraSensorInfo::pixelRate
+ * \brief The number of pixels produced in a second
+ *
+ * To obtain the read-out time in seconds of a full line:
+ *
+ * \verbatim
+	lineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)
+   \endverbatim
+ */
+
+/**
+ * \var IPACameraSensorInfo::lineLength
+ * \brief Total line length in pixels
+ *
+ * The total line length in pixel clock periods, including blanking.
+ */
+
+/**
+ * \var IPACameraSensorInfo::minFrameLength
+ * \brief The minimum allowable frame length in units of lines
+ *
+ * The sensor frame length comprises of active output lines and blanking lines
+ * in a frame. The minimum frame length value dictates the minimum allowable
+ * frame duration of the sensor mode.
+ *
+ * To obtain the minimum frame duration:
+ *
+ * \verbatim
+	frameDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)
+   \endverbatim
+ */
+
+/**
+ * \var IPACameraSensorInfo::maxFrameLength
+ * \brief The maximum allowable frame length in units of lines
+ *
+ * The sensor frame length comprises of active output lines and blanking lines
+ * in a frame. The maximum frame length value dictates the maximum allowable
+ * frame duration of the sensor mode.
+ *
+ * To obtain the maximum frame duration:
+ *
+ * \verbatim
+	frameDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)
+   \endverbatim
+ */
+
+/**
+ * \struct IPABuffer
+ * \brief Buffer information for the IPA interface
+ *
+ * The IPABuffer structure associates buffer memory with a unique ID. It is
+ * used to map buffers to the IPA with IPAInterface::mapBuffers(), after which
+ * buffers will be identified by their ID in the IPA interface.
+ */
+
+/**
+ * \var IPABuffer::id
+ * \brief The buffer unique ID
+ *
+ * Buffers mapped to the IPA are identified by numerical unique IDs. The IDs
+ * are chosen by the pipeline handler to fulfil the following constraints:
+ *
+ * - IDs shall be positive integers different than zero
+ * - IDs shall be unique among all mapped buffers
+ *
+ * When buffers are unmapped with IPAInterface::unmapBuffers() their IDs are
+ * freed and may be reused for new buffer mappings.
+ */
+
+/**
+ * \var IPABuffer::planes
+ * \brief The buffer planes description
+ *
+ * Stores the dmabuf handle and length for each plane of the buffer.
+ */
+
+/**
+ * \struct IPASettings
+ * \brief IPA interface initialization settings
+ *
+ * The IPASettings structure stores data passed to the IPAInterface::init()
+ * function. The data contains settings that don't depend on a particular camera
+ * or pipeline configuration and are valid for the whole life time of the IPA
+ * interface.
+ */
+
+/**
+ * \var IPASettings::configurationFile
+ * \brief The name of the IPA configuration file
+ *
+ * This field may be an empty string if the IPA doesn't require a configuration
+ * file.
+ */
+
+/**
+ * \var IPASettings::sensorModel
+ * \brief The sensor model name
+ *
+ * Provides the sensor model name to the IPA.
+ */
+
+/**
+ * \struct IPAStream
+ * \brief Stream configuration for the IPA interface
+ *
+ * The IPAStream structure stores stream configuration parameters needed by the
+ * IPAInterface::configure() method. It mirrors the StreamConfiguration class
+ * that is not suitable for this purpose due to not being serializable.
+ */
+
+/**
+ * \var IPAStream::pixelFormat
+ * \brief The stream pixel format
+ */
+
+/**
+ * \var IPAStream::size
+ * \brief The stream size in pixels
+ */
+
+} /* namespace libcamera */
diff --git a/include/libcamera/ipa/ipa_interface.h b/include/libcamera/ipa/ipa_interface.h
index dfe1b40a..4aefaa71 100644
--- a/include/libcamera/ipa/ipa_interface.h
+++ b/include/libcamera/ipa/ipa_interface.h
@@ -18,8 +18,6 @@
 #include <libcamera/geometry.h>
 #include <libcamera/signal.h>
 
-#include "libcamera/internal/camera_sensor.h"
-
 namespace libcamera {
 
 /*
diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build
index 40c4e737..69bc855e 100644
--- a/include/libcamera/ipa/meson.build
+++ b/include/libcamera/ipa/meson.build
@@ -6,6 +6,10 @@ libcamera_ipa_headers = files([
     'ipa_module_info.h',
 ])
 
+libcamera_ipa_docs = files([
+    'core_ipa_interface.cpp',
+])
+
 install_headers(libcamera_ipa_headers,
                 subdir: libcamera_include_dir / 'ipa')
 
diff --git a/include/libcamera/ipa/raspberrypi.mojom b/include/libcamera/ipa/raspberrypi.mojom
index 42321bee..0a21f453 100644
--- a/include/libcamera/ipa/raspberrypi.mojom
+++ b/include/libcamera/ipa/raspberrypi.mojom
@@ -63,7 +63,7 @@ interface IPARPiInterface {
 	 * The \a ipaConfig and \a controls parameters carry data passed by the
 	 * pipeline handler to the IPA and back.
 	 */
-	configure(libcamera.CameraSensorInfo sensorInfo,
+	configure(libcamera.IPACameraSensorInfo sensorInfo,
 		  map<uint32, libcamera.IPAStream> streamConfig,
 		  map<uint32, libcamera.ControlInfoMap> entityControls,
 		  IPAConfig ipaConfig)
diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom
index cca871a0..66a4607c 100644
--- a/include/libcamera/ipa/rkisp1.mojom
+++ b/include/libcamera/ipa/rkisp1.mojom
@@ -29,7 +29,7 @@ interface IPARkISP1Interface {
 	start() => (int32 ret);
 	stop();
 
-	configure(libcamera.CameraSensorInfo sensorInfo,
+	configure(libcamera.IPACameraSensorInfo sensorInfo,
 		  map<uint32, libcamera.IPAStream> streamConfig,
 		  map<uint32, libcamera.ControlInfoMap> entityControls)
 		=> (int32 ret);
diff --git a/src/ipa/ipu3/ipu3_agc.cpp b/src/ipa/ipu3/ipu3_agc.cpp
index ca54d89a..3adcadf4 100644
--- a/src/ipa/ipu3/ipu3_agc.cpp
+++ b/src/ipa/ipu3/ipu3_agc.cpp
@@ -39,7 +39,7 @@ static constexpr uint32_t kMaxGain = kMaxISO / 100;
 static constexpr uint32_t kMinExposure = 1;
 static constexpr uint32_t kMaxExposure = 1976;
 
-/* \todo those should be get from CameraSensorInfo ! */
+/* \todo those should be get from IPACameraSensorInfo ! */
 /* line duration in microseconds */
 static constexpr double kLineDuration = 16.8;
 static constexpr double kMaxExposureTime = kMaxExposure * kLineDuration;
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index 52d91db2..e5bb8159 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -25,7 +25,6 @@
 #include <libcamera/span.h>
 
 #include "libcamera/internal/buffer.h"
-#include "libcamera/internal/camera_sensor.h"
 #include "libcamera/internal/log.h"
 
 #include <linux/bcm2835-isp.h>
@@ -90,7 +89,7 @@ public:
 	void start(const ControlList &controls, ipa::RPi::StartConfig *startConfig) override;
 	void stop() override {}
 
-	int configure(const CameraSensorInfo &sensorInfo,
+	int configure(const IPACameraSensorInfo &sensorInfo,
 		      const std::map<unsigned int, IPAStream> &streamConfig,
 		      const std::map<unsigned int, ControlInfoMap> &entityControls,
 		      const ipa::RPi::IPAConfig &data,
@@ -102,7 +101,7 @@ public:
 	void signalIspPrepare(const ipa::RPi::ISPConfig &data) override;
 
 private:
-	void setMode(const CameraSensorInfo &sensorInfo);
+	void setMode(const IPACameraSensorInfo &sensorInfo);
 	bool validateSensorControls();
 	bool validateIspControls();
 	void queueRequest(const ControlList &controls);
@@ -279,7 +278,7 @@ void IPARPi::start(const ControlList &controls, ipa::RPi::StartConfig *startConf
 	lastRunTimestamp_ = 0;
 }
 
-void IPARPi::setMode(const CameraSensorInfo &sensorInfo)
+void IPARPi::setMode(const IPACameraSensorInfo &sensorInfo)
 {
 	mode_.bitdepth = sensorInfo.bitsPerPixel;
 	mode_.width = sensorInfo.outputSize.width;
@@ -324,7 +323,7 @@ void IPARPi::setMode(const CameraSensorInfo &sensorInfo)
 	mode_.max_frame_length = sensorInfo.maxFrameLength;
 }
 
-int IPARPi::configure(const CameraSensorInfo &sensorInfo,
+int IPARPi::configure(const IPACameraSensorInfo &sensorInfo,
 		      [[maybe_unused]] const std::map<unsigned int, IPAStream> &streamConfig,
 		      const std::map<unsigned int, ControlInfoMap> &entityControls,
 		      const ipa::RPi::IPAConfig &ipaConfig,
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index 6d45673c..b47ea324 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -37,7 +37,7 @@ public:
 	int start() override;
 	void stop() override {}
 
-	int configure(const CameraSensorInfo &info,
+	int configure(const IPACameraSensorInfo &info,
 		      const std::map<uint32_t, IPAStream> &streamConfig,
 		      const std::map<uint32_t, ControlInfoMap> &entityControls) override;
 	void mapBuffers(const std::vector<IPABuffer> &buffers) override;
@@ -90,12 +90,12 @@ int IPARkISP1::start()
 }
 
 /**
- * \todo The RkISP1 pipeline currently provides an empty CameraSensorInfo
+ * \todo The RkISP1 pipeline currently provides an empty IPACameraSensorInfo
  * if the connected sensor does not provide enough information to properly
  * assemble one. Make sure the reported sensor information are relevant
  * before accessing them.
  */
-int IPARkISP1::configure([[maybe_unused]] const CameraSensorInfo &info,
+int IPARkISP1::configure([[maybe_unused]] const IPACameraSensorInfo &info,
 			 [[maybe_unused]] const std::map<uint32_t, IPAStream> &streamConfig,
 			 const std::map<uint32_t, ControlInfoMap> &entityControls)
 {
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index eb84d9eb..0fb8a258 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -33,117 +33,6 @@ namespace libcamera {
 
 LOG_DEFINE_CATEGORY(CameraSensor)
 
-/**
- * \struct CameraSensorInfo
- * \brief Report the image sensor characteristics
- *
- * The structure reports image sensor characteristics used by IPA modules to
- * tune their algorithms based on the image sensor model currently in use and
- * its configuration.
- *
- * The reported information describes the sensor's intrinsics characteristics,
- * such as its pixel array size and the sensor model name, as well as
- * information relative to the currently configured mode, such as the produced
- * image size and the bit depth of the requested image format.
- *
- * Instances of this structure are meant to be assembled by the CameraSensor
- * class by inspecting the sensor static properties as well as information
- * relative to the current configuration.
- */
-
-/**
- * \var CameraSensorInfo::model
- * \brief The image sensor model name
- *
- * The sensor model name is a free-formed string that uniquely identifies the
- * sensor model.
- */
-
-/**
- * \var CameraSensorInfo::bitsPerPixel
- * \brief The number of bits per pixel of the image format produced by the
- * image sensor
- */
-
-/**
- * \var CameraSensorInfo::activeAreaSize
- * \brief The size of the pixel array active area of the sensor
- */
-
-/**
- * \var CameraSensorInfo::analogCrop
- * \brief The portion of the pixel array active area which is read-out and
- * processed
- *
- * The analog crop rectangle top-left corner is defined as the displacement
- * from the top-left corner of the pixel array active area. The rectangle
- * horizontal and vertical sizes define the portion of the pixel array which
- * is read-out and provided to the sensor's internal processing pipeline, before
- * any pixel sub-sampling method, such as pixel binning, skipping and averaging
- * take place.
- */
-
-/**
- * \var CameraSensorInfo::outputSize
- * \brief The size of the images produced by the camera sensor
- *
- * The output image size defines the horizontal and vertical sizes of the images
- * produced by the image sensor. The output image size is defined as the end
- * result of the sensor's internal image processing pipeline stages, applied on
- * the pixel array portion defined by the analog crop rectangle. Each image
- * processing stage that performs pixel sub-sampling techniques, such as pixel
- * binning or skipping, or perform any additional digital scaling concur in the
- * definition of the output image size.
- */
-
-/**
- * \var CameraSensorInfo::pixelRate
- * \brief The number of pixels produced in a second
- *
- * To obtain the read-out time in seconds of a full line:
- *
- * \verbatim
-	lineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)
-   \endverbatim
- */
-
-/**
- * \var CameraSensorInfo::lineLength
- * \brief Total line length in pixels
- *
- * The total line length in pixel clock periods, including blanking.
- */
-
-/**
- * \var CameraSensorInfo::minFrameLength
- * \brief The minimum allowable frame length in units of lines
- *
- * The sensor frame length comprises of active output lines and blanking lines
- * in a frame. The minimum frame length value dictates the minimum allowable
- * frame duration of the sensor mode.
- *
- * To obtain the minimum frame duration:
- *
- * \verbatim
-	frameDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)
-   \endverbatim
- */
-
-/**
- * \var CameraSensorInfo::maxFrameLength
- * \brief The maximum allowable frame length in units of lines
- *
- * The sensor frame length comprises of active output lines and blanking lines
- * in a frame. The maximum frame length value dictates the maximum allowable
- * frame duration of the sensor mode.
- *
- * To obtain the maximum frame duration:
- *
- * \verbatim
-	frameDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)
-   \endverbatim
- */
-
 /**
  * \class CameraSensor
  * \brief A camera sensor based on V4L2 subdevices
@@ -316,7 +205,7 @@ int CameraSensor::validateSensorDriver()
 	 *
 	 * Failures in reading any of the targets are not deemed to be fatal,
 	 * but some properties and features, like constructing a
-	 * CameraSensorInfo for the IPA module, won't be supported.
+	 * IPACameraSensorInfo for the IPA module, won't be supported.
 	 *
 	 * \todo Make support for selection targets mandatory as soon as all
 	 * test platforms have been updated.
@@ -785,7 +674,7 @@ int CameraSensor::setControls(ControlList *ctrls)
  *
  * \return 0 on success, a negative error code otherwise
  */
-int CameraSensor::sensorInfo(CameraSensorInfo *info) const
+int CameraSensor::sensorInfo(IPACameraSensorInfo *info) const
 {
 	if (!bayerFormat_)
 		return -EINVAL;
@@ -812,7 +701,7 @@ int CameraSensor::sensorInfo(CameraSensorInfo *info) const
 	}
 
 	/*
-	 * CameraSensorInfo::analogCrop::x and CameraSensorInfo::analogCrop::y
+	 * IPACameraSensorInfo::analogCrop::x and IPACameraSensorInfo::analogCrop::y
 	 * are defined relatively to the active pixel area, while V4L2's
 	 * TGT_CROP target is defined in respect to the full pixel array.
 	 *
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index ade8ffbd..98c6160f 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -544,7 +544,7 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
 	if (ret)
 		return ret;
 
-	CameraSensorInfo sensorInfo;
+	IPACameraSensorInfo sensorInfo;
 	cio2->sensor()->sensorInfo(&sensorInfo);
 	data->cropRegion_ = sensorInfo.analogCrop;
 
@@ -883,7 +883,7 @@ int PipelineHandlerIPU3::initControls(IPU3CameraData *data)
 	if (ret)
 		return ret;
 
-	CameraSensorInfo sensorInfo{};
+	IPACameraSensorInfo sensorInfo{};
 	ret = sensor->sensorInfo(&sensorInfo);
 	if (ret)
 		return ret;
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 6fbdba04..f2a94dc0 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -211,7 +211,7 @@ public:
 	BayerFormat::Order nativeBayerOrder_;
 
 	/* For handling digital zoom. */
-	CameraSensorInfo sensorInfo_;
+	IPACameraSensorInfo sensorInfo_;
 	Rectangle ispCrop_; /* crop in ISP (camera mode) pixels */
 	Rectangle scalerCrop_; /* crop in sensor native pixels */
 	bool updateScalerCrop_;
@@ -1275,7 +1275,7 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)
 		ipaConfig.lsTableHandle = lsTable_;
 	}
 
-	/* We store the CameraSensorInfo for digital zoom calculations. */
+	/* We store the IPACameraSensorInfo for digital zoom calculations. */
 	int ret = sensor_->sensorInfo(&sensorInfo_);
 	if (ret) {
 		LOG(RPI, Error) << "Failed to retrieve camera sensor info";
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index adebe8b5..6699839c 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -648,7 +648,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)
 		return ret;
 
 	/* Inform IPA of stream configuration and sensor controls. */
-	CameraSensorInfo sensorInfo = {};
+	IPACameraSensorInfo sensorInfo = {};
 	ret = data->sensor_->sensorInfo(&sensorInfo);
 	if (ret) {
 		/* \todo Turn this into a hard failure. */
-- 
2.26.2



More information about the libcamera-devel mailing list