xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/hwi/isp21/Isp21Params.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *  Copyright (c) 2019 Rockchip Corporation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 #ifndef _CAM_HW_ISP21_PARAMS_H_
19 #define _CAM_HW_ISP21_PARAMS_H_
20 
21 #include "rk_aiq_pool.h"
22 #include "isp20/Isp20Params.h"
23 #include "rkisp21-config.h"
24 
25 namespace RkCam {
26 
27 class Isp21Params : virtual public Isp20Params {
28 public:
Isp21Params()29     explicit Isp21Params() : Isp20Params() {};
~Isp21Params()30     virtual ~Isp21Params() {};
31 protected:
32     virtual bool convert3aResultsToIspCfg(SmartPtr<cam3aResult> &result, void* isp_cfg_p, bool is_multi_isp) override;
33     template<class T>
34     void convertAiqCcmToIsp21Params(T& isp_cfg,
35                                     const rk_aiq_ccm_cfg_t& ccm);
36     template<class T>
37     void convertAiqBlcToIsp21Params(T& isp_cfg,
38                                     rk_aiq_isp_blc_v21_t &blc);
39     template<class T>
40     void convertAiqAgicToIsp21Params(T& isp_cfg,
41                                      const rk_aiq_isp_gic_v21_t& gic_cfg);
42     template<class T>
43     void convertAiqAwbGainToIsp21Params(T& isp_cfg,
44                                         const rk_aiq_wb_gain_t& awb_gain, const rk_aiq_isp_blc_v21_t *blc,
45                                         bool awb_gain_update);
46     template<class T>
47     void convertAiqCsmToIsp21Params(T& isp_cfg,
48                                     const rk_aiq_acsm_params_t& csm_cfg);
49     template<class T>
50     void convertAiqCgcToIsp21Params(T& isp_cfg,
51                                     const rk_aiq_acgc_params_t& cgc_param);
52     void convertAiqExpIspDgainToIspParams(void* isp_cfg_, RKAiqAecExpInfo_t ae_exp);
53 
54 private:
55     XCAM_DEAD_COPY(Isp21Params);
56 #if RKAIQ_HAVE_DEHAZE_V11
57     void convertAiqAdehazeToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
58                                         const rk_aiq_isp_dehaze_v21_t& dhaze);
59 #endif
60 
61 #if RKAIQ_HAVE_AWB_V21
62     void convertAiqAwbToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
63                                     const rk_aiq_awb_stat_cfg_v201_t& awb_meas,
64                                     bool awb_cfg_udpate);
65 #endif
66 #if RKAIQ_HAVE_BAYERNR_V2
67     void convertAiqRawnrToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
68                                       rk_aiq_isp_baynr_v21_t& rawnr);
69 #endif
70     void convertAiqTnrToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
71                                     rk_aiq_isp_bay3d_v21_t& tnr);
72 #if RKAIQ_HAVE_CNR_V1
73     void convertAiqUvnrToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
74                                      rk_aiq_isp_cnr_v21_t& uvnr);
75 #endif
76 #if RKAIQ_HAVE_YNR_V2
77     void convertAiqYnrToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
78                                     rk_aiq_isp_ynr_v21_t& ynr);
79 #endif
80 #if RKAIQ_HAVE_SHARP_V3
81     void convertAiqSharpenToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
82                                         rk_aiq_isp_sharp_v21_t& sharp);
83 #endif
84 #if RKAIQ_HAVE_DRC_V10
85     void convertAiqDrcToIsp21Params(struct isp21_isp_params_cfg& isp_cfg,
86                                     rk_aiq_isp_drc_v21_t& adrc_data);
87 #endif
88 };
89 
90 };
91 #endif
92