xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/algos/adrc/rk_aiq_types_adrc_hw.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * rk_aiq_algo_adrc_hw.h
3  *
4  *  Copyright (c) 2019 Rockchip Corporation
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19 #include "adrc_head.h"
20 
21 #ifndef _RK_AIQ_ALGO_ADRC_HW_H_
22 #define _RK_AIQ_ALGO_ADRC_HW_H_
23 
24 #define DRC_V10_Y_NUM 17
25 #define DRC_V11_Y_NUM DRC_V10_Y_NUM
26 #define DRC_V12_Y_NUM DRC_V10_Y_NUM
27 
28 typedef struct DrcProcResV10_s {
29     unsigned char sw_drc_offset_pow2;
30     unsigned short sw_drc_compres_scl;
31     unsigned short sw_drc_position;
32     unsigned short sw_drc_delta_scalein;
33     unsigned short sw_drc_hpdetail_ratio;
34     unsigned short sw_drc_lpdetail_ratio;
35     unsigned char sw_drc_weicur_pix;
36     unsigned char sw_drc_weipre_frame;
37     unsigned short sw_drc_force_sgm_inv0;
38     unsigned char sw_drc_motion_scl;
39     unsigned char sw_drc_edge_scl;
40     unsigned short sw_drc_space_sgm_inv1;
41     unsigned short sw_drc_space_sgm_inv0;
42     unsigned short sw_drc_range_sgm_inv1;
43     unsigned short sw_drc_range_sgm_inv0;
44     unsigned char sw_drc_weig_maxl;
45     unsigned char sw_drc_weig_bilat;
46     unsigned short sw_drc_gain_y[DRC_V10_Y_NUM];
47     unsigned short sw_drc_compres_y[DRC_V10_Y_NUM];
48     unsigned short sw_drc_scale_y[DRC_V10_Y_NUM];
49     unsigned short sw_drc_iir_weight;
50     unsigned short sw_drc_min_ogain;
51 } DrcProcResV10_t;
52 
53 typedef struct DrcProcResV11_s {
54     unsigned char bypass_en;
55     unsigned char offset_pow2;
56     unsigned short compres_scl;
57     unsigned short position;
58     unsigned short delta_scalein;
59     unsigned short hpdetail_ratio;
60     unsigned short lpdetail_ratio;
61     unsigned char weicur_pix;
62     unsigned char weipre_frame;
63     unsigned char bilat_wt_off;
64     unsigned short force_sgm_inv0;
65     unsigned char motion_scl;
66     unsigned char edge_scl;
67     unsigned short space_sgm_inv1;
68     unsigned short space_sgm_inv0;
69     unsigned short range_sgm_inv1;
70     unsigned short range_sgm_inv0;
71     unsigned char weig_maxl;
72     unsigned char weig_bilat;
73     unsigned char enable_soft_thd;
74     unsigned short bilat_soft_thd;
75     unsigned short gain_y[DRC_V11_Y_NUM];
76     unsigned short compres_y[DRC_V11_Y_NUM];
77     unsigned short scale_y[DRC_V11_Y_NUM];
78     unsigned short wr_cycle;
79     unsigned short iir_weight;
80     unsigned short min_ogain;
81 } DrcProcResV11_t;
82 
83 typedef struct DrcProcResV12_s {
84     unsigned char bypass_en;
85     unsigned char offset_pow2;
86     unsigned short compres_scl;
87     unsigned short position;
88     unsigned short hpdetail_ratio;
89     unsigned short lpdetail_ratio;
90     unsigned char delta_scalein;
91     unsigned char weicur_pix;
92     unsigned char weipre_frame;
93     unsigned char bilat_wt_off;
94     unsigned char edge_scl;
95     unsigned char motion_scl;
96     unsigned short force_sgm_inv0;
97     unsigned short space_sgm_inv1;
98     unsigned short space_sgm_inv0;
99     unsigned short range_sgm_inv1;
100     unsigned short range_sgm_inv0;
101     unsigned short bilat_soft_thd;
102     unsigned char weig_maxl;
103     unsigned char weig_bilat;
104     unsigned char enable_soft_thd;
105     unsigned char iir_weight;
106     unsigned short min_ogain;
107     unsigned short gas_t;
108     unsigned char gas_l0;
109     unsigned char gas_l1;
110     unsigned char gas_l2;
111     unsigned char gas_l3;
112     unsigned short gain_y[DRC_V12_Y_NUM];
113     unsigned short compres_y[DRC_V12_Y_NUM];
114     unsigned short scale_y[DRC_V12_Y_NUM];
115 } DrcProcResV12_t;
116 
117 typedef struct DrcProcRes_s {
118 #if RKAIQ_HAVE_DRC_V10
119     DrcProcResV10_t Drc_v10;
120 #endif
121 #if RKAIQ_HAVE_DRC_V11
122     DrcProcResV11_t Drc_v11;
123 #endif
124 #if RKAIQ_HAVE_DRC_V12 || RKAIQ_HAVE_DRC_V12_LITE
125     DrcProcResV12_t Drc_v12;
126 #endif
127 } DrcProcRes_t;
128 
129 typedef struct RkAiqAdrcProcResult_s {
130     bool bDrcEn;
131     DrcProcRes_t DrcProcRes;
132 } RkAiqAdrcProcResult_t;
133 
134 #endif  //_RK_AIQ_ALGO_ADRC_HW_H_
135