162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci.. _v4l2-meta-fmt-vsp1-hgt: 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci******************************* 662306a36Sopenharmony_ciV4L2_META_FMT_VSP1_HGT ('VSPT') 762306a36Sopenharmony_ci******************************* 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciRenesas R-Car VSP1 2-D Histogram Data 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciDescription 1362306a36Sopenharmony_ci=========== 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciThis format describes histogram data generated by the Renesas R-Car VSP1 1662306a36Sopenharmony_ci2-D Histogram (HGT) engine. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciThe VSP1 HGT is a histogram computation engine that operates on HSV 1962306a36Sopenharmony_cidata. It operates on a possibly cropped and subsampled input image and 2062306a36Sopenharmony_cicomputes the sum, maximum and minimum of the S component as well as a 2162306a36Sopenharmony_ciweighted frequency histogram based on the H and S components. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciThe histogram is a matrix of 6 Hue and 32 Saturation buckets, 192 in 2462306a36Sopenharmony_citotal. Each HSV value is added to one or more buckets with a weight 2562306a36Sopenharmony_cibetween 1 and 16 depending on the Hue areas configuration. Finding the 2662306a36Sopenharmony_cicorresponding buckets is done by inspecting the H and S value independently. 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciThe Saturation position **n** (0 - 31) of the bucket in the matrix is 2962306a36Sopenharmony_cifound by the expression: 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci n = S / 8 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciThe Hue position **m** (0 - 5) of the bucket in the matrix depends on 3462306a36Sopenharmony_cihow the HGT Hue areas are configured. There are 6 user configurable Hue 3562306a36Sopenharmony_ciAreas which can be configured to cover overlapping Hue values: 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci.. raw:: latex 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci \small 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci:: 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci Area 0 Area 1 Area 2 Area 3 Area 4 Area 5 4462306a36Sopenharmony_ci ________ ________ ________ ________ ________ ________ 4562306a36Sopenharmony_ci \ /| |\ /| |\ /| |\ /| |\ /| |\ /| |\ / 4662306a36Sopenharmony_ci \ / | | \ / | | \ / | | \ / | | \ / | | \ / | | \ / 4762306a36Sopenharmony_ci X | | X | | X | | X | | X | | X | | X 4862306a36Sopenharmony_ci / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ 4962306a36Sopenharmony_ci / \| |/ \| |/ \| |/ \| |/ \| |/ \| |/ \ 5062306a36Sopenharmony_ci 5U 0L 0U 1L 1U 2L 2U 3L 3U 4L 4U 5L 5U 0L 5162306a36Sopenharmony_ci <0..............................Hue Value............................255> 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci.. raw:: latex 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci \normalsize 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ciWhen two consecutive areas don't overlap (n+1L is equal to nU) the boundary 5962306a36Sopenharmony_civalue is considered as part of the lower area. 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ciPixels with a hue value included in the centre of an area (between nL and nU 6262306a36Sopenharmony_ciincluded) are attributed to that single area and given a weight of 16. Pixels 6362306a36Sopenharmony_ciwith a hue value included in the overlapping region between two areas (between 6462306a36Sopenharmony_cin+1L and nU excluded) are attributed to both areas and given a weight for each 6562306a36Sopenharmony_ciof these areas proportional to their position along the diagonal lines 6662306a36Sopenharmony_ci(rounded down). 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ciThe Hue area setup must match one of the following constrains: 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci:: 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci 0L <= 0U <= 1L <= 1U <= 2L <= 2U <= 3L <= 3U <= 4L <= 4U <= 5L <= 5U 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci:: 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci 0U <= 1L <= 1U <= 2L <= 2U <= 3L <= 3U <= 4L <= 4U <= 5L <= 5U <= 0L 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci**Byte Order.** 7962306a36Sopenharmony_ciAll data is stored in memory in little endian format. Each cell in the tables 8062306a36Sopenharmony_cicontains one byte. 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci.. flat-table:: VSP1 HGT Data - (776 bytes) 8362306a36Sopenharmony_ci :header-rows: 2 8462306a36Sopenharmony_ci :stub-columns: 0 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci * - Offset 8762306a36Sopenharmony_ci - :cspan:`4` Memory 8862306a36Sopenharmony_ci * - 8962306a36Sopenharmony_ci - [31:24] 9062306a36Sopenharmony_ci - [23:16] 9162306a36Sopenharmony_ci - [15:8] 9262306a36Sopenharmony_ci - [7:0] 9362306a36Sopenharmony_ci * - 0 9462306a36Sopenharmony_ci - - 9562306a36Sopenharmony_ci - S max [7:0] 9662306a36Sopenharmony_ci - - 9762306a36Sopenharmony_ci - S min [7:0] 9862306a36Sopenharmony_ci * - 4 9962306a36Sopenharmony_ci - :cspan:`4` S sum [31:0] 10062306a36Sopenharmony_ci * - 8 10162306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=0, n=0) [31:0] 10262306a36Sopenharmony_ci * - 12 10362306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=0, n=1) [31:0] 10462306a36Sopenharmony_ci * - 10562306a36Sopenharmony_ci - :cspan:`4` ... 10662306a36Sopenharmony_ci * - 132 10762306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=0, n=31) [31:0] 10862306a36Sopenharmony_ci * - 136 10962306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=1, n=0) [31:0] 11062306a36Sopenharmony_ci * - 11162306a36Sopenharmony_ci - :cspan:`4` ... 11262306a36Sopenharmony_ci * - 264 11362306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=2, n=0) [31:0] 11462306a36Sopenharmony_ci * - 11562306a36Sopenharmony_ci - :cspan:`4` ... 11662306a36Sopenharmony_ci * - 392 11762306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=3, n=0) [31:0] 11862306a36Sopenharmony_ci * - 11962306a36Sopenharmony_ci - :cspan:`4` ... 12062306a36Sopenharmony_ci * - 520 12162306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=4, n=0) [31:0] 12262306a36Sopenharmony_ci * - 12362306a36Sopenharmony_ci - :cspan:`4` ... 12462306a36Sopenharmony_ci * - 648 12562306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=5, n=0) [31:0] 12662306a36Sopenharmony_ci * - 12762306a36Sopenharmony_ci - :cspan:`4` ... 12862306a36Sopenharmony_ci * - 772 12962306a36Sopenharmony_ci - :cspan:`4` Histogram bucket (m=5, n=31) [31:0] 130