[libcamera-devel] [PATCH v5 09/10] libcamera: camera_sensor: Initialize VIMC properties
Jacopo Mondi
jacopo at jmondi.org
Tue Jan 5 13:31:27 CET 2021
The VIMC driver does not yet support all the features required
for all sensor drivers. As it is the main testing platforms and the
driver changes might take a long time to land in the developments
and testing platforms, temporary close the gap by skipping driver
validation and initializing properties with static information such
as the sensor resolution.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
include/libcamera/internal/camera_sensor.h | 1 +
src/libcamera/camera_sensor.cpp | 27 ++++++++++++++++++++++
2 files changed, 28 insertions(+)
diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
index de6a0202d19a..759a12d16f72 100644
--- a/include/libcamera/internal/camera_sensor.h
+++ b/include/libcamera/internal/camera_sensor.h
@@ -70,6 +70,7 @@ protected:
private:
int generateId();
int validateSensorDriver();
+ void initVIMCDefaultProperties();
int initProperties();
const MediaEntity *entity_;
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 0e8aff27b712..046474c03f4a 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -6,6 +6,7 @@
*/
#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/media_device.h"
#include <algorithm>
#include <float.h>
@@ -207,6 +208,21 @@ int CameraSensor::init()
*/
resolution_ = sizes_.back();
+ /*
+ * VIMC is a bit special, as it does not yet support all the
+ * mandatory requirements regular sensors have to respect.
+ *
+ * Do not validate the driver if it's VIMC and initialize the
+ * the sensor properties with static information.
+ *
+ * \todo Remove the special case once the VIMC driver has been
+ * updated in all test platforms.
+ */
+ if (entity_->device()->driver() == "vimc") {
+ initVIMCDefaultProperties();
+ return initProperties();
+ }
+
ret = validateSensorDriver();
if (ret)
return ret;
@@ -306,6 +322,17 @@ int CameraSensor::validateSensorDriver()
return 0;
}
+/*
+ * \brief Initialize properties that cannot be intialized by the
+ * regular initProperties() function for VIMC
+ */
+void CameraSensor::initVIMCDefaultProperties()
+{
+ pixelArraySize_ = resolution();
+ activeArea_ = Rectangle(pixelArraySize_);
+ analogueCrop_ = activeArea_;
+}
+
int CameraSensor::initProperties()
{
/*
--
2.29.2
More information about the libcamera-devel
mailing list