1 #include "abayertnr2/rk_aiq_uapi_abayertnr_int_v2.h"
2 #include "abayertnr2/rk_aiq_types_abayertnr_algo_prvt_v2.h"
3 #include "RkAiqCalibApi.h"
4 //#include "bayertnr_xml2json_v2.h"
5
6
7
8 #if 1
9
10 #define ABAYERTNR_LUMA_TF_STRENGTH_MAX_PERCENT (7.0)
11
12 XCamReturn
rk_aiq_uapi_abayertnrV2_SetAttrib(RkAiqAlgoContext * ctx,rk_aiq_bayertnr_attrib_v2_t * attr,bool need_sync)13 rk_aiq_uapi_abayertnrV2_SetAttrib(RkAiqAlgoContext *ctx,
14 rk_aiq_bayertnr_attrib_v2_t *attr,
15 bool need_sync)
16 {
17
18 Abayertnr_Context_V2_t* pCtx = (Abayertnr_Context_V2_t*)ctx;
19
20 pCtx->eMode = attr->eMode;
21 if(pCtx->eMode == ABAYERTNRV2_OP_MODE_AUTO) {
22 pCtx->stAuto = attr->stAuto;
23 } else if(pCtx->eMode == ABAYERTNRV2_OP_MODE_MANUAL) {
24 pCtx->stManual.st3DSelect = attr->stManual.st3DSelect;
25 } else if(pCtx->eMode == ABAYERTNRV2_OP_MODE_REG_MANUAL) {
26 pCtx->stManual.st3DFix = attr->stManual.st3DFix;
27 }
28 pCtx->isReCalculate |= 1;
29
30 return XCAM_RETURN_NO_ERROR;
31 }
32
33 XCamReturn
rk_aiq_uapi_abayertnrV2_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_attrib_v2_t * attr)34 rk_aiq_uapi_abayertnrV2_GetAttrib(const RkAiqAlgoContext *ctx,
35 rk_aiq_bayertnr_attrib_v2_t *attr)
36 {
37
38 Abayertnr_Context_V2_t* pCtx = (Abayertnr_Context_V2_t*)ctx;
39
40 attr->eMode = pCtx->eMode;
41 memcpy(&attr->stAuto, &pCtx->stAuto, sizeof(attr->stAuto));
42 memcpy(&attr->stManual, &pCtx->stManual, sizeof(attr->stManual));
43
44 return XCAM_RETURN_NO_ERROR;
45 }
46
47
48 XCamReturn
rk_aiq_uapi_abayertnrV2_SetStrength(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_strength_v2_t * pStrength)49 rk_aiq_uapi_abayertnrV2_SetStrength(const RkAiqAlgoContext *ctx,
50 rk_aiq_bayertnr_strength_v2_t *pStrength)
51 {
52 Abayertnr_Context_V2_t* pCtx = (Abayertnr_Context_V2_t*)ctx;
53
54 float fStrength = 1.0;
55 float fslope = ABAYERTNR_LUMA_TF_STRENGTH_MAX_PERCENT;
56 float fPercent = 0.5;
57
58 fPercent = pStrength->percent;
59
60 if(fPercent <= 0.5) {
61 fStrength = fPercent / 0.5;
62 } else {
63 if(fPercent >= 0.999999)
64 fPercent = 0.999999;
65 fStrength = 0.5 * fslope / (1.0 - fPercent) - fslope + 1;
66 }
67
68 pCtx->stStrength = *pStrength;
69 pCtx->stStrength.percent = fStrength;
70 pCtx->isReCalculate |= 1;
71
72 return XCAM_RETURN_NO_ERROR;
73 }
74
75
76
77
78 XCamReturn
rk_aiq_uapi_abayertnrV2_GetStrength(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_strength_v2_t * pStrength)79 rk_aiq_uapi_abayertnrV2_GetStrength(const RkAiqAlgoContext *ctx,
80 rk_aiq_bayertnr_strength_v2_t *pStrength)
81 {
82 Abayertnr_Context_V2_t* pCtx = (Abayertnr_Context_V2_t*)ctx;
83
84 float fStrength = 1.0;
85 float fslope = ABAYERTNR_LUMA_TF_STRENGTH_MAX_PERCENT;
86 float fPercent = 0.5;
87
88 fStrength = pCtx->stStrength.percent;
89
90 if(fStrength <= 1) {
91 fPercent = fStrength * 0.5;
92 } else {
93 float tmp = 1.0;
94 tmp = 1 - 0.5 * fslope / (fStrength + fslope - 1);
95 if(abs(tmp - 0.999999) < 0.000001) {
96 tmp = 1.0;
97 }
98 fPercent = tmp;
99 }
100
101 *pStrength = pCtx->stStrength;
102 pStrength->percent = fPercent;
103
104 return XCAM_RETURN_NO_ERROR;
105 }
106
107 XCamReturn
rk_aiq_uapi_abayertnrV2_GetInfo(const RkAiqAlgoContext * ctx,rk_aiq_bayertnr_info_v2_t * pInfo)108 rk_aiq_uapi_abayertnrV2_GetInfo (const RkAiqAlgoContext *ctx,
109 rk_aiq_bayertnr_info_v2_t *pInfo)
110 {
111 Abayertnr_Context_V2_t* pCtx = (Abayertnr_Context_V2_t*)ctx;
112
113 pInfo->iso = pCtx->stExpInfo.arIso[pCtx->stExpInfo.hdr_mode];
114
115 pInfo->expo_info = pCtx->stExpInfo;
116
117 return XCAM_RETURN_NO_ERROR;
118 }
119
120
121
122 #endif
123
124