From patchwork Thu Feb 6 18:52:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 2794 Return-Path: Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id DB90460946 for ; Thu, 6 Feb 2020 19:50:18 +0100 (CET) X-Originating-IP: 93.34.114.233 Received: from uno.lan (93-34-114-233.ip49.fastwebnet.it [93.34.114.233]) (Authenticated sender: jacopo@jmondi.org) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id A4DA8FF804 for ; Thu, 6 Feb 2020 18:50:18 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Date: Thu, 6 Feb 2020 19:52:41 +0100 Message-Id: <20200206185247.202233-2-jacopo@jmondi.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200206185247.202233-1-jacopo@jmondi.org> References: <20200206185247.202233-1-jacopo@jmondi.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 1/7] libcamera: properties: Define pixel array properties X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Feb 2020 18:50:19 -0000 Add definition of pixel array related properties. Signed-off-by: Jacopo Mondi --- 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 c3070de9d9f8..709016904870 100644 --- a/src/libcamera/property_ids.yaml +++ b/src/libcamera/property_ids.yaml @@ -354,4 +354,181 @@ controls: | | | | +---------------+ + + - PixelArraySize: + type: float + compound: true + description: | + The physical sizes of the pixel array (width and height), in + millimeters. + + - PixelArrayBounds: + type: int32_t + compound: true + 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 + compound: true + 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)) + + - ActiveAreaSize: + type: int32_t + compound: true + 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: + - BayerFilterRGGB: + value: 0 + description: | + Color filter array displacement is Red-Green/Green-Blue + + - BayerFilterGRBG: + value: 1 + description: | + Color filter array displacement is Green-Red/Blue-Green + + - BayerFilterGBRG: + value: 2 + description: | + Color filter array displacement is Green-Blue/Red-Green + + - BayerFilterBGGR: + value: 3 + description: | + Color filter array displacement is Blue-Green/Green-Red + + - BayerFilterNonStandard: + value: 4 + description: | + The pixel array color filter does not use the standard Bayer RGB + color model + + - ISOSensitivityRange: + type: int32_t + compound: true + description: | + The range of supported ISO sensitivities, as documented by the + ISO 12232:2006 standard + ...