xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/hwi/isp3x/Isp3xParams.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *  Copyright (c) 2021 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_ISP3X_PARAMS_H_
19 #define _CAM_HW_ISP3X_PARAMS_H_
20 
21 #include "rk_aiq_pool.h"
22 #include "isp21/Isp21Params.h"
23 #include "rkisp3-config.h"
24 
25 namespace RkCam {
26 
27 class Isp3xParams : virtual public Isp21Params {
28 public:
Isp3xParams()29     explicit Isp3xParams() : Isp21Params() {};
~Isp3xParams()30     virtual ~Isp3xParams() {};
31     void fixedAwbOveflowToIsp3xParams(void* isp_cfg_p, bool is_dual_isp);
32 protected:
33     virtual bool convert3aResultsToIspCfg(SmartPtr<cam3aResult> &result, void* isp_cfg_p, bool is_multi_isp) override;
34     template <class T>
35     void convertAiqGainToIsp3xParams(T& isp_cfg, rk_aiq_isp_gain_v3x_t& gain);
36 #if RKAIQ_HAVE_GAMMA_V11
37     template <class T>
38     void convertAiqAgammaToIsp3xParams(T& isp_cfg, const rk_aiq_isp_goc_v3x_t& gamma_out_cfg);
39 #endif
40 private:
41     XCAM_DEAD_COPY(Isp3xParams);
42 #if RKAIQ_HAVE_AWB_V21
43     void convertAiqAwbToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
44                                     const rk_aiq_isp_awb_meas_cfg_v3x_t& awb_meas,
45                                     bool awb_cfg_udpate);
46 #endif
47 #if RKAIQ_HAVE_BAYER2DNR_V2
48     void convertAiqRawnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
49                                       rk_aiq_isp_baynr_v3x_t& rawnr);
50 #endif
51 #if RKAIQ_HAVE_BAYERTNR_V2
52     void convertAiqTnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
53                                     rk_aiq_isp_tnr_v3x_t& tnr);
54 #endif
55 #if RKAIQ_HAVE_CNR_V2
56     void convertAiqUvnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
57                                      rk_aiq_isp_cnr_v3x_t& uvnr);
58 #endif
59 #if RKAIQ_HAVE_YNR_V3
60     void convertAiqYnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
61                                     rk_aiq_isp_ynr_v3x_t& ynr);
62 #endif
63 #if RKAIQ_HAVE_SHARP_V4
64     void convertAiqSharpenToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
65                                         rk_aiq_isp_sharp_v3x_t& sharp);
66 #endif
67 #if RKAIQ_HAVE_DRC_V11
68     void convertAiqDrcToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
69                                     rk_aiq_isp_drc_v3x_t& adrc_data);
70 #endif
71 #if RKAIQ_HAVE_AF_V30 || RKAIQ_ONLY_AF_STATS_V30
72     void convertAiqAfToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
73                                    const rk_aiq_isp_af_meas_v3x_t& af_data, bool af_cfg_udpate);
74 #endif
75 #if RKAIQ_HAVE_MERGE_V11
76     void convertAiqMergeToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
77                                       const rk_aiq_isp_merge_v3x_t& amerge_data);
78 #endif
79 #if RKAIQ_HAVE_CAC_V03 || RKAIQ_HAVE_CAC_V10
80     void convertAiqCacToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
81                                     struct isp3x_isp_params_cfg& isp_cfg_right,
82                                     const rk_aiq_isp_cac_v3x_t& cac_cfg, bool is_multi_isp);
83 #endif
84 #if RKAIQ_HAVE_DEHAZE_V11_DUO
85     void convertAiqAdehazeToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
86                                         const rk_aiq_isp_dehaze_v3x_t& dhaze);
87 #endif
88 };
89 
90 }
91 #endif
92