#include "rk_aiq_uapi_amerge_int.h" #include "rk_aiq_types_amerge_algo_prvt.h" XCamReturn rk_aiq_uapi_amerge_SetAttrib ( RkAiqAlgoContext* ctx, amerge_attrib_t attr, bool need_sync ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; if(ctx == NULL) { LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__); return XCAM_RETURN_ERROR_PARAM; } AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx; if(CHECK_ISP_HW_V21()) { pAmergeCtx->mergeAttr.attrV21.opMode = attr.attrV21.opMode; if (attr.attrV21.opMode == MERGE_OPMODE_MANU) memcpy(&pAmergeCtx->mergeAttr.attrV21.stManual, &attr.attrV21.stManual, sizeof(mmergeAttrV21_t)); } else if(CHECK_ISP_HW_V30()) { pAmergeCtx->mergeAttr.attrV30.opMode = attr.attrV30.opMode; if(attr.attrV30.opMode == MERGE_OPMODE_MANU) memcpy(&pAmergeCtx->mergeAttr.attrV30.stManual, &attr.attrV30.stManual, sizeof(mMergeAttrV30_t)); } return ret; } XCamReturn rk_aiq_uapi_amerge_GetAttrib ( RkAiqAlgoContext* ctx, amerge_attrib_t* attr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; if(ctx == NULL || attr == NULL) { LOGE_AMERGE("%s(%d): null pointer\n", __FUNCTION__, __LINE__); return XCAM_RETURN_ERROR_PARAM; } AmergeContext_t* pAmergeCtx = (AmergeContext_t*)ctx; if(CHECK_ISP_HW_V20() || CHECK_ISP_HW_V21()) { attr->attrV21.opMode = pAmergeCtx->mergeAttr.attrV21.opMode; memcpy(&attr->attrV21.stManual, &pAmergeCtx->mergeAttr.attrV21.stManual, sizeof(mmergeAttrV21_t)); memcpy(&attr->attrV21.CtlInfo, &pAmergeCtx->mergeAttr.attrV21.CtlInfo, sizeof(MergeCurrCtlData_t)); } else if(CHECK_ISP_HW_V30()) { attr->attrV30.opMode = pAmergeCtx->mergeAttr.attrV30.opMode; memcpy(&attr->attrV30.stManual, &pAmergeCtx->mergeAttr.attrV30.stManual, sizeof(mMergeAttrV30_t)); memcpy(&attr->attrV30.CtlInfo, &pAmergeCtx->mergeAttr.attrV30.CtlInfo, sizeof(MergeCurrCtlData_t)); } return ret; }