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