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