xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/aynr2/rk_aiq_uapi_aynr_int_v2.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "aynr2/rk_aiq_uapi_aynr_int_v2.h"
2 #include "aynr2/rk_aiq_types_aynr_algo_prvt_v2.h"
3 
4 #if 1
5 #define YNRV2_LUMA_SF_STRENGTH_MAX_PERCENT (100.0)
6 
7 
8 XCamReturn
rk_aiq_uapi_aynrV2_SetAttrib(RkAiqAlgoContext * ctx,rk_aiq_ynr_attrib_v2_t * attr,bool need_sync)9 rk_aiq_uapi_aynrV2_SetAttrib(RkAiqAlgoContext *ctx,
10                              rk_aiq_ynr_attrib_v2_t *attr,
11                              bool need_sync)
12 {
13 
14     Aynr_Context_V2_t* pCtx = (Aynr_Context_V2_t*)ctx;
15 
16     pCtx->eMode = attr->eMode;
17     pCtx->stAuto = attr->stAuto;
18     pCtx->stManual = attr->stManual;
19     pCtx->isReCalculate |= 1;
20 
21     return XCAM_RETURN_NO_ERROR;
22 }
23 
24 XCamReturn
rk_aiq_uapi_aynrV2_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_ynr_attrib_v2_t * attr)25 rk_aiq_uapi_aynrV2_GetAttrib(const RkAiqAlgoContext *ctx,
26                              rk_aiq_ynr_attrib_v2_t *attr)
27 {
28 
29     Aynr_Context_V2_t* pCtx = (Aynr_Context_V2_t*)ctx;
30 
31     attr->eMode = pCtx->eMode;
32     memcpy(&attr->stAuto, &pCtx->stAuto, sizeof(attr->stAuto));
33     memcpy(&attr->stManual, &pCtx->stManual, sizeof(attr->stManual));
34 
35     return XCAM_RETURN_NO_ERROR;
36 }
37 
38 #if 0
39 XCamReturn
40 rk_aiq_uapi_ynr_SetIQPara(RkAiqAlgoContext *ctx,
41                           rk_aiq_nr_IQPara_t *pPara,
42                           bool need_sync)
43 {
44 
45     Aynr_Context_V2_t* pCtx = (Aynr_Context_V2_t*)ctx;
46 
47     if(pPara->module_bits & (1 << ANR_MODULE_BAYERNR)) {
48         pCtx->stBayernrCalib = pPara->stBayernrPara;
49         pCtx->isIQParaUpdate = true;
50     }
51 
52     if(pPara->module_bits & (1 << ANR_MODULE_MFNR)) {
53         pCtx->stMfnrCalib = pPara->stMfnrPara;
54         pCtx->isIQParaUpdate = true;
55     }
56 
57     if(pPara->module_bits & (1 << ANR_MODULE_UVNR)) {
58         pCtx->stUvnrCalib = pPara->stUvnrPara;
59         pCtx->isIQParaUpdate = true;
60     }
61 
62     if(pPara->module_bits & (1 << ANR_MODULE_YNR)) {
63         pCtx->stYnrCalib = pPara->stYnrPara;
64         pCtx->isIQParaUpdate = true;
65     }
66 
67     return XCAM_RETURN_NO_ERROR;
68 }
69 
70 
71 XCamReturn
72 rk_aiq_uapi_ynr_GetIQPara(RkAiqAlgoContext *ctx,
73                           rk_aiq_nr_IQPara_t *pPara)
74 {
75 
76     Aynr_Context_V2_t* pCtx = (Aynr_Context_V2_t*)ctx;
77 
78     pPara->stBayernrPara = pCtx->stBayernrCalib;
79     pPara->stMfnrPara = pCtx->stMfnrCalib;
80     pPara->stUvnrPara = pCtx->stUvnrCalib;
81     pPara->stYnrPara = pCtx->stYnrCalib;
82 
83     return XCAM_RETURN_NO_ERROR;
84 }
85 
86 #endif
87 
88 XCamReturn
rk_aiq_uapi_aynrV2_SetLumaSFStrength(const RkAiqAlgoContext * ctx,float fPercent)89 rk_aiq_uapi_aynrV2_SetLumaSFStrength(const RkAiqAlgoContext *ctx,
90                                      float fPercent)
91 {
92     Aynr_Context_V2_t* pCtx = (Aynr_Context_V2_t*)ctx;
93 
94     float fStrength = 1.0f;
95     float fMax = YNRV2_LUMA_SF_STRENGTH_MAX_PERCENT;
96 
97 
98     if(fPercent <= 0.5) {
99         fStrength =  fPercent / 0.5;
100     } else {
101         fStrength = (fPercent - 0.5) * (fMax - 1) * 2 + 1;
102     }
103 
104     pCtx->fYnr_SF_Strength = fStrength;
105     pCtx->isReCalculate |= 1;
106 
107     return XCAM_RETURN_NO_ERROR;
108 }
109 
110 
111 
112 XCamReturn
rk_aiq_uapi_aynrV2_GetLumaSFStrength(const RkAiqAlgoContext * ctx,float * pPercent)113 rk_aiq_uapi_aynrV2_GetLumaSFStrength(const RkAiqAlgoContext *ctx,
114                                      float *pPercent)
115 {
116     Aynr_Context_V2_t* pCtx = (Aynr_Context_V2_t*)ctx;
117 
118     float fStrength = 1.0f;
119     float fMax = YNRV2_LUMA_SF_STRENGTH_MAX_PERCENT;
120 
121 
122     fStrength = pCtx->fYnr_SF_Strength;
123 
124     if(fStrength <= 1) {
125         *pPercent = fStrength * 0.5;
126     } else {
127         *pPercent = (fStrength - 1) / ((fMax - 1) * 2) + 0.5;
128     }
129 
130     return XCAM_RETURN_NO_ERROR;
131 }
132 
133 
134 #endif
135 
136