1 #include "abayertnr2/rk_aiq_uapi_camgroup_abayertnr_int_v2.h"
2 #include "rk_aiq_types_camgroup_abayertnr_prvt_v2.h"
3 
4 
5 XCamReturn
rk_aiq_uapi_camgroup_abayertnrV2_SetAttrib(RkAiqAlgoContext * ctx,rk_aiq_bayertnr_attrib_v2_t * attr,bool need_sync)6 rk_aiq_uapi_camgroup_abayertnrV2_SetAttrib(RkAiqAlgoContext *ctx,
7         rk_aiq_bayertnr_attrib_v2_t *attr,
8         bool need_sync)
9 {
10     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
11 
12     CamGroup_AbayertnrV2_Contex_t *pGroupCtx = (CamGroup_AbayertnrV2_Contex_t *)ctx;
13     Abayertnr_Context_V2_t* pCtx = pGroupCtx->abayertnr_contex_v2;
14 
15     pCtx->eMode = attr->eMode;
16     if (pCtx->eMode == ABAYERTNRV2_OP_MODE_AUTO) {
17         pCtx->stAuto = attr->stAuto;
18     } else if (pCtx->eMode == ABAYERTNRV2_OP_MODE_MANUAL) {
19         pCtx->stManual.st3DSelect = attr->stManual.st3DSelect;
20     } else if (pCtx->eMode == ABAYERTNRV2_OP_MODE_REG_MANUAL) {
21         pCtx->stManual.st3DFix = attr->stManual.st3DFix;
22     }
23     pCtx->isReCalculate |= 1;
24 
25     return XCAM_RETURN_NO_ERROR;
26 }
27 
28 XCamReturn
rk_aiq_uapi_camgroup_abayertnrV2_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_attrib_v2_t * attr)29 rk_aiq_uapi_camgroup_abayertnrV2_GetAttrib(const RkAiqAlgoContext *ctx,
30         rk_aiq_bayertnr_attrib_v2_t *attr)
31 {
32     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
33 
34     CamGroup_AbayertnrV2_Contex_t *pGroupCtx = (CamGroup_AbayertnrV2_Contex_t *)ctx;
35     Abayertnr_Context_V2_t* pCtx = pGroupCtx->abayertnr_contex_v2;
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 XCamReturn
rk_aiq_uapi_camgroup_abayertnrV2_SetStrength(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_strength_v2_t * pStrength)45 rk_aiq_uapi_camgroup_abayertnrV2_SetStrength(const RkAiqAlgoContext *ctx,
46         rk_aiq_bayertnr_strength_v2_t *pStrength)
47 {
48     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
49 
50     CamGroup_AbayertnrV2_Contex_t *pGroupCtx = (CamGroup_AbayertnrV2_Contex_t *)ctx;
51     Abayertnr_Context_V2_t* pCtx = pGroupCtx->abayertnr_contex_v2;
52 
53     float fStrength = 1.0f;
54     float fPercent = 0.5;
55 
56     fPercent = pStrength->percent;
57 
58     if(fPercent <= 0.5) {
59         fStrength =  fPercent / 0.5;
60     } else {
61         if(fPercent >= 0.999999)
62             fPercent = 0.999999;
63         fStrength = 0.5 / (1.0 - fPercent);
64     }
65 
66     pCtx->stStrength = *pStrength;
67     pCtx->stStrength.percent = fStrength;
68     pCtx->isReCalculate |= 1;
69 
70     return XCAM_RETURN_NO_ERROR;
71 }
72 
73 XCamReturn
rk_aiq_uapi_camgroup_abayertnrV2_GetStrength(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_strength_v2_t * pStrength)74 rk_aiq_uapi_camgroup_abayertnrV2_GetStrength(const RkAiqAlgoContext *ctx,
75         rk_aiq_bayertnr_strength_v2_t *pStrength)
76 {
77     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
78 
79     CamGroup_AbayertnrV2_Contex_t *pGroupCtx = (CamGroup_AbayertnrV2_Contex_t *)ctx;
80     Abayertnr_Context_V2_t* pCtx = pGroupCtx->abayertnr_contex_v2;
81 
82     float fStrength = 1.0f;
83     float fPercent = 0.5;
84 
85     fStrength = pCtx->stStrength.percent;
86 
87     if(fStrength <= 1) {
88         fPercent = fStrength * 0.5;
89     } else {
90         float tmp = 1.0;
91         tmp = 1 - 0.5 / fStrength;
92         if(abs(tmp - 0.999999) < 0.000001) {
93             tmp = 1.0;
94         }
95         fPercent = tmp;
96     }
97 
98     *pStrength = pCtx->stStrength;
99     pStrength->percent = fPercent;
100 
101     return XCAM_RETURN_NO_ERROR;
102 }
103 
104 XCamReturn
rk_aiq_uapi_camgroup_abayertnrV2_GetInfo(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_info_v2_t * pInfo)105 rk_aiq_uapi_camgroup_abayertnrV2_GetInfo(const RkAiqAlgoContext *ctx,
106         rk_aiq_bayertnr_info_v2_t *pInfo)
107 {
108     LOGD_ANR("%s:%d\n", __FUNCTION__, __LINE__);
109 
110     CamGroup_AbayertnrV2_Contex_t *pGroupCtx = (CamGroup_AbayertnrV2_Contex_t *)ctx;
111     Abayertnr_Context_V2_t* pCtx = pGroupCtx->abayertnr_contex_v2;
112 
113     pInfo->iso = pCtx->stExpInfo.arIso[pCtx->stExpInfo.hdr_mode];
114     pInfo->expo_info = pCtx->stExpInfo;
115 
116     return XCAM_RETURN_NO_ERROR;
117 }
118 
119 
120