1*e6a47023SSakari Ailus.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*e6a47023SSakari Ailus
3*e6a47023SSakari Ailus.. _v4l2-meta-fmt-vsp1-hgo:
4*e6a47023SSakari Ailus
5*e6a47023SSakari Ailus*******************************
6*e6a47023SSakari AilusV4L2_META_FMT_VSP1_HGO ('VSPH')
7*e6a47023SSakari Ailus*******************************
8*e6a47023SSakari Ailus
9*e6a47023SSakari AilusRenesas R-Car VSP1 1-D Histogram Data
10*e6a47023SSakari Ailus
11*e6a47023SSakari Ailus
12*e6a47023SSakari AilusDescription
13*e6a47023SSakari Ailus===========
14*e6a47023SSakari Ailus
15*e6a47023SSakari AilusThis format describes histogram data generated by the Renesas R-Car VSP1 1-D
16*e6a47023SSakari AilusHistogram (HGO) engine.
17*e6a47023SSakari Ailus
18*e6a47023SSakari AilusThe VSP1 HGO is a histogram computation engine that can operate on RGB, YCrCb
19*e6a47023SSakari Ailusor HSV data. It operates on a possibly cropped and subsampled input image and
20*e6a47023SSakari Ailuscomputes the minimum, maximum and sum of all pixels as well as per-channel
21*e6a47023SSakari Ailushistograms.
22*e6a47023SSakari Ailus
23*e6a47023SSakari AilusThe HGO can compute histograms independently per channel, on the maximum of the
24*e6a47023SSakari Ailusthree channels (RGB data only) or on the Y channel only (YCbCr only). It can
25*e6a47023SSakari Ailusadditionally output the histogram with 64 or 256 bins, resulting in four
26*e6a47023SSakari Ailuspossible modes of operation.
27*e6a47023SSakari Ailus
28*e6a47023SSakari Ailus- In *64 bins normal mode*, the HGO operates on the three channels independently
29*e6a47023SSakari Ailus  to compute three 64-bins histograms. RGB, YCbCr and HSV image formats are
30*e6a47023SSakari Ailus  supported.
31*e6a47023SSakari Ailus- In *64 bins maximum mode*, the HGO operates on the maximum of the (R, G, B)
32*e6a47023SSakari Ailus  channels to compute a single 64-bins histogram. Only the RGB image format is
33*e6a47023SSakari Ailus  supported.
34*e6a47023SSakari Ailus- In *256 bins normal mode*, the HGO operates on the Y channel to compute a
35*e6a47023SSakari Ailus  single 256-bins histogram. Only the YCbCr image format is supported.
36*e6a47023SSakari Ailus- In *256 bins maximum mode*, the HGO operates on the maximum of the (R, G, B)
37*e6a47023SSakari Ailus  channels to compute a single 256-bins histogram. Only the RGB image format is
38*e6a47023SSakari Ailus  supported.
39*e6a47023SSakari Ailus
40*e6a47023SSakari Ailus**Byte Order.**
41*e6a47023SSakari AilusAll data is stored in memory in little endian format. Each cell in the tables
42*e6a47023SSakari Ailuscontains one byte.
43*e6a47023SSakari Ailus
44*e6a47023SSakari Ailus.. flat-table:: VSP1 HGO Data - 64 Bins, Normal Mode (792 bytes)
45*e6a47023SSakari Ailus    :header-rows:  2
46*e6a47023SSakari Ailus    :stub-columns: 0
47*e6a47023SSakari Ailus
48*e6a47023SSakari Ailus    * - Offset
49*e6a47023SSakari Ailus      - :cspan:`4` Memory
50*e6a47023SSakari Ailus    * -
51*e6a47023SSakari Ailus      - [31:24]
52*e6a47023SSakari Ailus      - [23:16]
53*e6a47023SSakari Ailus      - [15:8]
54*e6a47023SSakari Ailus      - [7:0]
55*e6a47023SSakari Ailus    * - 0
56*e6a47023SSakari Ailus      -
57*e6a47023SSakari Ailus      - R/Cr/H max [7:0]
58*e6a47023SSakari Ailus      -
59*e6a47023SSakari Ailus      - R/Cr/H min [7:0]
60*e6a47023SSakari Ailus    * - 4
61*e6a47023SSakari Ailus      -
62*e6a47023SSakari Ailus      - G/Y/S max [7:0]
63*e6a47023SSakari Ailus      -
64*e6a47023SSakari Ailus      - G/Y/S min [7:0]
65*e6a47023SSakari Ailus    * - 8
66*e6a47023SSakari Ailus      -
67*e6a47023SSakari Ailus      - B/Cb/V max [7:0]
68*e6a47023SSakari Ailus      -
69*e6a47023SSakari Ailus      - B/Cb/V min [7:0]
70*e6a47023SSakari Ailus    * - 12
71*e6a47023SSakari Ailus      - :cspan:`4` R/Cr/H sum [31:0]
72*e6a47023SSakari Ailus    * - 16
73*e6a47023SSakari Ailus      - :cspan:`4` G/Y/S sum [31:0]
74*e6a47023SSakari Ailus    * - 20
75*e6a47023SSakari Ailus      - :cspan:`4` B/Cb/V sum [31:0]
76*e6a47023SSakari Ailus    * - 24
77*e6a47023SSakari Ailus      - :cspan:`4` R/Cr/H bin 0 [31:0]
78*e6a47023SSakari Ailus    * -
79*e6a47023SSakari Ailus      - :cspan:`4` ...
80*e6a47023SSakari Ailus    * - 276
81*e6a47023SSakari Ailus      - :cspan:`4` R/Cr/H bin 63 [31:0]
82*e6a47023SSakari Ailus    * - 280
83*e6a47023SSakari Ailus      - :cspan:`4` G/Y/S bin 0 [31:0]
84*e6a47023SSakari Ailus    * -
85*e6a47023SSakari Ailus      - :cspan:`4` ...
86*e6a47023SSakari Ailus    * - 532
87*e6a47023SSakari Ailus      - :cspan:`4` G/Y/S bin 63 [31:0]
88*e6a47023SSakari Ailus    * - 536
89*e6a47023SSakari Ailus      - :cspan:`4` B/Cb/V bin 0 [31:0]
90*e6a47023SSakari Ailus    * -
91*e6a47023SSakari Ailus      - :cspan:`4` ...
92*e6a47023SSakari Ailus    * - 788
93*e6a47023SSakari Ailus      - :cspan:`4` B/Cb/V bin 63 [31:0]
94*e6a47023SSakari Ailus
95*e6a47023SSakari Ailus.. flat-table:: VSP1 HGO Data - 64 Bins, Max Mode (264 bytes)
96*e6a47023SSakari Ailus    :header-rows:  2
97*e6a47023SSakari Ailus    :stub-columns: 0
98*e6a47023SSakari Ailus
99*e6a47023SSakari Ailus    * - Offset
100*e6a47023SSakari Ailus      - :cspan:`4` Memory
101*e6a47023SSakari Ailus    * -
102*e6a47023SSakari Ailus      - [31:24]
103*e6a47023SSakari Ailus      - [23:16]
104*e6a47023SSakari Ailus      - [15:8]
105*e6a47023SSakari Ailus      - [7:0]
106*e6a47023SSakari Ailus    * - 0
107*e6a47023SSakari Ailus      -
108*e6a47023SSakari Ailus      - max(R,G,B) max [7:0]
109*e6a47023SSakari Ailus      -
110*e6a47023SSakari Ailus      - max(R,G,B) min [7:0]
111*e6a47023SSakari Ailus    * - 4
112*e6a47023SSakari Ailus      - :cspan:`4` max(R,G,B) sum [31:0]
113*e6a47023SSakari Ailus    * - 8
114*e6a47023SSakari Ailus      - :cspan:`4` max(R,G,B) bin 0 [31:0]
115*e6a47023SSakari Ailus    * -
116*e6a47023SSakari Ailus      - :cspan:`4` ...
117*e6a47023SSakari Ailus    * - 260
118*e6a47023SSakari Ailus      - :cspan:`4` max(R,G,B) bin 63 [31:0]
119*e6a47023SSakari Ailus
120*e6a47023SSakari Ailus.. flat-table:: VSP1 HGO Data - 256 Bins, Normal Mode (1032 bytes)
121*e6a47023SSakari Ailus    :header-rows:  2
122*e6a47023SSakari Ailus    :stub-columns: 0
123*e6a47023SSakari Ailus
124*e6a47023SSakari Ailus    * - Offset
125*e6a47023SSakari Ailus      - :cspan:`4` Memory
126*e6a47023SSakari Ailus    * -
127*e6a47023SSakari Ailus      - [31:24]
128*e6a47023SSakari Ailus      - [23:16]
129*e6a47023SSakari Ailus      - [15:8]
130*e6a47023SSakari Ailus      - [7:0]
131*e6a47023SSakari Ailus    * - 0
132*e6a47023SSakari Ailus      -
133*e6a47023SSakari Ailus      - Y max [7:0]
134*e6a47023SSakari Ailus      -
135*e6a47023SSakari Ailus      - Y min [7:0]
136*e6a47023SSakari Ailus    * - 4
137*e6a47023SSakari Ailus      - :cspan:`4` Y sum [31:0]
138*e6a47023SSakari Ailus    * - 8
139*e6a47023SSakari Ailus      - :cspan:`4` Y bin 0 [31:0]
140*e6a47023SSakari Ailus    * -
141*e6a47023SSakari Ailus      - :cspan:`4` ...
142*e6a47023SSakari Ailus    * - 1028
143*e6a47023SSakari Ailus      - :cspan:`4` Y bin 255 [31:0]
144*e6a47023SSakari Ailus
145*e6a47023SSakari Ailus.. flat-table:: VSP1 HGO Data - 256 Bins, Max Mode (1032 bytes)
146*e6a47023SSakari Ailus    :header-rows:  2
147*e6a47023SSakari Ailus    :stub-columns: 0
148*e6a47023SSakari Ailus
149*e6a47023SSakari Ailus    * - Offset
150*e6a47023SSakari Ailus      - :cspan:`4` Memory
151*e6a47023SSakari Ailus    * -
152*e6a47023SSakari Ailus      - [31:24]
153*e6a47023SSakari Ailus      - [23:16]
154*e6a47023SSakari Ailus      - [15:8]
155*e6a47023SSakari Ailus      - [7:0]
156*e6a47023SSakari Ailus    * - 0
157*e6a47023SSakari Ailus      -
158*e6a47023SSakari Ailus      - max(R,G,B) max [7:0]
159*e6a47023SSakari Ailus      -
160*e6a47023SSakari Ailus      - max(R,G,B) min [7:0]
161*e6a47023SSakari Ailus    * - 4
162*e6a47023SSakari Ailus      - :cspan:`4` max(R,G,B) sum [31:0]
163*e6a47023SSakari Ailus    * - 8
164*e6a47023SSakari Ailus      - :cspan:`4` max(R,G,B) bin 0 [31:0]
165*e6a47023SSakari Ailus    * -
166*e6a47023SSakari Ailus      - :cspan:`4` ...
167*e6a47023SSakari Ailus    * - 1028
168*e6a47023SSakari Ailus      - :cspan:`4` max(R,G,B) bin 255 [31:0]
169