diff options
-rw-r--r-- | include/libcamera/internal/camera_sensor.h | 1 | ||||
-rw-r--r-- | src/libcamera/camera_sensor.cpp | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h index 86902b85..fed36bf2 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 e9c80c30..251691ae 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 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; @@ -304,6 +320,16 @@ 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_); +} + int CameraSensor::initProperties() { /* |