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 }