Merge tag 'for-5.11/dm-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/device...
[linux-2.6-microblaze.git] / Documentation / userspace-api / media / v4l / pixfmt-meta-vsp1-hgt.rst
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3 .. _v4l2-meta-fmt-vsp1-hgt:
4
5 *******************************
6 V4L2_META_FMT_VSP1_HGT ('VSPT')
7 *******************************
8
9 Renesas R-Car VSP1 2-D Histogram Data
10
11
12 Description
13 ===========
14
15 This format describes histogram data generated by the Renesas R-Car VSP1
16 2-D Histogram (HGT) engine.
17
18 The VSP1 HGT is a histogram computation engine that operates on HSV
19 data. It operates on a possibly cropped and subsampled input image and
20 computes the sum, maximum and minimum of the S component as well as a
21 weighted frequency histogram based on the H and S components.
22
23 The histogram is a matrix of 6 Hue and 32 Saturation buckets, 192 in
24 total. Each HSV value is added to one or more buckets with a weight
25 between 1 and 16 depending on the Hue areas configuration. Finding the
26 corresponding buckets is done by inspecting the H and S value independently.
27
28 The Saturation position **n** (0 - 31) of the bucket in the matrix is
29 found by the expression:
30
31     n = S / 8
32
33 The Hue position **m** (0 - 5) of the bucket in the matrix depends on
34 how the HGT Hue areas are configured. There are 6 user configurable Hue
35 Areas which can be configured to cover overlapping Hue values:
36
37 .. raw:: latex
38
39     \small
40
41 ::
42
43          Area 0       Area 1       Area 2       Area 3       Area 4       Area 5
44         ________     ________     ________     ________     ________     ________
45    \   /|      |\   /|      |\   /|      |\   /|      |\   /|      |\   /|      |\   /
46     \ / |      | \ / |      | \ / |      | \ / |      | \ / |      | \ / |      | \ /
47      X  |      |  X  |      |  X  |      |  X  |      |  X  |      |  X  |      |  X
48     / \ |      | / \ |      | / \ |      | / \ |      | / \ |      | / \ |      | / \
49    /   \|      |/   \|      |/   \|      |/   \|      |/   \|      |/   \|      |/   \
50   5U   0L      0U   1L      1U   2L      2U   3L      3U   4L      4U   5L      5U   0L
51         <0..............................Hue Value............................255>
52
53
54 .. raw:: latex
55
56     \normalsize
57
58 When two consecutive areas don't overlap (n+1L is equal to nU) the boundary
59 value is considered as part of the lower area.
60
61 Pixels with a hue value included in the centre of an area (between nL and nU
62 included) are attributed to that single area and given a weight of 16. Pixels
63 with a hue value included in the overlapping region between two areas (between
64 n+1L and nU excluded) are attributed to both areas and given a weight for each
65 of these areas proportional to their position along the diagonal lines
66 (rounded down).
67
68 The Hue area setup must match one of the following constrains:
69
70 ::
71
72     0L <= 0U <= 1L <= 1U <= 2L <= 2U <= 3L <= 3U <= 4L <= 4U <= 5L <= 5U
73
74 ::
75
76     0U <= 1L <= 1U <= 2L <= 2U <= 3L <= 3U <= 4L <= 4U <= 5L <= 5U <= 0L
77
78 **Byte Order.**
79 All data is stored in memory in little endian format. Each cell in the tables
80 contains one byte.
81
82 .. flat-table:: VSP1 HGT Data - (776 bytes)
83     :header-rows:  2
84     :stub-columns: 0
85
86     * - Offset
87       - :cspan:`4` Memory
88     * -
89       - [31:24]
90       - [23:16]
91       - [15:8]
92       - [7:0]
93     * - 0
94       - -
95       - S max [7:0]
96       - -
97       - S min [7:0]
98     * - 4
99       - :cspan:`4` S sum [31:0]
100     * - 8
101       - :cspan:`4` Histogram bucket (m=0, n=0) [31:0]
102     * - 12
103       - :cspan:`4` Histogram bucket (m=0, n=1) [31:0]
104     * -
105       - :cspan:`4` ...
106     * - 132
107       - :cspan:`4` Histogram bucket (m=0, n=31) [31:0]
108     * - 136
109       - :cspan:`4` Histogram bucket (m=1, n=0) [31:0]
110     * -
111       - :cspan:`4` ...
112     * - 264
113       - :cspan:`4` Histogram bucket (m=2, n=0) [31:0]
114     * -
115       - :cspan:`4` ...
116     * - 392
117       - :cspan:`4` Histogram bucket (m=3, n=0) [31:0]
118     * -
119       - :cspan:`4` ...
120     * - 520
121       - :cspan:`4` Histogram bucket (m=4, n=0) [31:0]
122     * -
123       - :cspan:`4` ...
124     * - 648
125       - :cspan:`4` Histogram bucket (m=5, n=0) [31:0]
126     * -
127       - :cspan:`4` ...
128     * - 772
129       - :cspan:`4` Histogram bucket (m=5, n=31) [31:0]