xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI/rk_aiq_user_api_agamma.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
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 #include "rk_aiq_user_api_agamma.h"
18 
19 #include "algo_handlers/RkAiqAgammaHandle.h"
20 #include "uAPI2/rk_aiq_user_api2_agamma.h"
21 
22 RKAIQ_BEGIN_DECLARE
23 
24 
25 #ifdef RK_SIMULATOR_HW
26 #define CHECK_USER_API_ENABLE
27 #endif
28 
29 #if RKAIQ_HAVE_GAMMA_V10
GammaTransferSetData(rk_aiq_gamma_v10_attr_t * DegammaV2,rk_aiq_gamma_attrib_t * DegammaV1)30 void GammaTransferSetData(rk_aiq_gamma_v10_attr_t* DegammaV2, rk_aiq_gamma_attrib_t* DegammaV1) {
31     /*
32         //op mode
33         DegammaV2->mode = DegammaV1->mode;
34 
35         //st manual
36         memcpy(&DegammaV2->stManual, &DegammaV1->stManual, sizeof(Adegamma_api_manual_t));
37 
38         //set tool
39 
40         DegammaV2->stTool.GammaTuningPara.Gamma_en = DegammaV1->stTool.gamma_en ? true : false;
41         DegammaV2->stTool.GammaTuningPara.Gamma_out_offset = DegammaV1->stTool.gamma_out_offset;
42         if(DegammaV1->stTool.gamma_out_segnum == 0)
43             DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum = GAMMATYPE_LOG;
44         else
45             DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum = GAMMATYPE_EQU;
46         int mode = DegammaV1->Scene_mode;
47         if(mode == 0)
48             for(int i = 0; i < 45; i++)
49                 DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_normal[i] + 0.5);
50         else if(mode == 1)
51             for(int i = 0; i < 45; i++)
52                 DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_hdr[i] + 0.5);
53         else if(mode == 3)
54             for(int i = 0; i < 45; i++)
55                 DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_night[i] + 0.5);
56         else
57             for(int i = 0; i < 45; i++)
58                 DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_normal[i] + 0.5);
59                 */
60 }
61 
GammaTransferGetData(rk_aiq_gamma_v10_attr_t * DegammaV2,rk_aiq_gamma_attrib_t * DegammaV1)62 void GammaTransferGetData(rk_aiq_gamma_v10_attr_t* DegammaV2, rk_aiq_gamma_attrib_t* DegammaV1) {
63     /*
64     //op mode
65     DegammaV1->mode = DegammaV2->mode;
66 
67     //st manual
68     memcpy(&DegammaV1->stManual, &DegammaV2->stManual, sizeof(Adegamma_api_manual_t));
69 
70     //mode
71     DegammaV1->Scene_mode = 0;
72 
73     //set tool
74     DegammaV1->stTool.gamma_en = DegammaV2->stTool.GammaTuningPara.Gamma_en ? 1 : 0;
75     DegammaV1->stTool.gamma_out_offset = DegammaV2->stTool.GammaTuningPara.Gamma_out_offset;
76     if(DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum == GAMMATYPE_LOG)
77         DegammaV1->stTool.gamma_out_segnum = 0;
78     else if(DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum == GAMMATYPE_EQU)
79         DegammaV1->stTool.gamma_out_segnum = 1;
80     for(int i = 0; i < 45; i++) {
81         DegammaV1->stTool.curve_normal[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
82         DegammaV1->stTool.curve_hdr[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
83         DegammaV1->stTool.curve_night[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
84     }
85     */
86 }
87 
rk_aiq_user_api_agamma_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_gamma_attrib_t attr)88 XCamReturn rk_aiq_user_api_agamma_SetAttrib(
89     const rk_aiq_sys_ctx_t* sys_ctx,
90     rk_aiq_gamma_attrib_t
91         attr) { /*
92                    rk_aiq_gamma_v10_attr_t gammaAttr;
93                    memset(&gammaAttr, 0, sizeof(rk_aiq_gamma_v10_attr_t));
94 
95                    GammaTransferSetData(&gammaAttr, &attr);
96 
97                    XCamReturn ret_gamma = rk_aiq_user_api2_agamma_V10_SetAttrib(sys_ctx, gammaAttr);
98                */
99     return XCAM_RETURN_ERROR_UNKNOWN;
100 }
101 
rk_aiq_user_api_agamma_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_gamma_attrib_t * attr)102 XCamReturn rk_aiq_user_api_agamma_GetAttrib(
103     const rk_aiq_sys_ctx_t* sys_ctx,
104     rk_aiq_gamma_attrib_t* attr) { /*
105                                       rk_aiq_gamma_v10_attr_t gammaAttr;
106                                       memset(&gammaAttr, 0, sizeof(rk_aiq_gamma_attrib_V10_t));
107 
108                                       GammaTransferGetData(&gammaAttr, attr);
109 
110                                       XCamReturn ret_gamma =
111                                       rk_aiq_user_api2_agamma_V10_GetAttrib(sys_ctx, &gammaAttr);
112                                       */
113 
114     return XCAM_RETURN_ERROR_UNKNOWN;
115 }
116 #else
117 XCamReturn
118 rk_aiq_user_api_agamma_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_gamma_attrib_t attr) {
119     return XCAM_RETURN_ERROR_UNKNOWN;
120 }
121 
122 XCamReturn
123 rk_aiq_user_api_agamma_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_gamma_attrib_t *attr) {
124     return XCAM_RETURN_ERROR_UNKNOWN;
125 }
126 #endif
127 
128 
129 RKAIQ_END_DECLARE
130