xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/ablcV32/rk_aiq_uapi_ablc_int_v32.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #include "rk_aiq_uapi_ablc_int_v32.h"
17 #include "rk_aiq_ablc_algo_v32.h"
18 
19 #include "ablcV32/rk_aiq_types_ablc_algo_prvt_v32.h"
20 
rk_aiq_uapi_ablc_V32_SetAttrib(RkAiqAlgoContext * ctx,rk_aiq_blc_attrib_V32_t * attr,bool need_sync)21 XCamReturn rk_aiq_uapi_ablc_V32_SetAttrib(RkAiqAlgoContext* ctx, rk_aiq_blc_attrib_V32_t* attr,
22                                          bool need_sync) {
23     AblcContext_V32_t* pAblcCtx = (AblcContext_V32_t*)ctx;
24     XCamReturn ret              = XCAM_RETURN_NO_ERROR;
25     pAblcCtx->eMode             = attr->eMode;
26     if (attr->eMode == ABLC_V32_OP_MODE_MANUAL) {
27         pAblcCtx->stBlc0Manual  = attr->stBlc0Manual;
28         pAblcCtx->stBlc1Manual  = attr->stBlc1Manual;
29         pAblcCtx->stBlcOBManual = attr->stBlcOBManual;
30     } else if (attr->eMode == ABLC_V32_OP_MODE_AUTO) {
31         memcpy(&pAblcCtx->stBlc0Params, &attr->stBlc0Auto, sizeof(pAblcCtx->stBlc0Params));
32         memcpy(&pAblcCtx->stBlc1Params, &attr->stBlc1Auto, sizeof(pAblcCtx->stBlc1Params));
33         memcpy(&pAblcCtx->stBlcOBParams, &attr->stBlcOBAuto, sizeof(pAblcCtx->stBlcOBParams));
34     }
35 
36     pAblcCtx->isReCalculate |= 1;
37     return ret;
38 }
39 
rk_aiq_uapi_ablc_V32_GetAttrib(const RkAiqAlgoContext * ctx,rk_aiq_blc_attrib_V32_t * attr)40 XCamReturn rk_aiq_uapi_ablc_V32_GetAttrib(const RkAiqAlgoContext* ctx, rk_aiq_blc_attrib_V32_t* attr) {
41     AblcContext_V32_t* pAblcCtx = (AblcContext_V32_t*)ctx;
42     XCamReturn ret              = XCAM_RETURN_NO_ERROR;
43 
44     attr->eMode = pAblcCtx->eMode;
45     memcpy(&attr->stBlc0Manual, &pAblcCtx->stBlc0Manual, sizeof(attr->stBlc0Manual));
46     memcpy(&attr->stBlc1Manual, &pAblcCtx->stBlc1Manual, sizeof(attr->stBlc1Manual));
47     memcpy(&attr->stBlcOBManual, &pAblcCtx->stBlcOBManual, sizeof(attr->stBlcOBManual));
48 
49     memcpy(&attr->stBlc0Auto, &pAblcCtx->stBlc0Params, sizeof(attr->stBlc0Auto));
50     memcpy(&attr->stBlc1Auto, &pAblcCtx->stBlc1Params, sizeof(attr->stBlc1Auto));
51     memcpy(&attr->stBlcOBAuto, &pAblcCtx->stBlcOBParams, sizeof(attr->stBlcOBAuto));
52     return ret;
53 }
54 
rk_aiq_uapi_ablc_V32_GetProc(const RkAiqAlgoContext * ctx,AblcProc_V32_t * ProcRes)55 XCamReturn rk_aiq_uapi_ablc_V32_GetProc(const RkAiqAlgoContext* ctx, AblcProc_V32_t* ProcRes) {
56     AblcContext_V32_t* pAblcCtx = (AblcContext_V32_t*)ctx;
57     XCamReturn ret              = XCAM_RETURN_NO_ERROR;
58 
59     Ablc_GetProcResult_V32(pAblcCtx, ProcRes);
60     return ret;
61 }
62 
rk_aiq_uapi_ablc_V32_GetInfo(const RkAiqAlgoContext * ctx,rk_aiq_blc_info_v32_t * pInfo)63 XCamReturn rk_aiq_uapi_ablc_V32_GetInfo(const RkAiqAlgoContext* ctx, rk_aiq_blc_info_v32_t* pInfo) {
64 
65     AblcContext_V32_t* pAblcCtx = (AblcContext_V32_t*)ctx;
66 
67     pInfo->iso = pAblcCtx->stExpInfo.arIso[pAblcCtx->stExpInfo.hdr_mode];
68     pInfo->expo_info = pAblcCtx->stExpInfo;
69     return XCAM_RETURN_NO_ERROR;
70 }