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_user_api_accm.h"
17
18 #include "algo_handlers/RkAiqAccmHandle.h"
19
20 RKAIQ_BEGIN_DECLARE
21
22 #ifdef RK_SIMULATOR_HW
23 #define CHECK_USER_API_ENABLE
24 #endif
25
26 #if RKAIQ_HAVE_CCM_V1
rk_aiq_user_api_accm_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_ccm_attrib_t * attr)27 XCamReturn rk_aiq_user_api_accm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
28 const rk_aiq_ccm_attrib_t* attr)
29 {
30 CHECK_USER_API_ENABLE2(sys_ctx);
31 CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_ACCM);
32 RKAIQ_API_SMART_LOCK(sys_ctx);
33 RkAiqAccmHandleInt* algo_handle =
34 algoHandle<RkAiqAccmHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACCM);
35
36 if (algo_handle) {
37 return algo_handle->setAttrib(attr);
38 }
39
40 return XCAM_RETURN_NO_ERROR;
41 }
42
43 XCamReturn
rk_aiq_user_api_accm_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_ccm_attrib_t * attr)44 rk_aiq_user_api_accm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
45 rk_aiq_ccm_attrib_t *attr)
46 {
47 RKAIQ_API_SMART_LOCK(sys_ctx);
48 RkAiqAccmHandleInt* algo_handle =
49 algoHandle<RkAiqAccmHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACCM);
50
51 if (algo_handle) {
52 return algo_handle->getAttrib(attr);
53 }
54
55 return XCAM_RETURN_NO_ERROR;
56 }
57 #else
58
59 XCamReturn rk_aiq_user_api_accm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
60 const rk_aiq_ccm_attrib_t* attr)
61 {
62 return XCAM_RETURN_ERROR_UNKNOWN;
63 }
64
65 XCamReturn rk_aiq_user_api_accm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
66 rk_aiq_ccm_attrib_t *attr)
67 {
68 return XCAM_RETURN_ERROR_UNKNOWN;
69 }
70 #endif
71
72 #if RKAIQ_HAVE_CCM_V2
rk_aiq_user_api_accm_v2_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_ccm_v2_attrib_t * attr)73 XCamReturn rk_aiq_user_api_accm_v2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
74 const rk_aiq_ccm_v2_attrib_t* attr)
75 {
76 CHECK_USER_API_ENABLE2(sys_ctx);
77 CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_ACCM);
78 RKAIQ_API_SMART_LOCK(sys_ctx);
79 RkAiqAccmHandleInt* algo_handle =
80 algoHandle<RkAiqAccmHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACCM);
81
82 if (algo_handle) {
83 return algo_handle->setAttribV2(attr);
84 }
85
86 return XCAM_RETURN_NO_ERROR;
87 }
88
89 XCamReturn
rk_aiq_user_api_accm_v2_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_ccm_v2_attrib_t * attr)90 rk_aiq_user_api_accm_v2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
91 rk_aiq_ccm_v2_attrib_t *attr)
92 {
93 RKAIQ_API_SMART_LOCK(sys_ctx);
94 RkAiqAccmHandleInt* algo_handle =
95 algoHandle<RkAiqAccmHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACCM);
96
97 if (algo_handle) {
98 return algo_handle->getAttribV2(attr);
99 }
100
101 return XCAM_RETURN_NO_ERROR;
102 }
103 #else
104
rk_aiq_user_api_accm_v2_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_ccm_v2_attrib_t * attr)105 XCamReturn rk_aiq_user_api_accm_v2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
106 const rk_aiq_ccm_v2_attrib_t* attr)
107 {
108 return XCAM_RETURN_ERROR_UNKNOWN;
109 }
110
rk_aiq_user_api_accm_v2_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_ccm_v2_attrib_t * attr)111 XCamReturn rk_aiq_user_api_accm_v2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
112 rk_aiq_ccm_v2_attrib_t *attr)
113 {
114 return XCAM_RETURN_ERROR_UNKNOWN;
115 }
116 #endif
117
118 #if RKAIQ_HAVE_CCM_V1 || RKAIQ_HAVE_CCM_V2
rk_aiq_user_api_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_ccm_querry_info_t * ccm_querry_info)119 XCamReturn rk_aiq_user_api_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t* sys_ctx,
120 rk_aiq_ccm_querry_info_t *ccm_querry_info)
121 {
122 RKAIQ_API_SMART_LOCK(sys_ctx);
123 RkAiqAccmHandleInt* algo_handle =
124 algoHandle<RkAiqAccmHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACCM);
125
126 if (algo_handle) {
127 return algo_handle->queryCcmInfo(ccm_querry_info);
128 }
129
130 return XCAM_RETURN_NO_ERROR;
131 }
132 #else
133
rk_aiq_user_api_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_ccm_querry_info_t * ccm_querry_info)134 XCamReturn rk_aiq_user_api_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t* sys_ctx,
135 rk_aiq_ccm_querry_info_t *ccm_querry_info )
136 {
137 return XCAM_RETURN_ERROR_UNKNOWN;
138 }
139 #endif
140
141 RKAIQ_END_DECLARE
142