xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/algos/awb/rk_aiq_types_awb_stat_v2xx.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2 * rk_aiq_awb_api_hw_v200.h
3 
4 * for rockchip v2.0.0
5 *
6 *  Copyright (c) 2019 Rockchip Corporation
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 *      http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 */
21 /* for rockchip v2.0.0*/
22 
23 #ifndef __RK_AIQ_TYPE_AWB_STAT_V2XX_H__
24 #define __RK_AIQ_TYPE_AWB_STAT_V2XX_H__
25 #include "rk_aiq_comm.h"
26 //#define TIME_SHARE_TEST
27 #define TIME_SHARE_MODE
28 #define RK_AIQ_AWB_STAT_YUV_ILL_OFF 7
29 #define RK_AIQ_AWB_MAX_WHITEREGIONS_NUM       7
30 #define RK_AIQ_AWB_YUV_LS_PARA_NUM 4
31 #define RK_AIQ_AWB_GRID_NUM_VERHOR           15
32 #define RK_AIQ_AWB_GRID_NUM_TOTAL   (RK_AIQ_AWB_GRID_NUM_VERHOR*RK_AIQ_AWB_GRID_NUM_VERHOR)
33 #define RK_AIQ_AWB_STORE_LS_WPFLAG_NUM 3
34 #define RK_AIQ_AWB_EXCLUDE_WP_RANGE_NUM 7
35 
36 #define AWB_UV_RANGE_SLOVE_FRACTION 10
37 #define AWB_UV_RANGE_SLOVE_SINTER 9
38 
39 #if RKAIQ_HAVE_AWB_V32LT
40 typedef enum rk_aiq_down_scale_mode_e {
41     RK_AIQ_AWB_DS_INVALIED = -1,
42     RK_AIQ_AWB_DS_4X4 = 0,
43     RK_AIQ_AWB_DS_8X8 = 1,
44     RK_AIQ_AWB_DS_16X8 = 2,
45     RK_AIQ_AWB_DS_MAX
46 } rk_aiq_down_scale_mode_t;
47 #else
48 typedef enum rk_aiq_down_scale_mode_e {
49     RK_AIQ_AWB_DS_INVALIED = -1,
50     RK_AIQ_AWB_DS_4X4 = 0,
51     RK_AIQ_AWB_DS_8X8 = 1,
52     RK_AIQ_AWB_DS_MAX
53 } rk_aiq_down_scale_mode_t;
54 #endif
55 
56 typedef struct rk_aiq_rgb2xy_para_s {
57     unsigned short pseudoLuminanceWeight[3];
58     short rotationMat[9];
59 } rk_aiq_rgb2xy_para_t;
60 typedef struct rk_aiq_awb_xy_range_para_s {
61     int NorrangeX[2];//left right
62     int NorrangeY[2];//top bottom
63     int SperangeX[2];
64     int SperangeY[2];
65     int SmalrangeX[2];
66     int SmalrangeY[2];
67 } rk_aiq_awb_xy_range_para_t;
68 
69 typedef struct rk_aiq_awb_uv_range_para_s {
70     unsigned short pu_region[5];//9 bit
71     unsigned short pv_region[5];
72     int slope_inv[4];//10+10 signed 1/k
73 } rk_aiq_awb_uv_range_para_t;
74 
75 typedef struct rk_aiq_awb_3dyuv_range_para_s {
76     int b_uv;            //17+0 s
77     int slope_inv_neg_uv; //9+10s //-1/k
78     int slope_factor_uv; //1+14s // 1/(-1/k+k)
79     int slope_ydis;        //9+10s //k
80     int b_ydis;            //17+0s
81     unsigned char ref_u;   //8u
82     unsigned char ref_v;   //8u
83     unsigned short dis[6];//8+4 u
84     unsigned char th[6]; //8u
85 } rk_aiq_awb_3dyuv_range_para_t;
86 
87 typedef struct rk_aiq_awb_rt3dyuv_range_para_s {
88     unsigned char thcurve_u[6];//0bit fracitonal+8bit integer+0s
89     unsigned short thcure_th[6];//4bit fractional+8bit integer+0s
90     unsigned short lineP1[3];//4bit fractional+8bit integer+0s
91     short vP1P2[3];//4bit fractional+8bit integer+1s
92     unsigned char  disP1P2;// /0bit fractional+5bit integer+0s  distance is 2^disP1P2;
93 } rk_aiq_awb_rt3dyuv_range_para_t;
94 
95 typedef enum rk_aiq_awb_exc_range_domain_e {
96     RK_AIQ_AWB_EXC_RANGE_DOMAIN_UV_INVALID = -1,
97     RK_AIQ_AWB_EXC_RANGE_DOMAIN_UV = 0,
98     RK_AIQ_AWB_EXC_RANGE_DOMAIN_XY = 1
99 } rk_aiq_awb_exc_range_domain_t;
100 
101 
102 typedef enum rk_aiq_awb_bayer_mode_e {
103     RK_AIQ_AWB_BAYER_MODE_MIN,
104     RK_AIQ_AWB_BAYER_MODE_RGGB = 0,
105     RK_AIQ_AWB_BAYER_MODE_GRBG = 1,
106     RK_AIQ_AWB_BAYER_MODE_GBRG = 2,
107     RK_AIQ_AWB_BAYER_MODE_BGGR = 3,
108     RK_AIQ_AWB_BAYER_MODE_MAX
109 } rk_aiq_awb_bayer_mode_t;
110 
111 
112 #endif
113 
114