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