libcamera: camera_sensor: Define CameraSensorInfo

Define the CameraSensorInfo structure that reports the current image sensor
configuration.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi
2020-04-28 22:25:22 +02:00
parent 0e36d26dad
commit 56baa28a79
2 changed files with 94 additions and 0 deletions
+81
View File
@@ -29,6 +29,87 @@ 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.
*/
/**
* \class CameraSensor
* \brief A camera sensor based on V4L2 subdevices
+13
View File
@@ -22,6 +22,19 @@ class V4L2Subdevice;
struct V4L2SubdeviceFormat;
struct CameraSensorInfo {
std::string model;
uint32_t bitsPerPixel;
Size activeAreaSize;
Rectangle analogCrop;
Size outputSize;
uint64_t pixelRate;
uint32_t lineLength;
};
class CameraSensor : protected Loggable
{
public: