/*
|
* Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
|
*
|
* 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 "rk_aiq_user_api_agamma.h"
|
|
#include "algo_handlers/RkAiqAgammaHandle.h"
|
#include "uAPI2/rk_aiq_user_api2_agamma.h"
|
|
RKAIQ_BEGIN_DECLARE
|
|
|
#ifdef RK_SIMULATOR_HW
|
#define CHECK_USER_API_ENABLE
|
#endif
|
|
void
|
GammaTransferSetData(rk_aiq_gamma_attrib_V2_t* DegammaV2, rk_aiq_gamma_attrib_t *DegammaV1)
|
{
|
/*
|
//op mode
|
DegammaV2->mode = DegammaV1->mode;
|
|
//st manual
|
memcpy(&DegammaV2->stManual, &DegammaV1->stManual, sizeof(Adegamma_api_manual_t));
|
|
//set tool
|
|
DegammaV2->stTool.GammaTuningPara.Gamma_en = DegammaV1->stTool.gamma_en ? true : false;
|
DegammaV2->stTool.GammaTuningPara.Gamma_out_offset = DegammaV1->stTool.gamma_out_offset;
|
if(DegammaV1->stTool.gamma_out_segnum == 0)
|
DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum = GAMMATYPE_LOG;
|
else
|
DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum = GAMMATYPE_EQU;
|
int mode = DegammaV1->Scene_mode;
|
if(mode == 0)
|
for(int i = 0; i < 45; i++)
|
DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_normal[i] + 0.5);
|
else if(mode == 1)
|
for(int i = 0; i < 45; i++)
|
DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_hdr[i] + 0.5);
|
else if(mode == 3)
|
for(int i = 0; i < 45; i++)
|
DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_night[i] + 0.5);
|
else
|
for(int i = 0; i < 45; i++)
|
DegammaV2->stTool.GammaTuningPara.Gamma_curve[i] = (int)(DegammaV1->stTool.curve_normal[i] + 0.5);
|
*/
|
}
|
|
void
|
GammaTransferGetData(rk_aiq_gamma_attrib_V2_t* DegammaV2, rk_aiq_gamma_attrib_t *DegammaV1)
|
{
|
/*
|
//op mode
|
DegammaV1->mode = DegammaV2->mode;
|
|
//st manual
|
memcpy(&DegammaV1->stManual, &DegammaV2->stManual, sizeof(Adegamma_api_manual_t));
|
|
//mode
|
DegammaV1->Scene_mode = 0;
|
|
//set tool
|
DegammaV1->stTool.gamma_en = DegammaV2->stTool.GammaTuningPara.Gamma_en ? 1 : 0;
|
DegammaV1->stTool.gamma_out_offset = DegammaV2->stTool.GammaTuningPara.Gamma_out_offset;
|
if(DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum == GAMMATYPE_LOG)
|
DegammaV1->stTool.gamma_out_segnum = 0;
|
else if(DegammaV2->stTool.GammaTuningPara.Gamma_out_segnum == GAMMATYPE_EQU)
|
DegammaV1->stTool.gamma_out_segnum = 1;
|
for(int i = 0; i < 45; i++) {
|
DegammaV1->stTool.curve_normal[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
|
DegammaV1->stTool.curve_hdr[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
|
DegammaV1->stTool.curve_night[i] = (float)(DegammaV2->stTool.GammaTuningPara.Gamma_curve[i]);
|
}
|
*/
|
}
|
|
XCamReturn
|
rk_aiq_user_api_agamma_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_gamma_attrib_t attr)
|
{
|
rk_aiq_gamma_attrib_V2_t gammaAttr;
|
memset(&gammaAttr, 0, sizeof(rk_aiq_gamma_attrib_V2_t));
|
|
GammaTransferSetData(&gammaAttr, &attr);
|
|
XCamReturn ret_gamma = rk_aiq_user_api2_agamma_SetAttrib(sys_ctx, gammaAttr);
|
|
return ret_gamma;
|
}
|
|
XCamReturn
|
rk_aiq_user_api_agamma_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_gamma_attrib_t *attr)
|
{
|
rk_aiq_gamma_attrib_V2_t gammaAttr;
|
memset(&gammaAttr, 0, sizeof(rk_aiq_gamma_attrib_V2_t));
|
|
GammaTransferGetData(&gammaAttr, attr);
|
|
XCamReturn ret_gamma = rk_aiq_user_api2_agamma_GetAttrib(sys_ctx, &gammaAttr);
|
|
return ret_gamma;
|
}
|
|
RKAIQ_END_DECLARE
|