1 #include "auvnr/rk_aiq_uapi_auvnr_int_v1.h"
2 #include "auvnr/rk_aiq_types_auvnr_algo_prvt_v1.h"
3 #include "auvnr/rk_aiq_auvnr_algo_uvnr_v1.h"
4
5
6 #if 1
7 #define UVNR_CHROMA_SF_STRENGTH_MAX_PERCENT (50.0)
8
9
10 XCamReturn
rk_aiq_uapi_auvnr_SetAttrib(RkAiqAlgoContext * ctx,rk_aiq_uvnr_attrib_v1_t * attr,bool need_sync)11 rk_aiq_uapi_auvnr_SetAttrib(RkAiqAlgoContext *ctx,
12 rk_aiq_uvnr_attrib_v1_t *attr,
13 bool need_sync)
14 {
15
16 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
17
18 pCtx->eMode = attr->eMode;
19 pCtx->stAuto = attr->stAuto;
20 pCtx->stManual = attr->stManual;
21
22 return XCAM_RETURN_NO_ERROR;
23 }
24
25 XCamReturn
rk_aiq_uapi_auvnr_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_uvnr_attrib_v1_t * attr)26 rk_aiq_uapi_auvnr_GetAttrib(const RkAiqAlgoContext *ctx,
27 rk_aiq_uvnr_attrib_v1_t *attr)
28 {
29
30 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
31
32 attr->eMode = pCtx->eMode;
33 memcpy(&attr->stAuto, &pCtx->stAuto, sizeof(Auvnr_Auto_Attr_V1_t));
34 memcpy(&attr->stManual, &pCtx->stManual, sizeof(Auvnr_Manual_Attr_V1_t));
35
36 return XCAM_RETURN_NO_ERROR;
37 }
38
39 XCamReturn
rk_aiq_uapi_auvnr_SetIQPara(RkAiqAlgoContext * ctx,rk_aiq_uvnr_IQPara_v1_t * pPara,bool need_sync)40 rk_aiq_uapi_auvnr_SetIQPara(RkAiqAlgoContext *ctx,
41 rk_aiq_uvnr_IQPara_v1_t *pPara,
42 bool need_sync)
43 {
44 #ifdef RKAIQ_ENABLE_PARSER_V1
45 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
46
47
48 pCtx->stUvnrCalib.enable = pPara->stUvnrPara.enable;
49 memcpy(pCtx->stUvnrCalib.version, pPara->stUvnrPara.version, sizeof(pPara->stUvnrPara.version));
50 for(int i=0; i<pCtx->stUvnrCalib.mode_num; i++){
51 pCtx->stUvnrCalib.mode_cell[i] = pPara->stUvnrPara.mode_cell[i];
52 }
53 pCtx->isIQParaUpdate = true;
54
55 #if(ANR_USE_JSON_PARA)
56 uvnrV1_calibdb_to_calibdbV2(&pCtx->stUvnrCalib, &pCtx->uvnr_v1, 0);
57 #endif
58
59
60
61 return XCAM_RETURN_NO_ERROR;
62 #else
63 return XCAM_RETURN_ERROR_PARAM;
64 #endif
65 }
66
67
68 XCamReturn
rk_aiq_uapi_auvnr_GetIQPara(RkAiqAlgoContext * ctx,rk_aiq_uvnr_IQPara_v1_t * pPara)69 rk_aiq_uapi_auvnr_GetIQPara(RkAiqAlgoContext *ctx,
70 rk_aiq_uvnr_IQPara_v1_t *pPara)
71 {
72 #ifdef RKAIQ_ENABLE_PARSER_V1
73
74 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
75
76 #if(ANR_USE_JSON_PARA)
77 uvnrV1_calibdbV2_to_calibdb(&pCtx->uvnr_v1, &pCtx->stUvnrCalib, 0);
78 #endif
79 memset(&pPara->stUvnrPara, 0x00, sizeof(CalibDb_UVNR_t));
80 pPara->stUvnrPara.enable = pCtx->stUvnrCalib.enable;
81 memcpy(pPara->stUvnrPara.version, pCtx->stUvnrCalib.version, sizeof(pPara->stUvnrPara.version));
82 for(int i=0; i<pCtx->stUvnrCalib.mode_num; i++){
83 pPara->stUvnrPara.mode_cell[i] = pCtx->stUvnrCalib.mode_cell[i];
84 }
85
86 return XCAM_RETURN_NO_ERROR;
87 #else
88 return XCAM_RETURN_ERROR_PARAM;
89 #endif
90 }
91
92
93 XCamReturn
rk_aiq_uapi_auvnr_SetChromaSFStrength(const RkAiqAlgoContext * ctx,float fPercent)94 rk_aiq_uapi_auvnr_SetChromaSFStrength(const RkAiqAlgoContext *ctx,
95 float fPercent)
96 {
97 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
98
99 float fStrength = 1.0f;
100 float fMax = UVNR_CHROMA_SF_STRENGTH_MAX_PERCENT;
101
102 if(fPercent <= 0.5){
103 fStrength = fPercent /0.5;
104 }else{
105 fStrength = (fPercent - 0.5)*(fMax - 1) * 2 + 1;
106 }
107
108 pCtx->fChrom_SF_Strength = fStrength;
109
110 return XCAM_RETURN_NO_ERROR;
111 }
112
113
114
115 XCamReturn
rk_aiq_uapi_auvnr_GetChromaSFStrength(const RkAiqAlgoContext * ctx,float * pPercent)116 rk_aiq_uapi_auvnr_GetChromaSFStrength(const RkAiqAlgoContext *ctx,
117 float *pPercent)
118 {
119 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
120
121 float fStrength = 1.0f;
122 float fMax = UVNR_CHROMA_SF_STRENGTH_MAX_PERCENT;
123
124 fStrength = pCtx->fChrom_SF_Strength;
125
126
127 if(fStrength <= 1){
128 *pPercent = fStrength * 0.5;
129 }else{
130 *pPercent = (fStrength - 1)/((fMax - 1) * 2) + 0.5;
131 }
132
133
134 return XCAM_RETURN_NO_ERROR;
135 }
136
137
138 XCamReturn
rk_aiq_uapi_auvnr_SetJsonPara(RkAiqAlgoContext * ctx,rk_aiq_uvnr_JsonPara_v1_t * pPara,bool need_sync)139 rk_aiq_uapi_auvnr_SetJsonPara(RkAiqAlgoContext *ctx,
140 rk_aiq_uvnr_JsonPara_v1_t *pPara,
141 bool need_sync)
142 {
143
144 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
145
146 uvnr_calibdbV2_assign_v1(&pCtx->uvnr_v1, &pPara->uvnr_v1);
147 pCtx->isIQParaUpdate = true;
148
149 return XCAM_RETURN_NO_ERROR;
150 }
151
152
153
154 XCamReturn
rk_aiq_uapi_auvnr_GetJsonPara(RkAiqAlgoContext * ctx,rk_aiq_uvnr_JsonPara_v1_t * pPara)155 rk_aiq_uapi_auvnr_GetJsonPara(RkAiqAlgoContext *ctx,
156 rk_aiq_uvnr_JsonPara_v1_t *pPara)
157 {
158
159 Auvnr_Context_V1_t* pCtx = (Auvnr_Context_V1_t*)ctx;
160
161 uvnr_calibdbV2_assign_v1(&pPara->uvnr_v1, &pCtx->uvnr_v1);
162
163 return XCAM_RETURN_NO_ERROR;
164 }
165
166
167 #endif
168
169