1 #include "aynr3/rk_aiq_uapi_camgroup_aynr_int_v3.h"
2 #include "rk_aiq_types_camgroup_aynr_prvt_v3.h"
3 
4 #if 1
5 
6 
7 XCamReturn
rk_aiq_uapi_camgroup_aynrV3_SetAttrib(RkAiqAlgoContext * ctx,rk_aiq_ynr_attrib_v3_t * attr,bool need_sync)8 rk_aiq_uapi_camgroup_aynrV3_SetAttrib(RkAiqAlgoContext *ctx,
9                                       rk_aiq_ynr_attrib_v3_t *attr,
10                                       bool need_sync)
11 {
12     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
13 
14     CamGroup_AynrV3_Contex_t *pGroupCtx = (CamGroup_AynrV3_Contex_t *)ctx;
15     Aynr_Context_V3_t* pCtx = pGroupCtx->aynr_contex_v3;
16 
17     pCtx->eMode = attr->eMode;
18     if(pCtx->eMode == AYNRV3_OP_MODE_AUTO) {
19         pCtx->stAuto = attr->stAuto;
20     } else if(pCtx->eMode == AYNRV3_OP_MODE_MANUAL) {
21         pCtx->stManual.stSelect = attr->stManual.stSelect;
22     } else if(pCtx->eMode == AYNRV3_OP_MODE_REG_MANUAL) {
23         pCtx->stManual.stFix = attr->stManual.stFix;
24     }
25     pCtx->isReCalculate |= 1;
26 
27     return XCAM_RETURN_NO_ERROR;
28 }
29 
30 XCamReturn
rk_aiq_uapi_camgroup_aynrV3_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_ynr_attrib_v3_t * attr)31 rk_aiq_uapi_camgroup_aynrV3_GetAttrib(const RkAiqAlgoContext *ctx,
32                                       rk_aiq_ynr_attrib_v3_t *attr)
33 {
34     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
35 
36     CamGroup_AynrV3_Contex_t *pGroupCtx = (CamGroup_AynrV3_Contex_t *)ctx;
37     Aynr_Context_V3_t* pCtx = pGroupCtx->aynr_contex_v3;
38 
39     attr->eMode = pCtx->eMode;
40     memcpy(&attr->stAuto, &pCtx->stAuto, sizeof(attr->stAuto));
41     memcpy(&attr->stManual, &pCtx->stManual, sizeof(attr->stManual));
42 
43     return XCAM_RETURN_NO_ERROR;
44 }
45 
46 
47 XCamReturn
rk_aiq_uapi_camgroup_aynrV3_SetLumaSFStrength(const RkAiqAlgoContext * ctx,rk_aiq_ynr_strength_v3_t * pStrength)48 rk_aiq_uapi_camgroup_aynrV3_SetLumaSFStrength(const RkAiqAlgoContext *ctx,
49         rk_aiq_ynr_strength_v3_t *pStrength)
50 {
51     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
52     CamGroup_AynrV3_Contex_t *pGroupCtx = (CamGroup_AynrV3_Contex_t *)ctx;
53     Aynr_Context_V3_t* pCtx = pGroupCtx->aynr_contex_v3;
54 
55     float fStrength = 1.0f;
56     float fPercent = 0.5;
57 
58     fPercent = pStrength->percent;
59 
60 
61     if(fPercent <= 0.5) {
62         fStrength =  fPercent / 0.5;
63     } else {
64         if(fPercent >= 0.999999)
65             fPercent = 0.999999;
66         fStrength = 0.5 / (1.0 - fPercent);
67     }
68 
69     pCtx->stStrength = *pStrength;
70     pCtx->stStrength.percent = fStrength;
71     pCtx->isReCalculate |= 1;
72 
73     return XCAM_RETURN_NO_ERROR;
74 }
75 
76 
77 
78 XCamReturn
rk_aiq_uapi_camgroup_aynrV3_GetLumaSFStrength(const RkAiqAlgoContext * ctx,rk_aiq_ynr_strength_v3_t * pStrength)79 rk_aiq_uapi_camgroup_aynrV3_GetLumaSFStrength(const RkAiqAlgoContext *ctx,
80         rk_aiq_ynr_strength_v3_t *pStrength)
81 {
82     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
83     CamGroup_AynrV3_Contex_t *pGroupCtx = (CamGroup_AynrV3_Contex_t *)ctx;
84     Aynr_Context_V3_t* pCtx = pGroupCtx->aynr_contex_v3;
85 
86     float fStrength = 1.0f;
87     float fPercent = 0.5;
88 
89     fStrength = pCtx->stStrength.percent;
90 
91     if(fStrength <= 1) {
92         fPercent = fStrength * 0.5;
93     } else {
94         float tmp = 1.0;
95         tmp = 1 - 0.5 / fStrength;
96         if(abs(tmp - 0.999999) < 0.000001) {
97             tmp = 1.0;
98         }
99         fPercent = tmp;
100     }
101 
102     *pStrength = pCtx->stStrength;
103     pStrength->percent = fPercent;
104 
105     return XCAM_RETURN_NO_ERROR;
106 }
107 
108 XCamReturn
rk_aiq_uapi_camgroup_aynrV3_GetInfo(const RkAiqAlgoContext * ctx,rk_aiq_ynr_info_v3_t * pInfo)109 rk_aiq_uapi_camgroup_aynrV3_GetInfo(const RkAiqAlgoContext *ctx,
110                                     rk_aiq_ynr_info_v3_t *pInfo)
111 {
112     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
113     CamGroup_AynrV3_Contex_t *pGroupCtx = (CamGroup_AynrV3_Contex_t *)ctx;
114     Aynr_Context_V3_t* pCtx = pGroupCtx->aynr_contex_v3;
115 
116     pInfo->iso = pCtx->stExpInfo.arIso[pCtx->stExpInfo.hdr_mode];
117     pInfo->expo_info = pCtx->stExpInfo;
118     return XCAM_RETURN_NO_ERROR;
119 }
120 
121 #endif
122 
123