xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/amerge/rk_aiq_uapi_amerge_int.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "rk_aiq_uapi_amerge_int.h"
2 #include "rk_aiq_types_amerge_algo_prvt.h"
3 
4 #if RKAIQ_HAVE_MERGE_V10
rk_aiq_uapi_amerge_v10_SetAttrib(RkAiqAlgoContext * ctx,const mergeAttrV10_t * attr,bool need_sync)5 XCamReturn rk_aiq_uapi_amerge_v10_SetAttrib(RkAiqAlgoContext* ctx, const mergeAttrV10_t* attr,
6                                             bool need_sync) {
7     XCamReturn ret = XCAM_RETURN_NO_ERROR;
8     if(ctx == NULL) {
9         LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__);
10         return XCAM_RETURN_ERROR_PARAM;
11     }
12     AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx;
13 
14     pAmergeCtx->mergeAttrV10.opMode = attr->opMode;
15     if (attr->opMode == MERGE_OPMODE_AUTO) {
16         memcpy(&pAmergeCtx->mergeAttrV10.stAuto, &attr->stAuto, sizeof(CalibDbV2_merge_v10_t));
17         pAmergeCtx->ifReCalcStAuto = true;
18     } else if (attr->opMode == MERGE_OPMODE_MANUAL) {
19         memcpy(&pAmergeCtx->mergeAttrV10.stManual, &attr->stManual, sizeof(mMergeAttrV10_t));
20         pAmergeCtx->ifReCalcStManual = true;
21     }
22 
23     return ret;
24 }
25 
rk_aiq_uapi_amerge_v10_GetAttrib(RkAiqAlgoContext * ctx,mergeAttrV10_t * attr)26 XCamReturn rk_aiq_uapi_amerge_v10_GetAttrib(RkAiqAlgoContext* ctx, mergeAttrV10_t* attr) {
27     XCamReturn ret = XCAM_RETURN_NO_ERROR;
28     if (ctx == NULL || attr == NULL) {
29         LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__);
30         return XCAM_RETURN_ERROR_PARAM;
31     }
32 
33     AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx;
34 
35     attr->opMode = pAmergeCtx->mergeAttrV10.opMode;
36     memcpy(&attr->stManual, &pAmergeCtx->mergeAttrV10.stManual, sizeof(mMergeAttrV10_t));
37     memcpy(&attr->stAuto, &pAmergeCtx->mergeAttrV10.stAuto, sizeof(CalibDbV2_merge_v10_t));
38     // get info
39     attr->Info.Envlv    = pAmergeCtx->NextData.CtrlData.ExpoData.EnvLv;
40     attr->Info.ISO      = pAmergeCtx->NextData.CtrlData.ExpoData.ISO;
41     attr->Info.MoveCoef = pAmergeCtx->NextData.CtrlData.MoveCoef;
42 
43     return ret;
44 }
45 #endif
46 
47 #if RKAIQ_HAVE_MERGE_V11
rk_aiq_uapi_amerge_v11_SetAttrib(RkAiqAlgoContext * ctx,const mergeAttrV11_t * attr,bool need_sync)48 XCamReturn rk_aiq_uapi_amerge_v11_SetAttrib(RkAiqAlgoContext* ctx, const mergeAttrV11_t* attr,
49                                             bool need_sync) {
50     XCamReturn ret = XCAM_RETURN_NO_ERROR;
51     if (ctx == NULL) {
52         LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__);
53         return XCAM_RETURN_ERROR_PARAM;
54     }
55     AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx;
56 
57     pAmergeCtx->mergeAttrV11.opMode = attr->opMode;
58     if (attr->opMode == MERGE_OPMODE_AUTO) {
59         memcpy(&pAmergeCtx->mergeAttrV11.stAuto, &attr->stAuto, sizeof(CalibDbV2_merge_v11_t));
60         pAmergeCtx->ifReCalcStAuto = true;
61     } else if (attr->opMode == MERGE_OPMODE_MANUAL) {
62         memcpy(&pAmergeCtx->mergeAttrV11.stManual, &attr->stManual, sizeof(mMergeAttrV11_t));
63         pAmergeCtx->ifReCalcStManual = true;
64     }
65 
66     return ret;
67 }
68 
rk_aiq_uapi_amerge_v11_GetAttrib(RkAiqAlgoContext * ctx,mergeAttrV11_t * attr)69 XCamReturn rk_aiq_uapi_amerge_v11_GetAttrib(RkAiqAlgoContext* ctx, mergeAttrV11_t* attr) {
70     XCamReturn ret = XCAM_RETURN_NO_ERROR;
71     if(ctx == NULL || attr == NULL) {
72         LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__);
73         return XCAM_RETURN_ERROR_PARAM;
74     }
75 
76     AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx;
77 
78     attr->opMode = pAmergeCtx->mergeAttrV11.opMode;
79     memcpy(&attr->stAuto, &pAmergeCtx->mergeAttrV11.stAuto, sizeof(CalibDbV2_merge_v11_t));
80     memcpy(&attr->stManual, &pAmergeCtx->mergeAttrV11.stManual, sizeof(mMergeAttrV11_t));
81     // get info
82     attr->Info.Envlv    = pAmergeCtx->NextData.CtrlData.ExpoData.EnvLv;
83     attr->Info.ISO      = pAmergeCtx->NextData.CtrlData.ExpoData.ISO;
84     attr->Info.MoveCoef = pAmergeCtx->NextData.CtrlData.MoveCoef;
85 
86     return ret;
87 }
88 #endif
89 
90 #if RKAIQ_HAVE_MERGE_V12
rk_aiq_uapi_amerge_v12_SetAttrib(RkAiqAlgoContext * ctx,const mergeAttrV12_t * attr,bool need_sync)91 XCamReturn rk_aiq_uapi_amerge_v12_SetAttrib(RkAiqAlgoContext* ctx, const mergeAttrV12_t* attr,
92                                             bool need_sync) {
93     XCamReturn ret = XCAM_RETURN_NO_ERROR;
94     if (ctx == NULL) {
95         LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__);
96         return XCAM_RETURN_ERROR_PARAM;
97     }
98     AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx;
99 
100     pAmergeCtx->mergeAttrV12.opMode = attr->opMode;
101     if (attr->opMode == MERGE_OPMODE_AUTO) {
102         memcpy(&pAmergeCtx->mergeAttrV12.stAuto, &attr->stAuto, sizeof(CalibDbV2_merge_v12_t));
103         pAmergeCtx->ifReCalcStAuto = true;
104     } else if (attr->opMode == MERGE_OPMODE_MANUAL) {
105         memcpy(&pAmergeCtx->mergeAttrV12.stManual, &attr->stManual, sizeof(mMergeAttrV12_t));
106         pAmergeCtx->ifReCalcStManual = true;
107     }
108 
109     return ret;
110 }
111 
rk_aiq_uapi_amerge_v12_GetAttrib(RkAiqAlgoContext * ctx,mergeAttrV12_t * attr)112 XCamReturn rk_aiq_uapi_amerge_v12_GetAttrib(RkAiqAlgoContext* ctx, mergeAttrV12_t* attr) {
113     XCamReturn ret = XCAM_RETURN_NO_ERROR;
114     if (ctx == NULL || attr == NULL) {
115         LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__);
116         return XCAM_RETURN_ERROR_PARAM;
117     }
118 
119     AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx;
120 
121     attr->opMode = pAmergeCtx->mergeAttrV12.opMode;
122     memcpy(&attr->stAuto, &pAmergeCtx->mergeAttrV12.stAuto, sizeof(CalibDbV2_merge_v12_t));
123     memcpy(&attr->stManual, &pAmergeCtx->mergeAttrV12.stManual, sizeof(mMergeAttrV12_t));
124     // get info
125     attr->Info.Envlv    = pAmergeCtx->NextData.CtrlData.ExpoData.EnvLv;
126     attr->Info.ISO      = pAmergeCtx->NextData.CtrlData.ExpoData.ISO;
127     attr->Info.MoveCoef = pAmergeCtx->NextData.CtrlData.MoveCoef;
128 
129     return ret;
130 }
131 #endif
132