/****************************************************************************** * * Copyright 2019, Fuzhou Rockchip Electronics Co.Ltd . All rights reserved. * No part of this work may be reproduced, modified, distributed, transmitted, * transcribed, or translated into any language or computer format, in any form * or by any means without written permission of: * Fuzhou Rockchip Electronics Co.Ltd . * * *****************************************************************************/ #include "uAPI2/rk_aiq_user_api2_ae.h" #include "RkAiqCamGroupHandleInt.h" #include "algo_handlers/RkAiqAeHandle.h" #include "base/xcam_common.h" RKAIQ_BEGIN_DECLARE #ifdef RK_SIMULATOR_HW #define CHECK_USER_API_ENABLE #endif XCamReturn rk_aiq_user_api2_ae_setExpSwAttr ( const rk_aiq_sys_ctx_t* sys_ctx, const Uapi_ExpSwAttrV2_t expSwAttr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setExpSwAttr(expSwAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->setExpSwAttr(expSwAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setExpSwAttr(expSwAttr); } } return (ret); } XCamReturn rk_aiq_user_api2_ae_getExpSwAttr ( const rk_aiq_sys_ctx_t* sys_ctx, Uapi_ExpSwAttrV2_t* pExpSwAttr ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getExpSwAttr(pExpSwAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->getExpSwAttr(pExpSwAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getExpSwAttr(pExpSwAttr); } } return (ret); } XCamReturn rk_aiq_user_api2_ae_setLinExpAttr ( const rk_aiq_sys_ctx_t* sys_ctx, const Uapi_LinExpAttrV2_t linExpAttr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setLinExpAttr(linExpAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->setLinExpAttr(linExpAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setLinExpAttr(linExpAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_getLinExpAttr ( const rk_aiq_sys_ctx_t* sys_ctx, Uapi_LinExpAttrV2_t* pLinExpAttr ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getLinExpAttr(pLinExpAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->getLinExpAttr(pLinExpAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getLinExpAttr(pLinExpAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_setHdrExpAttr ( const rk_aiq_sys_ctx_t* sys_ctx, const Uapi_HdrExpAttrV2_t hdrExpAttr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setHdrExpAttr(hdrExpAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->setHdrExpAttr(hdrExpAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setHdrExpAttr(hdrExpAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_getHdrExpAttr ( const rk_aiq_sys_ctx_t* sys_ctx, Uapi_HdrExpAttrV2_t* pHdrExpAttr ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getHdrExpAttr(pHdrExpAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->getHdrExpAttr(pHdrExpAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getHdrExpAttr(pHdrExpAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_setLinAeRouteAttr ( const rk_aiq_sys_ctx_t* sys_ctx, const Uapi_LinAeRouteAttr_t linAeRouteAttr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setLinAeRouteAttr(linAeRouteAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->setLinAeRouteAttr(linAeRouteAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setLinAeRouteAttr(linAeRouteAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_getLinAeRouteAttr ( const rk_aiq_sys_ctx_t* sys_ctx, Uapi_LinAeRouteAttr_t* pLinAeRouteAttr ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getLinAeRouteAttr(pLinAeRouteAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->getLinAeRouteAttr(pLinAeRouteAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getLinAeRouteAttr(pLinAeRouteAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_setHdrAeRouteAttr ( const rk_aiq_sys_ctx_t* sys_ctx, const Uapi_HdrAeRouteAttr_t hdrAeRouteAttr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setHdrAeRouteAttr(hdrAeRouteAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->setHdrAeRouteAttr(hdrAeRouteAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setHdrAeRouteAttr(hdrAeRouteAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_getHdrAeRouteAttr ( const rk_aiq_sys_ctx_t* sys_ctx, Uapi_HdrAeRouteAttr_t* pHdrAeRouteAttr ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getHdrAeRouteAttr(pHdrAeRouteAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->getHdrAeRouteAttr(pHdrAeRouteAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getHdrAeRouteAttr(pHdrAeRouteAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_setIrisAttr ( const rk_aiq_sys_ctx_t * sys_ctx, const Uapi_IrisAttrV2_t irisAttr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP LOGW("%s: not support camgroup mode!", __FUNCTION__); return(ret); #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setIrisAttr(irisAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_getIrisAttr ( const rk_aiq_sys_ctx_t * sys_ctx, Uapi_IrisAttrV2_t * pIrisAttr ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP LOGW("%s: not support camgroup mode!", __FUNCTION__); return(ret); #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getIrisAttr(pIrisAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_setSyncTestAttr ( const rk_aiq_sys_ctx_t * sys_ctx, const Uapi_AecSyncTest_t syncTestAttr ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setSyncTestAttr(syncTestAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->setSyncTestAttr(syncTestAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setSyncTestAttr(syncTestAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_getSyncTestAttr ( const rk_aiq_sys_ctx_t * sys_ctx, Uapi_AecSyncTest_t * psyncTestAttr ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getSyncTestAttr(psyncTestAttr); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->getSyncTestAttr(psyncTestAttr); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getSyncTestAttr(psyncTestAttr); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_queryExpResInfo ( const rk_aiq_sys_ctx_t* sys_ctx, Uapi_ExpQueryInfo_t* pExpResInfo ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP RkAiqCamGroupAeHandleInt* algo_handle = camgroupAlgoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->queryExpInfo(pExpResInfo); } else { const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx; for (auto camCtx : camgroup_ctx->cam_ctxs_array) { if (!camCtx) continue; RkAiqAeHandleInt* singleCam_algo_handle = algoHandle(camCtx, RK_AIQ_ALGO_TYPE_AE); if (singleCam_algo_handle) ret = singleCam_algo_handle->queryExpInfo(pExpResInfo); } } #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->queryExpInfo(pExpResInfo); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_setExpWinAttr ( const rk_aiq_sys_ctx_t* sys_ctx, const Uapi_ExpWin_t ExpWin ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; CHECK_USER_API_ENABLE2(sys_ctx); CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); RKAIQ_API_SMART_LOCK(sys_ctx); if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP LOGW("%s: not support camgroup mode!", __FUNCTION__); return(ret); #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->setExpWinAttr(ExpWin); } } return(ret); } XCamReturn rk_aiq_user_api2_ae_getExpWinAttr ( const rk_aiq_sys_ctx_t* sys_ctx, Uapi_ExpWin_t* pExpWin ) { RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { #ifdef RKAIQ_ENABLE_CAMGROUP LOGW("%s: not support camgroup mode!", __FUNCTION__); return(ret); #else return XCAM_RETURN_ERROR_FAILED; #endif } else { RkAiqAeHandleInt* algo_handle = algoHandle(sys_ctx, RK_AIQ_ALGO_TYPE_AE); if (algo_handle) { return algo_handle->getExpWinAttr(pExpWin); } } return(ret); } RKAIQ_END_DECLARE