[libcamera-devel] [PATCH v2 6/7] libcamera: sensor: ov5670: Register pixel array properties
Jacopo Mondi
jacopo at jmondi.org
Thu Feb 6 19:52:46 CET 2020
Implement sensor specific pixel array properties initialization for the
OV5670 sensor driver by overriding CameraSensor::initProperties()
method.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/libcamera/sensor/ov5670.cpp | 41 +++++++++++++++++++++++++++++++++
src/libcamera/sensor/ov5670.h | 3 +++
2 files changed, 44 insertions(+)
diff --git a/src/libcamera/sensor/ov5670.cpp b/src/libcamera/sensor/ov5670.cpp
index de6011875a2d..a49fcebb2d9d 100644
--- a/src/libcamera/sensor/ov5670.cpp
+++ b/src/libcamera/sensor/ov5670.cpp
@@ -6,6 +6,12 @@
*/
#include "ov5670.h"
+
+#include <array>
+
+#include <libcamera/controls.h>
+#include <libcamera/property_ids.h>
+
#include "camera_sensor.h"
/**
@@ -38,6 +44,41 @@ OV5670CameraSensor::OV5670CameraSensor(const MediaEntity *entity)
{
}
+/**
+ * \brief Initialize Camera properties with ov5670 specific values
+ * \param[in] controlMap The map of control information provided by the sensor
+ * \return 0 on success, a negative error code otherwise
+ */
+int OV5670CameraSensor::initProperties(const ControlInfoMap &controlMap)
+{
+ /* Pixel Array Properties. */
+ std::array<float, 2> pixelArraySize = { 2.9f, 1.18f };
+ properties_.set(properties::PixelArraySize,
+ Span<float>{ pixelArraySize });
+
+ std::array<int32_t, 2> pixelArrayBounds = { 2592, 1944 };
+ properties_.set(properties::PixelArrayBounds,
+ Span<int32_t>{ pixelArrayBounds });
+
+ std::array<int32_t, 2> pixelArrays = { 2592, 1944 };
+ properties_.set(properties::PixelArrays,
+ Span<int32_t>{ pixelArrays });
+
+ std::array<int32_t, 4> activeAreaSize = { 16, 6, 2560, 1920 };
+ properties_.set(properties::ActiveAreaSize,
+ Span<int32_t>{ activeAreaSize });
+
+ int32_t bayerFilter = properties::BayerFilterGRBG;
+ properties_.set(properties::BayerFilterArrangement, bayerFilter);
+
+ std::array<int32_t, 2> isoSensitivities = { 50, 800 };
+ properties_.set(properties::ISOSensitivityRange,
+ Span<int32_t>{ isoSensitivities });
+
+ return CameraSensor::initProperties(controlMap);
+}
+
REGISTER_CAMERA_SENSOR(OV5670);
}; /* namespace libcamera */
+
diff --git a/src/libcamera/sensor/ov5670.h b/src/libcamera/sensor/ov5670.h
index 4acf02a8b06b..a66bdb6ae276 100644
--- a/src/libcamera/sensor/ov5670.h
+++ b/src/libcamera/sensor/ov5670.h
@@ -11,12 +11,15 @@
namespace libcamera {
+class ControlInfoMap;
+
class OV5670CameraSensor final : public CameraSensor
{
public:
static const char *entityName();
OV5670CameraSensor(const MediaEntity *entity);
+ int initProperties(const ControlInfoMap &controlMap);
};
}; /* namespace libcamera */
--
2.24.1
More information about the libcamera-devel
mailing list