#include "rk_aiq_uapi_ablc_int.h" #include "ablc/rk_aiq_types_ablc_algo_prvt.h" void BlcParamsNewMalloc ( AblcParams_t* pStoreBlcPara, AblcParams_t* pInputBlcPara ) { LOGD_ABLC( "%s:enter!\n", __FUNCTION__); // initial checks DCT_ASSERT(pStoreBlcPara != NULL); DCT_ASSERT(pInputBlcPara != NULL); if(pStoreBlcPara->len != pInputBlcPara->len) { LOGD_ABLC( "%s:enter store_Len:%d! inputLen:%d\n", __FUNCTION__, pStoreBlcPara->len, pInputBlcPara->len); if(pStoreBlcPara->iso) free(pStoreBlcPara->iso); if(pStoreBlcPara->blc_b) free(pStoreBlcPara->blc_b); if(pStoreBlcPara->blc_gb) free(pStoreBlcPara->blc_gb); if(pStoreBlcPara->blc_gr) free(pStoreBlcPara->blc_gr); if(pStoreBlcPara->blc_r) free(pStoreBlcPara->blc_r); pStoreBlcPara->len = pInputBlcPara->len; pStoreBlcPara->iso = (float*)malloc(sizeof(float) * (pInputBlcPara->len)); pStoreBlcPara->blc_r = (float*)malloc(sizeof(float) * (pInputBlcPara->len)); pStoreBlcPara->blc_gr = (float*)malloc(sizeof(float) * (pInputBlcPara->len)); pStoreBlcPara->blc_gb = (float*)malloc(sizeof(float) * (pInputBlcPara->len)); pStoreBlcPara->blc_b = (float*)malloc(sizeof(float) * (pInputBlcPara->len)); } pStoreBlcPara->enable = pInputBlcPara->enable; for(int i = 0; i < pInputBlcPara->len; i++) { pStoreBlcPara->iso[i] = pInputBlcPara->iso[i]; pStoreBlcPara->blc_r[i] = pInputBlcPara->blc_r[i]; pStoreBlcPara->blc_gr[i] = pInputBlcPara->blc_gr[i]; pStoreBlcPara->blc_gb[i] = pInputBlcPara->blc_gb[i]; pStoreBlcPara->blc_b[i] = pInputBlcPara->blc_b[i]; LOGD_ABLC("ablc iso:%f blc:%f %f %f %f\n", pStoreBlcPara->iso[i], pStoreBlcPara->blc_r[i], pStoreBlcPara->blc_gr[i], pStoreBlcPara->blc_gb[i], pStoreBlcPara->blc_b[i]); } LOGD_ABLC( "%s:exit!\n", __FUNCTION__); } XCamReturn rk_aiq_uapi_ablc_SetAttrib(RkAiqAlgoContext *ctx, rk_aiq_blc_attrib_t *attr, bool need_sync) { AblcContext_t* pAblcCtx = (AblcContext_t*)ctx; XCamReturn ret = XCAM_RETURN_NO_ERROR; pAblcCtx->eMode = attr->eMode; if(attr->eMode == ABLC_OP_MODE_MANUAL) { pAblcCtx->stBlc0Manual = attr->stBlc0Manual; pAblcCtx->stBlc1Manual = attr->stBlc1Manual; } else if(attr->eMode == ABLC_OP_MODE_AUTO) { BlcParamsNewMalloc(&pAblcCtx->stBlc0Params, &attr->stBlc0Auto); BlcParamsNewMalloc(&pAblcCtx->stBlc1Params, &attr->stBlc1Auto); } pAblcCtx->isReCalculate |= 1; return ret; } XCamReturn rk_aiq_uapi_ablc_GetAttrib(const RkAiqAlgoContext *ctx, rk_aiq_blc_attrib_t *attr) { AblcContext_t* pAblcCtx = (AblcContext_t*)ctx; XCamReturn ret = XCAM_RETURN_NO_ERROR; attr->eMode = pAblcCtx->eMode; memcpy(&attr->stBlc0Manual, &pAblcCtx->stBlc0Manual, sizeof(attr->stBlc0Manual)); memcpy(&attr->stBlc1Manual, &pAblcCtx->stBlc1Manual, sizeof(attr->stBlc1Manual)); BlcParamsNewMalloc(&attr->stBlc0Auto, &pAblcCtx->stBlc0Params); BlcParamsNewMalloc(&attr->stBlc1Auto, &pAblcCtx->stBlc1Params); return ret; } XCamReturn rk_aiq_uapi_ablc_GetProc(const RkAiqAlgoContext *ctx, AblcProc_t *ProcRes) { AblcContext_t* pAblcCtx = (AblcContext_t*)ctx; XCamReturn ret = XCAM_RETURN_NO_ERROR; *ProcRes = pAblcCtx->ProcRes; return ret; }