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