xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/adrc/rk_aiq_uapi_adrc_int.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "rk_aiq_uapi_adrc_int.h"
2 #include "adrc/rk_aiq_types_adrc_algo_prvt.h"
3 #if RKAIQ_HAVE_DRC_V10
4 #include "adrc/rk_aiq_adrc_algo_v10.h"
5 #endif
6 #if RKAIQ_HAVE_DRC_V11
7 #include "adrc/rk_aiq_adrc_algo_v11.h"
8 #endif
9 #if RKAIQ_HAVE_DRC_V12 || RKAIQ_HAVE_DRC_V12_LITE
10 #include "adrc/rk_aiq_adrc_algo_v12.h"
11 #endif
12 
13 #if RKAIQ_HAVE_DRC_V10
rk_aiq_uapi_adrc_v10_SetAttrib(RkAiqAlgoContext * ctx,const drcAttrV10_t * attr,bool need_sync)14 XCamReturn rk_aiq_uapi_adrc_v10_SetAttrib(RkAiqAlgoContext* ctx, const drcAttrV10_t* attr,
15                                           bool need_sync) {
16     LOG1_ATMO("ENTER: %s \n", __func__);
17     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)(ctx);
18     XCamReturn ret = XCAM_RETURN_NO_ERROR;
19 
20     pAdrcCtx->drcAttrV10.opMode = attr->opMode;
21     if (attr->opMode == DRC_OPMODE_AUTO) {
22         memcpy(&pAdrcCtx->drcAttrV10.stAuto, &attr->stAuto, sizeof(CalibDbV2_drc_V10_t));
23         pAdrcCtx->ifReCalcStAuto = true;
24     }
25     if (attr->opMode == DRC_OPMODE_MANUAL) {
26         memcpy(&pAdrcCtx->drcAttrV10.stManual, &attr->stManual, sizeof(mdrcAttr_V10_t));
27         pAdrcCtx->ifReCalcStManual = true;
28     }
29 
30     LOG1_ATMO("EXIT: %s \n", __func__);
31     return ret;
32 }
33 
rk_aiq_uapi_adrc_v10_GetAttrib(RkAiqAlgoContext * ctx,drcAttrV10_t * attr)34 XCamReturn rk_aiq_uapi_adrc_v10_GetAttrib(RkAiqAlgoContext* ctx, drcAttrV10_t* attr) {
35     LOG1_ATMO("ENTER: %s \n", __func__);
36     XCamReturn ret = XCAM_RETURN_NO_ERROR;
37 
38     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)ctx;
39 
40     attr->opMode = pAdrcCtx->drcAttrV10.opMode;
41     memcpy(&attr->stAuto, &pAdrcCtx->drcAttrV10.stAuto, sizeof(CalibDbV2_drc_V10_t));
42     memcpy(&attr->stManual, &pAdrcCtx->drcAttrV10.stManual, sizeof(mdrcAttr_V10_t));
43     // drc info
44     AdrcV10Params2Api(pAdrcCtx, &attr->Info);
45 
46     LOG1_ATMO("EXIT: %s \n", __func__);
47     return XCAM_RETURN_NO_ERROR;
48 }
49 #endif
50 #if RKAIQ_HAVE_DRC_V11
rk_aiq_uapi_adrc_v11_SetAttrib(RkAiqAlgoContext * ctx,const drcAttrV11_t * attr,bool need_sync)51 XCamReturn rk_aiq_uapi_adrc_v11_SetAttrib(RkAiqAlgoContext* ctx, const drcAttrV11_t* attr,
52                                           bool need_sync) {
53     LOG1_ATMO("ENTER: %s \n", __func__);
54     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)(ctx);
55     XCamReturn ret          = XCAM_RETURN_NO_ERROR;
56 
57     pAdrcCtx->drcAttrV11.opMode = attr->opMode;
58     if (attr->opMode == DRC_OPMODE_AUTO) {
59         memcpy(&pAdrcCtx->drcAttrV11.stAuto, &attr->stAuto, sizeof(CalibDbV2_drc_V11_t));
60         pAdrcCtx->ifReCalcStAuto = true;
61     }
62     if (attr->opMode == DRC_OPMODE_MANUAL) {
63         memcpy(&pAdrcCtx->drcAttrV11.stManual, &attr->stManual, sizeof(mdrcAttr_V11_t));
64         pAdrcCtx->ifReCalcStManual = true;
65     }
66 
67     LOG1_ATMO("EXIT: %s \n", __func__);
68     return ret;
69 }
70 
rk_aiq_uapi_adrc_v11_GetAttrib(RkAiqAlgoContext * ctx,drcAttrV11_t * attr)71 XCamReturn rk_aiq_uapi_adrc_v11_GetAttrib(RkAiqAlgoContext* ctx, drcAttrV11_t* attr) {
72     LOG1_ATMO("ENTER: %s \n", __func__);
73     XCamReturn ret = XCAM_RETURN_NO_ERROR;
74 
75     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)ctx;
76 
77     attr->opMode = pAdrcCtx->drcAttrV11.opMode;
78     memcpy(&attr->stAuto, &pAdrcCtx->drcAttrV11.stAuto, sizeof(CalibDbV2_drc_V11_t));
79     memcpy(&attr->stManual, &pAdrcCtx->drcAttrV11.stManual, sizeof(mdrcAttr_V11_t));
80     // drc info
81     AdrcV11Params2Api(pAdrcCtx, &attr->Info);
82 
83     LOG1_ATMO("EXIT: %s \n", __func__);
84     return XCAM_RETURN_NO_ERROR;
85 }
86 #endif
87 #if RKAIQ_HAVE_DRC_V12
rk_aiq_uapi_adrc_v12_SetAttrib(RkAiqAlgoContext * ctx,const drcAttrV12_t * attr,bool need_sync)88 XCamReturn rk_aiq_uapi_adrc_v12_SetAttrib(RkAiqAlgoContext* ctx, const drcAttrV12_t* attr,
89                                           bool need_sync) {
90     LOG1_ATMO("ENTER: %s \n", __func__);
91     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)(ctx);
92     XCamReturn ret          = XCAM_RETURN_NO_ERROR;
93 
94     pAdrcCtx->drcAttrV12.opMode = attr->opMode;
95     if (attr->opMode == DRC_OPMODE_AUTO) {
96         memcpy(&pAdrcCtx->drcAttrV12.stAuto, &attr->stAuto, sizeof(CalibDbV2_drc_V12_t));
97         AdrcV12ClipStAutoParams(pAdrcCtx);
98         pAdrcCtx->ifReCalcStAuto = true;
99     }
100     if (attr->opMode == DRC_OPMODE_MANUAL) {
101         memcpy(&pAdrcCtx->drcAttrV12.stManual, &attr->stManual, sizeof(mdrcAttr_V12_t));
102         pAdrcCtx->ifReCalcStManual = true;
103     }
104 
105     LOG1_ATMO("EXIT: %s \n", __func__);
106     return ret;
107 }
108 
rk_aiq_uapi_adrc_v12_GetAttrib(RkAiqAlgoContext * ctx,drcAttrV12_t * attr)109 XCamReturn rk_aiq_uapi_adrc_v12_GetAttrib(RkAiqAlgoContext* ctx, drcAttrV12_t* attr) {
110     LOG1_ATMO("ENTER: %s \n", __func__);
111     XCamReturn ret = XCAM_RETURN_NO_ERROR;
112 
113     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)ctx;
114 
115     attr->opMode = pAdrcCtx->drcAttrV12.opMode;
116     memcpy(&attr->stAuto, &pAdrcCtx->drcAttrV12.stAuto, sizeof(CalibDbV2_drc_V12_t));
117     memcpy(&attr->stManual, &pAdrcCtx->drcAttrV12.stManual, sizeof(mdrcAttr_V12_t));
118     // drc info
119     AdrcV12Params2Api(pAdrcCtx, &attr->Info);
120 
121     LOG1_ATMO("EXIT: %s \n", __func__);
122     return XCAM_RETURN_NO_ERROR;
123 }
124 #endif
125 #if RKAIQ_HAVE_DRC_V12_LITE
rk_aiq_uapi_adrc_v12_lite_SetAttrib(RkAiqAlgoContext * ctx,const drcAttrV12Lite_t * attr,bool need_sync)126 XCamReturn rk_aiq_uapi_adrc_v12_lite_SetAttrib(RkAiqAlgoContext* ctx, const drcAttrV12Lite_t* attr,
127                                                bool need_sync) {
128     LOG1_ATMO("ENTER: %s \n", __func__);
129     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)(ctx);
130     XCamReturn ret          = XCAM_RETURN_NO_ERROR;
131 
132     pAdrcCtx->drcAttrV12.opMode = attr->opMode;
133     if (attr->opMode == DRC_OPMODE_AUTO) {
134         memcpy(&pAdrcCtx->drcAttrV12.stAuto, &attr->stAuto, sizeof(CalibDbV2_drc_v12_lite_t));
135         AdrcV12ClipStAutoParams(pAdrcCtx);
136         pAdrcCtx->ifReCalcStAuto = true;
137     }
138     if (attr->opMode == DRC_OPMODE_MANUAL) {
139         memcpy(&pAdrcCtx->drcAttrV12.stManual, &attr->stManual, sizeof(mdrcAttr_v12_lite_t));
140         pAdrcCtx->ifReCalcStManual = true;
141     }
142 
143     LOG1_ATMO("EXIT: %s \n", __func__);
144     return ret;
145 }
146 
rk_aiq_uapi_adrc_v12_lite_GetAttrib(RkAiqAlgoContext * ctx,drcAttrV12Lite_t * attr)147 XCamReturn rk_aiq_uapi_adrc_v12_lite_GetAttrib(RkAiqAlgoContext* ctx, drcAttrV12Lite_t* attr) {
148     LOG1_ATMO("ENTER: %s \n", __func__);
149     XCamReturn ret = XCAM_RETURN_NO_ERROR;
150 
151     AdrcContext_t* pAdrcCtx = (AdrcContext_t*)ctx;
152 
153     attr->opMode = pAdrcCtx->drcAttrV12.opMode;
154     memcpy(&attr->stAuto, &pAdrcCtx->drcAttrV12.stAuto, sizeof(CalibDbV2_drc_v12_lite_t));
155     memcpy(&attr->stManual, &pAdrcCtx->drcAttrV12.stManual, sizeof(mdrcAttr_v12_lite_t));
156     // drc info
157     AdrcV12LiteParams2Api(pAdrcCtx, &attr->Info);
158 
159     LOG1_ATMO("EXIT: %s \n", __func__);
160     return XCAM_RETURN_NO_ERROR;
161 }
162 #endif
163