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