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 _RK_AIQ_DRC_HANDLE_INT_H_ 17 #define _RK_AIQ_DRC_HANDLE_INT_H_ 18 19 #include "RkAiqHandle.h" 20 #include "adrc/rk_aiq_uapi_adrc_int.h" 21 #include "rk_aiq_api_private.h" 22 #include "rk_aiq_pool.h" 23 #include "xcam_mutex.h" 24 25 namespace RkCam { 26 27 class RkAiqAdrcHandleInt : virtual public RkAiqHandle { 28 public: RkAiqAdrcHandleInt(RkAiqAlgoDesComm * des,RkAiqCore * aiqCore)29 explicit RkAiqAdrcHandleInt(RkAiqAlgoDesComm* des, RkAiqCore* aiqCore) 30 : RkAiqHandle(des, aiqCore) {} ~RkAiqAdrcHandleInt()31 virtual ~RkAiqAdrcHandleInt() { RkAiqHandle::deInit(); }; 32 virtual XCamReturn updateConfig(bool needSync); 33 virtual XCamReturn prepare(); 34 virtual XCamReturn preProcess(); 35 virtual XCamReturn processing(); 36 virtual XCamReturn postProcess(); 37 virtual XCamReturn genIspResult(RkAiqFullParams* params, RkAiqFullParams* cur_params); 38 #if RKAIQ_HAVE_DRC_V10 39 XCamReturn setAttribV10(const drcAttrV10_t* att); 40 XCamReturn getAttribV10(drcAttrV10_t* att); 41 #endif 42 #if RKAIQ_HAVE_DRC_V11 43 XCamReturn setAttribV11(const drcAttrV11_t* att); 44 XCamReturn getAttribV11(drcAttrV11_t* att); 45 #endif 46 #if RKAIQ_HAVE_DRC_V12 47 XCamReturn setAttribV12(const drcAttrV12_t* att); 48 XCamReturn getAttribV12(drcAttrV12_t* att); 49 #endif 50 #if RKAIQ_HAVE_DRC_V12_LITE 51 XCamReturn setAttribV12Lite(const drcAttrV12Lite_t* att); 52 XCamReturn getAttribV12Lite(drcAttrV12Lite_t* att); 53 #endif 54 setAeProcRes(RkAiqAlgoProcResAeShared_t * aeProcRes)55 void setAeProcRes(RkAiqAlgoProcResAeShared_t* aeProcRes) { 56 mAeProcRes = *aeProcRes; 57 } 58 59 protected: 60 virtual void init(); deInit()61 virtual void deInit() { RkAiqHandle::deInit(); }; 62 63 private: 64 #ifndef DISABLE_HANDLE_ATTRIB 65 #if RKAIQ_HAVE_DRC_V10 66 drcAttrV10_t mCurAttV10; 67 drcAttrV10_t mNewAttV10; 68 #endif 69 #if RKAIQ_HAVE_DRC_V11 70 drcAttrV11_t mCurAttV11; 71 drcAttrV11_t mNewAttV11; 72 #endif 73 #if RKAIQ_HAVE_DRC_V12 74 drcAttrV12_t mCurAttV12; 75 drcAttrV12_t mNewAttV12; 76 #endif 77 #if RKAIQ_HAVE_DRC_V12_LITE 78 drcAttrV12Lite_t mCurAttV12Lite; 79 drcAttrV12Lite_t mNewAttV12Lite; 80 #endif 81 #endif 82 RkAiqAlgoProcResAeShared_t mAeProcRes; 83 84 private: 85 DECLARE_HANDLE_REGISTER_TYPE(RkAiqAdrcHandleInt); 86 }; 87 88 } // namespace RkCam 89 90 #endif 91