xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/agic/rk_aiq_types_algo_agic_prvt.h (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 #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