xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/again/rk_aiq_uapi_again_int.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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