libcamera: Introduce camera sensor properties
Introduce a database of camera sensor properties, which contains information on the camera sensor which are not possible, or desirable, to retrieve from the device at run time. The camera sensor database is accessed through a static function and is indexed using the camera sensor model as reported by properties::Model. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
5fda81e1f4
commit
a58a94e4c2
4 changed files with 97 additions and 0 deletions
24
include/libcamera/internal/camera_sensor_properties.h
Normal file
24
include/libcamera/internal/camera_sensor_properties.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
/*
|
||||
* Copyright (C) 2021, Google Inc.
|
||||
*
|
||||
* camera_sensor_properties.h - Database of camera sensor properties
|
||||
*/
|
||||
#ifndef __LIBCAMERA_SENSOR_CAMERA_SENSOR_PROPERTIES_H__
|
||||
#define __LIBCAMERA_SENSOR_CAMERA_SENSOR_PROPERTIES_H__
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <libcamera/geometry.h>
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
struct CameraSensorProperties {
|
||||
static const CameraSensorProperties *get(const std::string &sensor);
|
||||
|
||||
Size unitCellSize;
|
||||
};
|
||||
|
||||
} /* namespace libcamera */
|
||||
|
||||
#endif /* __LIBCAMERA_SENSOR_CAMERA_SENSOR_PROPERTIES_H__ */
|
|
@ -15,6 +15,7 @@ libcamera_internal_headers = files([
|
|||
'byte_stream_buffer.h',
|
||||
'camera_controls.h',
|
||||
'camera_sensor.h',
|
||||
'camera_sensor_properties.h',
|
||||
'control_serializer.h',
|
||||
'control_validator.h',
|
||||
'delayed_controls.h',
|
||||
|
|
71
src/libcamera/camera_sensor_properties.cpp
Normal file
71
src/libcamera/camera_sensor_properties.cpp
Normal file
|
@ -0,0 +1,71 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
/*
|
||||
* Copyright (C) 2021, Google Inc.
|
||||
*
|
||||
* camera_sensor_properties.cpp - Database of camera sensor properties
|
||||
*/
|
||||
|
||||
#include "libcamera/internal/camera_sensor_properties.h"
|
||||
|
||||
#include <map>
|
||||
|
||||
#include "libcamera/internal/log.h"
|
||||
|
||||
/**
|
||||
* \file camera_sensor_properties.h
|
||||
* \brief Database of camera sensor properties
|
||||
*
|
||||
* The database of camera sensor properties collects static information about
|
||||
* camera sensors that is not possible or desirable to retrieve from the device
|
||||
* at run time.
|
||||
*
|
||||
* The database is indexed using the camera sensor model, as reported by the
|
||||
* properties::Model property, and for each supported sensor it contains a
|
||||
* list of properties.
|
||||
*/
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
LOG_DEFINE_CATEGORY(CameraSensorProperties)
|
||||
|
||||
/**
|
||||
* \struct CameraSensorProperties
|
||||
* \brief Database of camera sensor properties
|
||||
*
|
||||
* \var CameraSensorProperties::unitCellSize
|
||||
* \brief The physical size of a pixel, including pixel edges, in nanometers.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Retrieve the properties associated with a sensor
|
||||
* \param sensor The sensor model name as reported by properties::Model
|
||||
* \return A pointer to the CameraSensorProperties instance associated with a sensor
|
||||
* or nullptr if the sensor is not supported
|
||||
*/
|
||||
const CameraSensorProperties *CameraSensorProperties::get(const std::string &sensor)
|
||||
{
|
||||
static const std::map<std::string, const CameraSensorProperties> sensorProps = {
|
||||
{ "imx219", {
|
||||
.unitCellSize = { 1120, 1120 },
|
||||
} },
|
||||
{ "ov5670", {
|
||||
.unitCellSize = { 1120, 1120 },
|
||||
} },
|
||||
{ "ov13858", {
|
||||
.unitCellSize = { 1120, 1120 },
|
||||
} },
|
||||
};
|
||||
|
||||
const auto it = sensorProps.find(sensor);
|
||||
if (it == sensorProps.end()) {
|
||||
LOG(CameraSensorProperties, Warning)
|
||||
<< "No static properties available for '" << sensor << "'";
|
||||
LOG(CameraSensorProperties, Warning)
|
||||
<< "Please consider updating the camera sensor properties database";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return &it->second;
|
||||
}
|
||||
|
||||
} /* namespace libcamera */
|
|
@ -9,6 +9,7 @@ libcamera_sources = files([
|
|||
'camera_controls.cpp',
|
||||
'camera_manager.cpp',
|
||||
'camera_sensor.cpp',
|
||||
'camera_sensor_properties.cpp',
|
||||
'class.cpp',
|
||||
'controls.cpp',
|
||||
'control_serializer.cpp',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue