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 #ifndef __RKAIQ_TYPES_ALGO_AGIC_PRVT_H__ 17 #define __RKAIQ_TYPES_ALGO_AGIC_PRVT_H__ 18 19 #include "algos/agic/rk_aiq_types_algo_agic_int.h" 20 #include "iq_parser_v2/RkAiqCalibDbTypesV2.h" 21 #include "iq_parser_v2/RkAiqCalibDbV2Helper.h" 22 #include "xcore/base/xcam_common.h" 23 #include "xcore/base/xcam_log.h" 24 25 #define RKAIQ_GIC_BITS (12) 26 27 #define GIC_SWAP(_T_, A, B) \ 28 { \ 29 _T_ tmp = (A); \ 30 (A) = (B); \ 31 (B) = tmp; \ 32 } 33 34 typedef enum AgicState_e { 35 AGIC_STATE_INVALID = 0, 36 AGIC_STATE_INITIALIZED = 1, 37 AGIC_STATE_STOPPED = 2, 38 AGIC_STATE_RUNNING = 3, 39 AGIC_STATE_LOCKED = 4, 40 AGIC_STATE_MAX 41 } AgicState_t; 42 43 typedef struct AgicFullParam_s { 44 union { 45 CalibDbV2_Gic_V20_t* gic_v20; 46 CalibDbV2_Gic_V21_t* gic_v21; 47 }; 48 } AgicFullParam_t; 49 50 typedef struct AgicContext_s { 51 AgicConfig_t ConfigData; 52 AgicState_t state; 53 AgicFullParam_t full_param; 54 union { 55 rkaiq_gic_v1_api_attr_t v1; 56 rkaiq_gic_v2_api_attr_t v2; 57 } attr; 58 int Gic_Scene_mode; 59 int working_mode; 60 int last_iso; 61 bool calib_changed; 62 uint8_t raw_bits; 63 } AgicContext_t; 64 65 typedef struct _RkAiqAlgoContext { 66 AgicContext_t agicCtx; 67 } RkAiqAlgoContext; 68 69 XCamReturn AgicInit(AgicContext_t* ppAgicCtx, CamCalibDbV2Context_t* calib); 70 XCamReturn AgicRelease(AgicContext_t* pAgicCtx); 71 XCamReturn AgicStop(AgicContext_t* pAgicCtx); 72 XCamReturn AgicConfig(AgicContext_t* pAgicCtx, AgicConfig_t* pAgicConfig); 73 XCamReturn AgicReConfig(AgicContext_t* pAgicCtx, AgicConfig_t* pAgicConfig); 74 XCamReturn AgicPreProcess(AgicContext_t* pAgicCtx); 75 XCamReturn AgicProcess(AgicContext_t* pAgicCtx, int ISO, int mode); 76 XCamReturn AgicGetProcResult(AgicContext_t* pAgicCtx, AgicProcResult_t* pAgicRes); 77 void GicV1CalibToAttr(CalibDbV2_Gic_V20_t* calib, rkaiq_gic_v1_api_attr_t* attr); 78 void GicV2CalibToAttr(CalibDbV2_Gic_V21_t* calib, rkaiq_gic_v2_api_attr_t* attr); 79 80 #endif //__RKAIQ_TYPES_ALGO_AGIC_PRVT_H__ 81