[libcamera-devel] [PATCH v3 1/6] libcamera: properties: Define pixel array properties
Jacopo Mondi
jacopo at jmondi.org
Mon Mar 9 19:04:39 CET 2020
Add definition of pixel array related properties.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
v2 -> v3:
- Pluralize PixelAreaSizes
- Use the new 'size' property in place of 'compound'.
I tried to set meaningful values but it's not easy to get them right..
---
src/libcamera/property_ids.yaml | 177 ++++++++++++++++++++++++++++++++
1 file changed, 177 insertions(+)
diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml
index ce627fa042ba..4cecb5ad9ac3 100644
--- a/src/libcamera/property_ids.yaml
+++ b/src/libcamera/property_ids.yaml
@@ -386,4 +386,181 @@ controls:
| |
| |
+--------------------+
+
+ - PixelArraySize:
+ type: float
+ size: [2]
+ description: |
+ The physical sizes of the pixel array (width and height), in
+ millimeters.
+
+ - PixelArrayBounds:
+ type: int32_t
+ size: [2]
+ description: |
+ The camera sensor pixel array bounding rectangle vertical and
+ horizontal sizes.
+
+ For image sensors with a rectangular pixel array the sizes described by
+ this property are the same as the PixelAreaSize property size.
+
+ For image sensors with more complex pixel array displacements (such as
+ cross-shaped pixel arrays, non symmetrical pixel arrays etc) this
+ property represents the bounding rectangle in which all pixel array
+ dimensions are inscribed into.
+
+ In example, the bounding rectangle sizes for image sensor with a
+ cross-shaped pixel array is described as
+
+
+ PixelArrayBound(0) = width
+ /-----------------/
+
+ (0,0)-> +----+------+----+ /
+ | |//////| | |
+ +----+//////+----+ |
+ |////////////////| | PixelArrayBound(1) = height
+ +----+//////+----+ |
+ | |//////| | |
+ +----+------+----+ /
+ |
+ -> Cross-shaped pixel area
+
+ - PixelArrays:
+ type: int32_t
+ size: [8]
+ description: |
+ The sensor pixel array rectangles, relative to the rectangle described
+ by the PixelArrayBounds property.
+
+ This property describes an arbitrary number of (likely overlapping)
+ rectangles, representing the pixel array areas the sensor is composed
+ of.
+
+ Each rectangle is defined by its displacement from pixel (0, 0) of
+ the bounding rectangle described by the PixelArrayBound property.
+
+ For image sensors with a rectangular pixel array, a single rectangle
+ is required. For sensors with more complex pixel array displacements
+ multiple rectangles shall be specified, ordered from the tallest to the
+ shorter one.
+
+ For each rectangle, this property reports the full pixel array size,
+ including non-active pixels, black level calibration pixels etc.
+
+ In example, a simple sensor with a rectangular pixel array is described
+ as
+
+ PixelArrayBound(0) = width
+ /-----------------/
+ x1 x2
+ (0,0)-> +-o------------o-+ /
+ y1 o +------------+ | |
+ | |////////////| | |
+ | |////////////| | | PixelArrayBound(1) = height
+ | |////////////| | |
+ y2 o +------------+ | |
+ +----------------+ /
+
+ PixelArray = (x1, y1, (x2 - x1), (y2 - y1))
+
+ A more complex sensor, with a cross shaped pixel array displacement
+ is described with 2 rectangles, with the vertical rectangle
+ described first
+
+ PixelArrayBound(0) = width
+ /-----------------/
+ x1 x2 x3 x4 W
+ (0,0)-> +o---o------o---o+ /
+ | |//////| | |
+ y1 o+---+------+---+| |
+ ||///|//////|///|| | PixelArrayBound(1) = height
+ y2 o+---+------+---+| |
+ | |//////| | |
+ H +----+------+----+ /
+
+
+ PixelArray = ( (x2, 0, (x3 - x2), H),
+ (x1, y1, (x4 - x1), (y2 - y1))
+
+ - ActiveAreaSizes:
+ type: int32_t
+ size: [8]
+ description: |
+ The sensor active pixel area sizes, represented as rectangles
+ inscribed in the ones described by the PixelArrays property.
+
+ One ActiveAreaSize rectangle per each rectangle described in the
+ PixelArrays property is required. As a consequence, the two properties
+ shall transport the same number of elements.
+
+ The ActiveAreaSize rectangles represent the maximum image sizes the
+ sensor can produce.
+
+ - BayerFilterArrangement:
+ type: int32_t
+ description: |
+ The pixel array color filter displacement.
+
+ This property describes the arrangement and readout sequence of the
+ three RGB color components of the sensor's Bayer Color Filter Array
+ (CFA).
+
+ Color filters are usually displaced in line-alternating fashion on the
+ sensor pixel array. In example, one line might be composed of Red-Green
+ while the successive is composed of Blue-Green color information.
+
+ The value of this property represent the arrangement of color filters
+ in the top-left 2x2 pixel square.
+
+ In example, for a sensor with the following color filter displacement
+
+ (0, 0) (max-col)
+ +---+ +--------------...---+
+ |B|G|<---|B|G|B|G|B|G|B|...B|G|
+ |G|R|<---|G|R|G|R|G|R|G|...G|R|
+ +---+ |B|G|B|G|B|G|B|...B|G|
+ ... ..
+ ... ..
+ |G|R|G|R|G|R|G|...G|R|
+ |B|G|B|G|B|G|B|...B|G| (max-lines)
+ +--------------...---+
+
+ The filer arrangement is represented by the BGGR value, which correspond
+ to the pixel readout sequence in line interleaved mode.
+
+ enum:
+ - name: BayerFilterRGGB
+ value: 0
+ description: |
+ Color filter array displacement is Red-Green/Green-Blue
+
+ - name: BayerFilterGRBG
+ value: 1
+ description: |
+ Color filter array displacement is Green-Red/Blue-Green
+
+ - name: BayerFilterGBRG
+ value: 2
+ description: |
+ Color filter array displacement is Green-Blue/Red-Green
+
+ - name: BayerFilterBGGR
+ value: 3
+ description: |
+ Color filter array displacement is Blue-Green/Green-Red
+
+ - name: BayerFilterNonStandard
+ value: 4
+ description: |
+ The pixel array color filter does not use the standard Bayer RGB
+ color model
+
+ - ISOSensitivityRange:
+ type: int32_t
+ size: [2]
+ description: |
+ The range of supported ISO sensitivities, as documented by the
+ ISO 12232:2006 standard
+
...
--
2.25.0
More information about the libcamera-devel
mailing list