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