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