/*
|
* RkAiqHandleIntV21.cpp
|
*
|
* Copyright (c) 2019 Rockchip Corporation
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*
|
*/
|
|
#include "RkAiqHandleIntV21.h"
|
#include "RkAiqCore.h"
|
|
namespace RkCam {
|
|
XCamReturn
|
RkAiqAdrcV1HandleInt::updateConfig(bool needSync)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
EXIT_ANALYZER_FUNCTION();
|
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAdrcV1HandleInt::prepare()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
ret = RkAiqAdrcHandle::prepare();
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 handle prepare failed");
|
|
RkAiqAlgoConfigAdrcV1Int* adrcV1_config_int = (RkAiqAlgoConfigAdrcV1Int*)mConfig;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->prepare(mConfig);
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 algo prepare failed");
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
void
|
RkAiqAdrcV1HandleInt::init()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
RkAiqAdrcHandle::deInit();
|
mConfig = (RkAiqAlgoCom*)(new RkAiqAlgoConfigAdrcV1Int());
|
mPreInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPreAdrcV1Int());
|
mPreOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPreResAdrcV1Int());
|
mProcInParam = (RkAiqAlgoCom*)(new RkAiqAlgoProcAdrcV1Int());
|
mProcOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoProcResAdrcV1Int());
|
mPostInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPostAdrcV1Int());
|
mPostOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPostResAdrcV1Int());
|
|
EXIT_ANALYZER_FUNCTION();
|
}
|
|
XCamReturn
|
RkAiqAdrcV1HandleInt::preProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPreAdrcV1Int* adrcV1_pre_int = (RkAiqAlgoPreAdrcV1Int*)mPreInParam;
|
RkAiqAlgoPreResAdrcV1Int* adrcV1_pre_res_int = (RkAiqAlgoPreResAdrcV1Int*)mPreOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPreResComb* comb = &shared->preResComb;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
|
ret = RkAiqAdrcHandle::preProcess();
|
if (ret) {
|
comb->adrc_pre_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 handle preProcess failed");
|
}
|
|
comb->adrc_pre_res = NULL;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->pre_process(mPreInParam, mPreOutParam);
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 algo pre_process failed");
|
|
// set result to mAiqCore
|
comb->adrc_pre_res = (RkAiqAlgoPreResAdrc*)adrcV1_pre_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAdrcV1HandleInt::processing()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoProcAdrcV1Int* adrcV1_proc_int = (RkAiqAlgoProcAdrcV1Int*)mProcInParam;
|
RkAiqAlgoProcResAdrcV1Int* adrcV1_proc_res_int = (RkAiqAlgoProcResAdrcV1Int*)mProcOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqProcResComb* comb = &shared->procResComb;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
|
ret = RkAiqAdrcHandle::processing();
|
if (ret) {
|
comb->adrc_proc_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 handle processing failed");
|
}
|
|
comb->adrc_proc_res = NULL;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->processing(mProcInParam, mProcOutParam);
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 algo processing failed");
|
|
comb->adrc_proc_res = (RkAiqAlgoProcResAdrc*)adrcV1_proc_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAdrcV1HandleInt::postProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPostAdrcV1Int* adrcV1_post_int = (RkAiqAlgoPostAdrcV1Int*)mPostInParam;
|
RkAiqAlgoPostResAdrcV1Int* adrcV1_post_res_int = (RkAiqAlgoPostResAdrcV1Int*)mPostOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPostResComb* comb = &shared->postResComb;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
|
ret = RkAiqAdrcHandle::postProcess();
|
if (ret) {
|
comb->adrc_post_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 handle postProcess failed");
|
return ret;
|
}
|
|
comb->adrc_post_res = NULL;
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->post_process(mPostInParam, mPostOutParam);
|
RKAIQCORE_CHECK_RET(ret, "adrcV1 algo post_process failed");
|
// set result to mAiqCore
|
comb->adrc_post_res = (RkAiqAlgoPostResAdrc*)adrcV1_post_res_int ;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
void
|
RkAiqAsharpV3HandleInt::init()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
RkAiqAsharpHandle::deInit();
|
mConfig = (RkAiqAlgoCom*)(new RkAiqAlgoConfigAsharpV3Int());
|
mPreInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPreAsharpV3Int());
|
mPreOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPreResAsharpV3Int());
|
mProcInParam = (RkAiqAlgoCom*)(new RkAiqAlgoProcAsharpV3Int());
|
mProcOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoProcResAsharpV3Int());
|
mPostInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPostAsharpV3Int());
|
mPostOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPostResAsharpV3Int());
|
|
EXIT_ANALYZER_FUNCTION();
|
}
|
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::updateConfig(bool needSync)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
if (needSync)
|
mCfgMutex.lock();
|
// if something changed
|
if (updateAtt) {
|
mCurAtt = mNewAtt;
|
updateAtt = false;
|
// TODO
|
rk_aiq_uapi_asharpV3_SetAttrib(mAlgoCtx, &mCurAtt, false);
|
sendSignal();
|
}
|
|
if(updateIQpara) {
|
mCurIQPara = mNewIQPara;
|
updateIQpara = false;
|
// TODO
|
//rk_aiq_uapi_asharp_SetIQpara_V3(mAlgoCtx, &mCurIQPara, false);
|
sendSignal();
|
}
|
|
if(updateStrength) {
|
mCurStrength = mNewStrength;
|
updateStrength = false;
|
rk_aiq_uapi_asharpV3_SetStrength(mAlgoCtx, mCurStrength);
|
sendSignal();
|
}
|
|
if (needSync)
|
mCfgMutex.unlock();
|
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::setAttrib(rk_aiq_sharp_attrib_v3_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurAtt, att, sizeof(rk_aiq_sharp_attrib_v3_t))) {
|
mNewAtt = *att;
|
updateAtt = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::getAttrib(rk_aiq_sharp_attrib_v3_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_asharpV3_GetAttrib(mAlgoCtx, att);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::setIQPara(rk_aiq_sharp_IQPara_V3_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurIQPara, para, sizeof(rk_aiq_sharp_IQPara_V3_t))) {
|
mNewIQPara = *para;
|
updateIQpara = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::getIQPara(rk_aiq_sharp_IQPara_V3_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
// rk_aiq_uapi_asharp_GetIQpara(mAlgoCtx, para);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::setStrength(float fPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
|
|
mNewStrength = fPercent;
|
updateStrength = true;
|
waitSignal();
|
|
|
mCfgMutex.unlock();
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::getStrength(float *pPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_asharpV3_GetStrength(mAlgoCtx, pPercent);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::prepare()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
ret = RkAiqAsharpHandle::prepare();
|
RKAIQCORE_CHECK_RET(ret, "asharp handle prepare failed");
|
|
RkAiqAlgoConfigAsharpV3Int* asharp_config_int = (RkAiqAlgoConfigAsharpV3Int*)mConfig;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->prepare(mConfig);
|
RKAIQCORE_CHECK_RET(ret, "asharp algo prepare failed");
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::preProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPreAsharpV3Int* asharp_pre_int = (RkAiqAlgoPreAsharpV3Int*)mPreInParam;
|
RkAiqAlgoPreResAsharpV3Int* asharp_pre_res_int = (RkAiqAlgoPreResAsharpV3Int*)mPreOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPreResComb* comb = &shared->preResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqAsharpHandle::preProcess();
|
if (ret) {
|
comb->asharp_pre_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "asharp handle preProcess failed");
|
}
|
|
comb->asharp_pre_res = NULL;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->pre_process(mPreInParam, mPreOutParam);
|
RKAIQCORE_CHECK_RET(ret, "asharp algo pre_process failed");
|
// set result to mAiqCore
|
comb->asharp_pre_res = (RkAiqAlgoPreResAsharp*)asharp_pre_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::processing()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoProcAsharpV3Int* asharp_proc_int = (RkAiqAlgoProcAsharpV3Int*)mProcInParam;
|
RkAiqAlgoProcResAsharpV3Int* asharp_proc_res_int = (RkAiqAlgoProcResAsharpV3Int*)mProcOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqProcResComb* comb = &shared->procResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
static int asharp_proc_framecnt = 0;
|
asharp_proc_framecnt++;
|
|
ret = RkAiqAsharpHandle::processing();
|
if (ret) {
|
comb->asharp_proc_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "asharp handle processing failed");
|
}
|
|
comb->asharp_proc_res = NULL;
|
|
// TODO: fill procParam
|
asharp_proc_int->iso = sharedCom->iso;
|
asharp_proc_int->hdr_mode = sharedCom->working_mode;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->processing(mProcInParam, mProcOutParam);
|
RKAIQCORE_CHECK_RET(ret, "asharp algo processing failed");
|
|
comb->asharp_proc_res = (RkAiqAlgoProcResAsharp*)asharp_proc_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAsharpV3HandleInt::postProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPostAsharpV3Int* asharp_post_int = (RkAiqAlgoPostAsharpV3Int*)mPostInParam;
|
RkAiqAlgoPostResAsharpV3Int* asharp_post_res_int = (RkAiqAlgoPostResAsharpV3Int*)mPostOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPostResComb* comb = &shared->postResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqAsharpHandle::postProcess();
|
if (ret) {
|
comb->asharp_post_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "asharp handle postProcess failed");
|
return ret;
|
}
|
|
comb->asharp_post_res = NULL;
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->post_process(mPostInParam, mPostOutParam);
|
RKAIQCORE_CHECK_RET(ret, "asharp algo post_process failed");
|
// set result to mAiqCore
|
comb->asharp_post_res = (RkAiqAlgoPostResAsharp*)asharp_post_res_int ;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
void
|
RkAiqAynrV2HandleInt::init()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
RkAiqAynrHandle::deInit();
|
mConfig = (RkAiqAlgoCom*)(new RkAiqAlgoConfigAynrV2Int());
|
mPreInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPreAynrV2Int());
|
mPreOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPreResAynrV2Int());
|
mProcInParam = (RkAiqAlgoCom*)(new RkAiqAlgoProcAynrV2Int());
|
mProcOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoProcResAynrV2Int());
|
mPostInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPostAynrV2Int());
|
mPostOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPostResAynrV2Int());
|
|
EXIT_ANALYZER_FUNCTION();
|
}
|
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::updateConfig(bool needSync)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
if (needSync)
|
mCfgMutex.lock();
|
// if something changed
|
if (updateAtt) {
|
mCurAtt = mNewAtt;
|
updateAtt = false;
|
// TODO
|
rk_aiq_uapi_aynrV2_SetAttrib(mAlgoCtx, &mCurAtt, false);
|
sendSignal();
|
}
|
|
if(updateIQpara) {
|
mCurIQPara = mNewIQPara;
|
updateIQpara = false;
|
// TODO
|
//rk_aiq_uapi_asharp_SetIQpara_V3(mAlgoCtx, &mCurIQPara, false);
|
sendSignal();
|
}
|
|
if(updateStrength) {
|
mCurStrength = mNewStrength;
|
updateStrength = false;
|
rk_aiq_uapi_aynrV2_SetLumaSFStrength(mAlgoCtx, mCurStrength);
|
sendSignal();
|
}
|
|
if (needSync)
|
mCfgMutex.unlock();
|
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::setAttrib(rk_aiq_ynr_attrib_v2_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurAtt, att, sizeof(rk_aiq_ynr_attrib_v2_t))) {
|
mNewAtt = *att;
|
updateAtt = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::getAttrib(rk_aiq_ynr_attrib_v2_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_aynrV2_GetAttrib(mAlgoCtx, att);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::setIQPara(rk_aiq_ynr_IQPara_V2_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurIQPara, para, sizeof(rk_aiq_ynr_IQPara_V2_t))) {
|
mNewIQPara = *para;
|
updateIQpara = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::getIQPara(rk_aiq_ynr_IQPara_V2_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
// rk_aiq_uapi_asharp_GetIQpara(mAlgoCtx, para);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::setStrength(float fPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
|
mNewStrength = fPercent;
|
updateStrength = true;
|
waitSignal();
|
|
mCfgMutex.unlock();
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::getStrength(float *pPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_aynrV2_GetLumaSFStrength(mAlgoCtx, pPercent);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::prepare()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
ret = RkAiqAynrHandle::prepare();
|
RKAIQCORE_CHECK_RET(ret, "aynr handle prepare failed");
|
|
RkAiqAlgoConfigAynrV2Int* aynr_config_int = (RkAiqAlgoConfigAynrV2Int*)mConfig;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->prepare(mConfig);
|
RKAIQCORE_CHECK_RET(ret, "aynr algo prepare failed");
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::preProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPreAynrV2Int* aynr_pre_int = (RkAiqAlgoPreAynrV2Int*)mPreInParam;
|
RkAiqAlgoPreResAynrV2Int* aynr_pre_res_int = (RkAiqAlgoPreResAynrV2Int*)mPreOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPreResComb* comb = &shared->preResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqAynrHandle::preProcess();
|
if (ret) {
|
comb->aynr_pre_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "aynr handle preProcess failed");
|
}
|
|
comb->aynr_pre_res = NULL;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->pre_process(mPreInParam, mPreOutParam);
|
RKAIQCORE_CHECK_RET(ret, "aynr algo pre_process failed");
|
// set result to mAiqCore
|
comb->aynr_pre_res = (RkAiqAlgoPreResAynr*)aynr_pre_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::processing()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoProcAynrV2Int* aynr_proc_int = (RkAiqAlgoProcAynrV2Int*)mProcInParam;
|
RkAiqAlgoProcResAynrV2Int* aynr_proc_res_int = (RkAiqAlgoProcResAynrV2Int*)mProcOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqProcResComb* comb = &shared->procResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
static int aynr_proc_framecnt = 0;
|
aynr_proc_framecnt++;
|
|
ret = RkAiqAynrHandle::processing();
|
if (ret) {
|
comb->aynr_proc_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "aynr handle processing failed");
|
}
|
|
comb->aynr_proc_res = NULL;
|
|
// TODO: fill procParam
|
aynr_proc_int->iso = sharedCom->iso;
|
aynr_proc_int->hdr_mode = sharedCom->working_mode;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->processing(mProcInParam, mProcOutParam);
|
RKAIQCORE_CHECK_RET(ret, "aynr algo processing failed");
|
|
comb->aynr_proc_res = (RkAiqAlgoProcResAynr*)aynr_proc_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAynrV2HandleInt::postProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPostAynrV2Int* aynr_post_int = (RkAiqAlgoPostAynrV2Int*)mPostInParam;
|
RkAiqAlgoPostResAynrV2Int* aynr_post_res_int = (RkAiqAlgoPostResAynrV2Int*)mPostOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPostResComb* comb = &shared->postResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqAynrHandle::postProcess();
|
if (ret) {
|
comb->aynr_post_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "aynr handle postProcess failed");
|
return ret;
|
}
|
|
comb->aynr_post_res = NULL;
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->post_process(mPostInParam, mPostOutParam);
|
RKAIQCORE_CHECK_RET(ret, "aynr algo post_process failed");
|
// set result to mAiqCore
|
comb->aynr_post_res = (RkAiqAlgoPostResAynr*)aynr_post_res_int ;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
void
|
RkAiqAcnrV1HandleInt::init()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
RkAiqAcnrHandle::deInit();
|
mConfig = (RkAiqAlgoCom*)(new RkAiqAlgoConfigAcnrV1Int());
|
mPreInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPreAcnrV1Int());
|
mPreOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPreResAcnrV1Int());
|
mProcInParam = (RkAiqAlgoCom*)(new RkAiqAlgoProcAcnrV1Int());
|
mProcOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoProcResAcnrV1Int());
|
mPostInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPostAcnrV1Int());
|
mPostOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPostResAcnrV1Int());
|
|
EXIT_ANALYZER_FUNCTION();
|
}
|
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::updateConfig(bool needSync)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
if (needSync)
|
mCfgMutex.lock();
|
// if something changed
|
if (updateAtt) {
|
mCurAtt = mNewAtt;
|
updateAtt = false;
|
// TODO
|
rk_aiq_uapi_acnrV1_SetAttrib(mAlgoCtx, &mCurAtt, false);
|
sendSignal();
|
}
|
|
if(updateIQpara) {
|
mCurIQPara = mNewIQPara;
|
updateIQpara = false;
|
// TODO
|
//rk_aiq_uapi_asharp_SetIQpara_V3(mAlgoCtx, &mCurIQPara, false);
|
sendSignal();
|
}
|
|
if(updateStrength) {
|
mCurStrength = mNewStrength;
|
updateStrength = false;
|
rk_aiq_uapi_acnrV1_SetChromaSFStrength(mAlgoCtx, mCurStrength);
|
sendSignal();
|
}
|
|
if (needSync)
|
mCfgMutex.unlock();
|
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::setAttrib(rk_aiq_cnr_attrib_v1_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurAtt, att, sizeof(rk_aiq_cnr_attrib_v1_t))) {
|
mNewAtt = *att;
|
updateAtt = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::getAttrib(rk_aiq_cnr_attrib_v1_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_acnrV1_GetAttrib(mAlgoCtx, att);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::setIQPara(rk_aiq_cnr_IQPara_V1_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurIQPara, para, sizeof(rk_aiq_cnr_IQPara_V1_t))) {
|
mNewIQPara = *para;
|
updateIQpara = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::getIQPara(rk_aiq_cnr_IQPara_V1_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
// rk_aiq_uapi_asharp_GetIQpara(mAlgoCtx, para);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::setStrength(float fPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
|
|
mNewStrength = fPercent;
|
updateStrength = true;
|
waitSignal();
|
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
|
return ret;
|
|
}
|
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::getStrength(float *pPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_acnrV1_GetChromaSFStrength(mAlgoCtx, pPercent);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::prepare()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
ret = RkAiqAcnrHandle::prepare();
|
RKAIQCORE_CHECK_RET(ret, "acnr handle prepare failed");
|
|
RkAiqAlgoConfigAcnrV1Int* acnr_config_int = (RkAiqAlgoConfigAcnrV1Int*)mConfig;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->prepare(mConfig);
|
RKAIQCORE_CHECK_RET(ret, "acnr algo prepare failed");
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::preProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPreAcnrV1Int* acnr_pre_int = (RkAiqAlgoPreAcnrV1Int*)mPreInParam;
|
RkAiqAlgoPreResAcnrV1Int* acnr_pre_res_int = (RkAiqAlgoPreResAcnrV1Int*)mPreOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPreResComb* comb = &shared->preResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqAcnrHandle::preProcess();
|
if (ret) {
|
comb->acnr_pre_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "acnr handle preProcess failed");
|
}
|
|
comb->acnr_pre_res = NULL;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->pre_process(mPreInParam, mPreOutParam);
|
RKAIQCORE_CHECK_RET(ret, "acnr algo pre_process failed");
|
// set result to mAiqCore
|
comb->acnr_pre_res = (RkAiqAlgoPreResAcnr*)acnr_pre_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::processing()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoProcAcnrV1Int* acnr_proc_int = (RkAiqAlgoProcAcnrV1Int*)mProcInParam;
|
RkAiqAlgoProcResAcnrV1Int* acnr_proc_res_int = (RkAiqAlgoProcResAcnrV1Int*)mProcOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqProcResComb* comb = &shared->procResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
static int acnr_proc_framecnt = 0;
|
acnr_proc_framecnt++;
|
|
ret = RkAiqAcnrHandle::processing();
|
if (ret) {
|
comb->acnr_proc_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "acnr handle processing failed");
|
}
|
|
comb->acnr_proc_res = NULL;
|
|
// TODO: fill procParam
|
acnr_proc_int->iso = sharedCom->iso;
|
acnr_proc_int->hdr_mode = sharedCom->working_mode;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->processing(mProcInParam, mProcOutParam);
|
RKAIQCORE_CHECK_RET(ret, "aynr algo processing failed");
|
|
comb->acnr_proc_res = (RkAiqAlgoProcResAcnr*)acnr_proc_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAcnrV1HandleInt::postProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPostAcnrV1Int* acnr_post_int = (RkAiqAlgoPostAcnrV1Int*)mPostInParam;
|
RkAiqAlgoPostResAcnrV1Int* acnr_post_res_int = (RkAiqAlgoPostResAcnrV1Int*)mPostOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPostResComb* comb = &shared->postResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqAcnrHandle::postProcess();
|
if (ret) {
|
comb->aynr_post_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "acnr handle postProcess failed");
|
return ret;
|
}
|
|
comb->acnr_post_res = NULL;
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->post_process(mPostInParam, mPostOutParam);
|
RKAIQCORE_CHECK_RET(ret, "acnr algo post_process failed");
|
// set result to mAiqCore
|
comb->acnr_post_res = (RkAiqAlgoPostResAcnr*)acnr_post_res_int ;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
void
|
RkAiqArawnrV2HandleInt::init()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
RkAiqArawnrHandle::deInit();
|
mConfig = (RkAiqAlgoCom*)(new RkAiqAlgoConfigArawnrV2Int());
|
mPreInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPreArawnrV2Int());
|
mPreOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPreResArawnrV2Int());
|
mProcInParam = (RkAiqAlgoCom*)(new RkAiqAlgoProcArawnrV2Int());
|
mProcOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoProcResArawnrV2Int());
|
mPostInParam = (RkAiqAlgoCom*)(new RkAiqAlgoPostArawnrV2Int());
|
mPostOutParam = (RkAiqAlgoResCom*)(new RkAiqAlgoPostResArawnrV2Int());
|
|
EXIT_ANALYZER_FUNCTION();
|
}
|
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::updateConfig(bool needSync)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
if (needSync)
|
mCfgMutex.lock();
|
// if something changed
|
if (updateAtt) {
|
mCurAtt = mNewAtt;
|
updateAtt = false;
|
// TODO
|
rk_aiq_uapi_arawnrV2_SetAttrib(mAlgoCtx, &mCurAtt, false);
|
sendSignal();
|
}
|
|
if(updateIQpara) {
|
mCurIQPara = mNewIQPara;
|
updateIQpara = false;
|
// TODO
|
//rk_aiq_uapi_asharp_SetIQpara_V3(mAlgoCtx, &mCurIQPara, false);
|
sendSignal();
|
}
|
|
if(update2DStrength) {
|
mCur2DStrength = mNew2DStrength;
|
update2DStrength = false;
|
rk_aiq_uapi_rawnrV2_SetSFStrength(mAlgoCtx, mCur2DStrength);
|
sendSignal();
|
}
|
|
if(update3DStrength) {
|
mCur3DStrength = mNew3DStrength;
|
update3DStrength = false;
|
rk_aiq_uapi_rawnrV2_SetTFStrength(mAlgoCtx, mCur3DStrength);
|
sendSignal();
|
}
|
|
if (needSync)
|
mCfgMutex.unlock();
|
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::setAttrib(rk_aiq_bayernr_attrib_v2_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurAtt, att, sizeof(rk_aiq_bayernr_attrib_v2_t))) {
|
mNewAtt = *att;
|
updateAtt = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::getAttrib(rk_aiq_bayernr_attrib_v2_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_arawnrV2_GetAttrib(mAlgoCtx, att);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::setIQPara(rk_aiq_bayernr_IQPara_V2_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurIQPara, para, sizeof(rk_aiq_bayernr_IQPara_V2_t))) {
|
mNewIQPara = *para;
|
updateIQpara = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::getIQPara(rk_aiq_bayernr_IQPara_V2_t *para)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
// rk_aiq_uapi_asharp_GetIQpara(mAlgoCtx, para);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::setSFStrength(float fPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
|
|
mNew2DStrength = fPercent;
|
update2DStrength = true;
|
waitSignal();
|
|
|
mCfgMutex.unlock();
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::getSFStrength(float *pPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_rawnrV2_GetSFStrength(mAlgoCtx, pPercent);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::setTFStrength(float fPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
|
|
mNew3DStrength = fPercent;
|
update3DStrength = true;
|
waitSignal();
|
|
|
mCfgMutex.unlock();
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::getTFStrength(float *pPercent)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapi_rawnrV2_GetTFStrength(mAlgoCtx, pPercent);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::prepare()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
ret = RkAiqArawnrHandle::prepare();
|
RKAIQCORE_CHECK_RET(ret, "arawnr handle prepare failed");
|
|
RkAiqAlgoConfigArawnrV2Int* aynr_config_int = (RkAiqAlgoConfigArawnrV2Int*)mConfig;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->prepare(mConfig);
|
RKAIQCORE_CHECK_RET(ret, "arawnr algo prepare failed");
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::preProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPreArawnrV2Int* arawnr_pre_int = (RkAiqAlgoPreArawnrV2Int*)mPreInParam;
|
RkAiqAlgoPreResArawnrV2Int* arawnr_pre_res_int = (RkAiqAlgoPreResArawnrV2Int*)mPreOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPreResComb* comb = &shared->preResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqArawnrHandle::preProcess();
|
if (ret) {
|
comb->arawnr_pre_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "arawnr handle preProcess failed");
|
}
|
|
comb->arawnr_pre_res = NULL;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->pre_process(mPreInParam, mPreOutParam);
|
RKAIQCORE_CHECK_RET(ret, "arawnr algo pre_process failed");
|
// set result to mAiqCore
|
comb->arawnr_pre_res = (RkAiqAlgoPreResArawnr*)arawnr_pre_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return XCAM_RETURN_NO_ERROR;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::processing()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoProcArawnrV2Int* arawnr_proc_int = (RkAiqAlgoProcArawnrV2Int*)mProcInParam;
|
RkAiqAlgoProcResArawnrV2Int* arawnr_proc_res_int = (RkAiqAlgoProcResArawnrV2Int*)mProcOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqProcResComb* comb = &shared->procResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
static int arawnr_proc_framecnt = 0;
|
arawnr_proc_framecnt++;
|
|
ret = RkAiqArawnrHandle::processing();
|
if (ret) {
|
comb->arawnr_proc_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "aynr handle processing failed");
|
}
|
|
comb->arawnr_proc_res = NULL;
|
|
// TODO: fill procParam
|
arawnr_proc_int->iso = sharedCom->iso;
|
arawnr_proc_int->hdr_mode = sharedCom->working_mode;
|
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->processing(mProcInParam, mProcOutParam);
|
RKAIQCORE_CHECK_RET(ret, "aynr algo processing failed");
|
|
comb->arawnr_proc_res = (RkAiqAlgoProcResArawnr*)arawnr_proc_res_int;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqArawnrV2HandleInt::postProcess()
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
RkAiqAlgoPostArawnrV2Int* arawnr_post_int = (RkAiqAlgoPostArawnrV2Int*)mPostInParam;
|
RkAiqAlgoPostResArawnrV2Int* arawnr_post_res_int = (RkAiqAlgoPostResArawnrV2Int*)mPostOutParam;
|
RkAiqCore::RkAiqAlgosGroupShared_t* shared =
|
(RkAiqCore::RkAiqAlgosGroupShared_t*)(getGroupShared());
|
RkAiqPostResComb* comb = &shared->postResComb;
|
RkAiqCore::RkAiqAlgosComShared_t* sharedCom = &mAiqCore->mAlogsComSharedParams;
|
RkAiqIspStats* ispStats = shared->ispStats;
|
|
ret = RkAiqArawnrHandle::postProcess();
|
if (ret) {
|
comb->aynr_post_res = NULL;
|
RKAIQCORE_CHECK_RET(ret, "arawnr handle postProcess failed");
|
return ret;
|
}
|
|
comb->aynr_post_res = NULL;
|
RkAiqAlgoDescription* des = (RkAiqAlgoDescription*)mDes;
|
ret = des->post_process(mPostInParam, mPostOutParam);
|
RKAIQCORE_CHECK_RET(ret, "arawnr algo post_process failed");
|
// set result to mAiqCore
|
comb->arawnr_post_res = (RkAiqAlgoPostResArawnr*)arawnr_post_res_int ;
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAwbV21HandleInt::updateConfig(bool needSync)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
if (needSync)
|
mCfgMutex.lock();
|
// if something changed
|
if (updateAtt) {
|
mCurAtt = mNewAtt;
|
updateAtt = false;
|
rk_aiq_uapi_awb_SetAttrib(mAlgoCtx, mCurAtt, false);
|
sendSignal();
|
}
|
if (updateWbV21Attr) {
|
mCurWbV21Attr = mNewWbV21Attr;
|
updateWbV21Attr = false;
|
rk_aiq_uapiV2_awbV21_SetAttrib(mAlgoCtx, mCurWbV21Attr, false);
|
sendSignal();
|
}
|
if (updateWbOpModeAttr) {
|
mCurWbOpModeAttr = mNewWbOpModeAttr;
|
updateWbOpModeAttr = false;
|
rk_aiq_uapiV2_awb_SetMwbMode(mAlgoCtx, mCurWbOpModeAttr, false);
|
sendSignal();
|
}
|
if (updateWbMwbAttr) {
|
mCurWbMwbAttr = mNewWbMwbAttr;
|
updateWbMwbAttr = false;
|
rk_aiq_uapiV2_awb_SetMwbAttrib(mAlgoCtx, mCurWbMwbAttr, false);
|
sendSignal();
|
}
|
if (updateWbAwbAttr) {
|
mCurWbAwbAttr = mNewWbAwbAttr;
|
updateWbAwbAttr = false;
|
rk_aiq_uapiV2_awbV20_SetAwbAttrib(mAlgoCtx, mCurWbAwbAttr, false);
|
sendSignal();
|
}
|
if (updateWbAwbWbGainAdjustAttr) {
|
mCurWbAwbWbGainAdjustAttr = mNewWbAwbWbGainAdjustAttr;
|
updateWbAwbWbGainAdjustAttr = false;
|
rk_aiq_uapiV2_awb_SetAwbGainAdjust(mAlgoCtx, mCurWbAwbWbGainAdjustAttr, false);
|
sendSignal();
|
}
|
if (updateWbAwbWbGainOffsetAttr) {
|
mCurWbAwbWbGainOffsetAttr = mNewWbAwbWbGainOffsetAttr;
|
updateWbAwbWbGainOffsetAttr = false;
|
rk_aiq_uapiV2_awb_SetAwbGainOffset(mAlgoCtx, mCurWbAwbWbGainOffsetAttr, false);
|
sendSignal();
|
}
|
if (updateWbAwbMultiWindowAttr) {
|
mCurWbAwbMultiWindowAttr = mNewWbAwbMultiWindowAttr;
|
updateWbAwbMultiWindowAttr = false;
|
rk_aiq_uapiV2_awb_SetAwbMultiwindow(mAlgoCtx, mCurWbAwbMultiWindowAttr, false);
|
sendSignal();
|
}
|
if (needSync)
|
mCfgMutex.unlock();
|
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAwbV21HandleInt::setWbV21Attrib(rk_aiq_uapiV2_wbV21_attrib_t att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
mCfgMutex.lock();
|
//TODO
|
// check if there is different between att & mCurAtt
|
// if something changed, set att to mNewAtt, and
|
// the new params will be effective later when updateConfig
|
// called by RkAiqCore
|
|
// if something changed
|
if (0 != memcmp(&mCurWbV21Attr, &att, sizeof(rk_aiq_uapiV2_wbV21_attrib_t))) {
|
mNewWbV21Attr = att;
|
updateWbV21Attr = true;
|
waitSignal();
|
}
|
|
mCfgMutex.unlock();
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
XCamReturn
|
RkAiqAwbV21HandleInt::getWbV21Attrib(rk_aiq_uapiV2_wbV21_attrib_t *att)
|
{
|
ENTER_ANALYZER_FUNCTION();
|
|
XCamReturn ret = XCAM_RETURN_NO_ERROR;
|
|
rk_aiq_uapiV2_awbV21_GetAttrib(mAlgoCtx, att);
|
|
EXIT_ANALYZER_FUNCTION();
|
return ret;
|
}
|
|
|
}; //namespace RkCam
|