1 #include "arawnr2/rk_aiq_uapi_abayernr_int_v2.h"
2 #include "arawnr2/rk_aiq_types_abayernr_algo_prvt_v2.h"
3 #include "RkAiqCalibApi.h"
4 #include "bayernr_xml2json_v2.h"
5
6
7
8 #if 1
9
10 #define RAWNR_LUMA_TF_STRENGTH_MAX_PERCENT (100.0)
11 #define RAWNR_LUMA_SF_STRENGTH_MAX_PERCENT (100.0)
12
13
14 XCamReturn
rk_aiq_uapi_arawnrV2_SetAttrib(RkAiqAlgoContext * ctx,rk_aiq_bayernr_attrib_v2_t * attr,bool need_sync)15 rk_aiq_uapi_arawnrV2_SetAttrib(RkAiqAlgoContext *ctx,
16 rk_aiq_bayernr_attrib_v2_t *attr,
17 bool need_sync)
18 {
19
20 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
21
22 pCtx->eMode = attr->eMode;
23 pCtx->stAuto = attr->stAuto;
24 pCtx->stManual = attr->stManual;
25 pCtx->isReCalculate |= 1;
26
27 return XCAM_RETURN_NO_ERROR;
28 }
29
30 XCamReturn
rk_aiq_uapi_arawnrV2_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_bayernr_attrib_v2_t * attr)31 rk_aiq_uapi_arawnrV2_GetAttrib(const RkAiqAlgoContext *ctx,
32 rk_aiq_bayernr_attrib_v2_t *attr)
33 {
34
35 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
36
37 attr->eMode = pCtx->eMode;
38 memcpy(&attr->stAuto, &pCtx->stAuto, sizeof(attr->stAuto));
39 memcpy(&attr->stManual, &pCtx->stManual, sizeof(attr->stManual));
40
41 return XCAM_RETURN_NO_ERROR;
42 }
43
44 #if 0
45 XCamReturn
46 rk_aiq_uapi_arawnrV2_SetIQPara(RkAiqAlgoContext *ctx,
47 rk_aiq_bayernr_IQPara_V2_t *pPara,
48 bool need_sync)
49 {
50
51 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
52
53
54 #if ABAYERNR_USE_JSON_FILE_V2
55 bayernrV2_calibdb_to_calibdbV2(&pPara->listHead_mode, &pCtx->bayernr_v2, 0);
56 #else
57 pCtx->list_bayernr_v2 = &pPara->listHead_mode;
58 #endif
59
60 pCtx->isIQParaUpdate = true;
61 return XCAM_RETURN_NO_ERROR;
62 }
63
64
65 XCamReturn
66 rk_aiq_uapi_arawnrV2_GetIQPara(RkAiqAlgoContext *ctx,
67 rk_aiq_bayernr_IQPara_V2_t *pPara)
68 {
69
70 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
71
72 if(pCtx == NULL && pPara == NULL) {
73 return XCAM_RETURN_NO_ERROR;
74 }
75
76 #if ABAYERNR_USE_JSON_FILE_V2
77 INIT_LIST_HEAD(&pPara->listHead_mode);
78 CalibDb_Bayernr_V2_t *pBayernrProfile = (CalibDb_Bayernr_V2_t *)malloc(sizeof(CalibDb_Bayernr_V2_t));
79 if(NULL == pBayernrProfile) {
80 LOGE("%s(%d): malloc fail(exit)\n", __FUNCTION__, __LINE__);
81 return XCAM_RETURN_NO_ERROR;
82 }
83 memset(pBayernrProfile, 0x00, sizeof(CalibDb_Bayernr_V2_t));
84 INIT_LIST_HEAD(&pBayernrProfile->st2DParams.listHead);
85 INIT_LIST_HEAD(&pBayernrProfile->st3DParams.listHead);
86 list_add_tail((struct list_head*)pBayernrProfile, pPara->listHead_mode);
87
88 for(int i = 0; i < pCtx->bayernr_v2.Bayernr2D.Setting_len; i++) {
89 Calibdb_Bayernr_2Dparams_V2_t *p2DParam = (Calibdb_Bayernr_2Dparams_V2_t *)malloc(sizeof(Calibdb_Bayernr_2Dparams_V2_t));
90 if(NULL == p2DParam) {
91 LOGE("%s(%d): malloc fail(exit)\n", __FUNCTION__, __LINE__);
92 return XCAM_RETURN_NO_ERROR;
93 }
94 memset(p2DParam, 0x00, sizeof(Calibdb_Bayernr_2Dparams_V2_t));
95 list_prepare_item(&p2DParam->listItem);
96 list_add_tail(&p2DParam->listItem, &pBayernrProfile->st2DParams.listHead);
97 }
98
99 for(int i = 0; i < pCtx->bayernr_v2.Bayernr3D.Setting_len; i++) {
100 CalibDb_Bayernr_3DParams_V2_t *p3DParam = (CalibDb_Bayernr_3DParams_V2_t *)malloc(sizeof(CalibDb_Bayernr_3DParams_V2_t));
101 if(NULL == p3DParam) {
102 LOGE("%s(%d): malloc fail(exit)\n", __FUNCTION__, __LINE__);
103 return XCAM_RETURN_NO_ERROR;
104 }
105 memset(p3DParam, 0x00, sizeof(CalibDb_Bayernr_3DParams_V2_t));
106 list_prepare_item(&p3DParam->listItem);
107 list_add_tail(&p3DParam->listItem, &pBayernrProfile->st3DParams.listHead);
108 }
109
110 bayernrV2_calibdbV2_to_calibdb(&pCtx->bayernr_v2, &pPara->listHead_mode, 0);
111 #else
112 pPara->listHead_mode = *pCtx->list_bayernr_v2;
113 #endif
114
115 return XCAM_RETURN_NO_ERROR;
116 }
117 #endif
118
119 XCamReturn
rk_aiq_uapi_rawnrV2_SetSFStrength(const RkAiqAlgoContext * ctx,float fPercent)120 rk_aiq_uapi_rawnrV2_SetSFStrength(const RkAiqAlgoContext *ctx,
121 float fPercent)
122 {
123 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
124
125 float fStrength = 1.0f;
126 float fMax = RAWNR_LUMA_SF_STRENGTH_MAX_PERCENT;
127
128
129 if(fPercent <= 0.5) {
130 fStrength = fPercent / 0.5;
131 } else {
132 fStrength = (fPercent - 0.5) * (fMax - 1) * 2 + 1;
133 }
134
135 pCtx->fRawnr_SF_Strength = fStrength;
136 pCtx->isReCalculate |= 1;
137
138 return XCAM_RETURN_NO_ERROR;
139 }
140
141
142 XCamReturn
rk_aiq_uapi_rawnrV2_SetTFStrength(const RkAiqAlgoContext * ctx,float fPercent)143 rk_aiq_uapi_rawnrV2_SetTFStrength(const RkAiqAlgoContext *ctx,
144 float fPercent)
145 {
146 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
147
148 float fStrength = 1.0;
149 float fMax = RAWNR_LUMA_TF_STRENGTH_MAX_PERCENT;
150
151 if(fPercent <= 0.5) {
152 fStrength = fPercent / 0.5;
153 } else {
154 fStrength = (fPercent - 0.5) * (fMax - 1) * 2 + 1;
155 }
156
157 pCtx->fRawnr_TF_Strength = fStrength;
158 pCtx->isReCalculate |= 1;
159
160 return XCAM_RETURN_NO_ERROR;
161 }
162
163
164 XCamReturn
rk_aiq_uapi_rawnrV2_GetSFStrength(const RkAiqAlgoContext * ctx,float * pPercent)165 rk_aiq_uapi_rawnrV2_GetSFStrength(const RkAiqAlgoContext *ctx,
166 float *pPercent)
167 {
168 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
169
170 float fStrength = 1.0f;
171 float fMax = RAWNR_LUMA_SF_STRENGTH_MAX_PERCENT;
172
173
174 fStrength = pCtx->fRawnr_SF_Strength;
175
176 if(fStrength <= 1) {
177 *pPercent = fStrength * 0.5;
178 } else {
179 *pPercent = (fStrength - 1) / ((fMax - 1) * 2) + 0.5;
180 }
181
182 return XCAM_RETURN_NO_ERROR;
183 }
184
185
186 XCamReturn
rk_aiq_uapi_rawnrV2_GetTFStrength(const RkAiqAlgoContext * ctx,float * pPercent)187 rk_aiq_uapi_rawnrV2_GetTFStrength(const RkAiqAlgoContext *ctx,
188 float *pPercent)
189 {
190 Abayernr_Context_V2_t* pCtx = (Abayernr_Context_V2_t*)ctx;
191
192 float fStrength = 1.0;
193 float fMax = RAWNR_LUMA_TF_STRENGTH_MAX_PERCENT;
194
195 fStrength = pCtx->fRawnr_TF_Strength;
196
197 if(fStrength <= 1) {
198 *pPercent = fStrength * 0.5;
199 } else {
200 *pPercent = (fStrength - 1) / ((fMax - 1) * 2) + 0.5;
201 }
202
203 return XCAM_RETURN_NO_ERROR;
204 }
205
206
207 #endif
208
209